Fstab exec noexec 매개변수가 Samba 공유에 미치는 영향

Fstab exec noexec 매개변수가 Samba 공유에 미치는 영향

여러 개의 데이터 드라이브를 설치하고 noexec매개변수를 사용했습니다. 이것은 나에게 필요하지 않은 데이터이기 때문에 생각했습니다 exec. 이제 몇 가지 권한 문제가 발생했으며 이 원인을 배제하고 옵션을 더 잘 이해하고 싶습니다.

exec/etc/fstab매개변수는 마운트된 시스템의 모든 디렉토리와 파일에 실행 권한을 부여하는 것과 동일한 효과를 가집 니까 ?

.exeSamba 공유 또는 기타 네트워크 프로토콜을 통해 액세스되는 Windows 실행 파일( )에 어떤 영향을 줍니까 ?

마운트된 드라이브는 aufs또는 와 병합되고 mhddfs의 중앙 마운트 지점을 통해 액세스됩니다 /mnt/virtual. 그런 다음 네트워크(현재는 삼바)를 통해 액세스됩니다. 일부 로컬 액세스도 있을 것입니다( xbmc). 파일에 대한 직접 링크를 제공해야 할지 아니면 삼바 링크를 제공해야 할지 잘 모르겠습니다.

이 상황에서 가장 좋은 방법은 무엇입니까?

답변1

매뉴얼 페이지 찾아보기

매뉴얼 페이지를 보면 mount.cifs여기에 나열된 공유를 설치하는 데 사용된다는 /etc/fstab메모가 있습니다 noexec.

발췌 - mount.cifs 매뉴얼 페이지

이 명령은 setuid가 설치되지 않은 경우 루트에서만 사용할 수 있습니다. 이 경우 noeexec 및 nosuid 설치 플래그가 활성화됩니다. setuid 프로그램으로 설치된 경우 프로그램은 사용자 마운트를 위해 마운트 프로그램에서 지정한 규칙을 따르며, 사용자가 마운트하기 전에 마운트 지점에 chdir()을 수행할 수 있어야 한다는 추가 제한 사항이 있습니다. .

일부 Samba 클라이언트 도구(예: smbclient(8))는 smb.conf에 있는 클라이언트 구성 매개변수를 따릅니다. 이러한 클라이언트 도구와 달리 mount.cifs는 smb.conf를 완전히 무시합니다.

이를 감안할 때 설치 시도에 exec/noexec 옵션이 포함되어 있으면 실행할 수 있을 것으로 예상됩니다. 또한 mount.cifs이 옵션을 사용하는 방법을 알아보려면 사용법을 참조하세요.

발췌 - mount.cifs 사용법
Less commonly used options:
    credentials=<filename>,guest,perm,noperm,setuids,nosetuids,rw,ro,
    sep=<char>,iocharset=<codepage>,suid,nosuid,exec,noexec,serverino,
    mapchars,nomapchars,nolock,servernetbiosname=<SRV_RFC1001NAME>
    directio,nounix,cifsacl,sec=<authentication mechanism>,sign,fsc

fstab매뉴얼 페이지를 보면 exec/noexec의 의도된 용도가 설명되어 있지만 모든 실행 파일에 적용되는지 아니면 Unix 실행 파일에만 적용되는지는 지정하지 않습니다.

fstab 매뉴얼 페이지에서

실행/실행하지 않음

exec를 사용하면 해당 파티션에서 바이너리를 실행할 수 있지만 noexec는 그렇지 않습니다. noexec는 바이너리(예: /var)가 포함되지 않은 파티션, 또는 시스템에서 실행하고 싶지 않거나 시스템에서 실행할 수도 없는 바이너리(예: Windows 파티션)에 유용할 수 있습니다.

exec/noexec는 모든 것을 실행 가능하게 합니까?

아니요, exec/noexec 속성은 권한 비트에 따라 실행 가능으로 표시되도록 허용되는 항목을 제어할 뿐이며 권한에 직접 영향을 주지는 않습니다.

Windows용 바이너리는 어떻습니까?

그러나 exec/noexec 설정은 Windows 실행 파일을 제어하지 않으며 이러한 공유에 상주할 수 있는 Unix 실행 파일만 제어합니다.

/etc/fstab또한 CIFS/Samba 공유를 마운트하는 경우, 그리고 이 상황에서 Windows OS가 혼합되는 경우 이러한 작업이 어떻게 수행될지 조차 확신할 수 없습니다 . Windows는 Linux를 통하지 않고 이 공유를 직접 마운트하거나 마운트할 수 있습니다.

시험을 받다

유닉스의 예

mount.cifs이와 같이 명령줄에서 직접 테스트할 수 있습니다. CIFS/Samba 공유에 다음과 같은 파일이 있다고 가정합니다.

$ cat cmd.bash 
#!/bin/bash

echo "hi"

$ chmod +x cmd.bash

이제 다음과 같이 설치하고 스크립트를 실행해 보겠습니다 cmd.bash.

$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser,noexec

$ cd /path/to/cifsmnt
$ ./cmd.bash
bash: ./cmd.bash: Permission denied

이 옵션을 생략하면 noexec:

$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser

$ cd /path/to/cifsmnt
$ ./cmd.bash
hi
Windows에서

여기서 생각할 수 있는 유일한 시나리오는 Virtualbox와 같은 것을 사용하고 있고 Windows VM이 사용할 수 있는 디렉터리 내에 CIFS/Samba 공유가 마운트되어 있는 경우입니다.

.exe이것을 테스트했을 때 이 설치 설정으로 파일을 성공적으로 실행할 수 있었습니다 .

노트:Virtualbox의 공유 메커니즘을 사용하여 \\vboxsrv시스템의 로컬 홈 디렉터리를 마운트합니다 /home/saml. 그런 다음 이 명령을 실행하여 CIFS/Samba 공유를 /home/saml.

$ mkdir /home/saml/cifsmnt
$ mount //server/cifsshare cifsmount -o user=joeuser,noexec

결론적으로

위의 작업을 수행하면 exec/noexec가 Windows의 파일 액세스를 제한하지 않음을 나타내는 것 같습니다.

관련 정보