여러 개의 데이터 드라이브를 설치하고 noexec
매개변수를 사용했습니다. 이것은 나에게 필요하지 않은 데이터이기 때문에 생각했습니다 exec
. 이제 몇 가지 권한 문제가 발생했으며 이 원인을 배제하고 옵션을 더 잘 이해하고 싶습니다.
exec
/etc/fstab
매개변수는 마운트된 시스템의 모든 디렉토리와 파일에 실행 권한을 부여하는 것과 동일한 효과를 가집 니까 ?
.exe
Samba 공유 또는 기타 네트워크 프로토콜을 통해 액세스되는 Windows 실행 파일( )에 어떤 영향을 줍니까 ?
마운트된 드라이브는 aufs
또는 와 병합되고 mhddfs
의 중앙 마운트 지점을 통해 액세스됩니다 /mnt/virtual
. 그런 다음 네트워크(현재는 삼바)를 통해 액세스됩니다. 일부 로컬 액세스도 있을 것입니다( xbmc
). 파일에 대한 직접 링크를 제공해야 할지 아니면 삼바 링크를 제공해야 할지 잘 모르겠습니다.
이 상황에서 가장 좋은 방법은 무엇입니까?
답변1
매뉴얼 페이지 찾아보기
매뉴얼 페이지를 보면 mount.cifs
여기에 나열된 공유를 설치하는 데 사용된다는 /etc/fstab
메모가 있습니다 noexec
.
이 명령은 setuid가 설치되지 않은 경우 루트에서만 사용할 수 있습니다. 이 경우 noeexec 및 nosuid 설치 플래그가 활성화됩니다. setuid 프로그램으로 설치된 경우 프로그램은 사용자 마운트를 위해 마운트 프로그램에서 지정한 규칙을 따르며, 사용자가 마운트하기 전에 마운트 지점에 chdir()을 수행할 수 있어야 한다는 추가 제한 사항이 있습니다. .
일부 Samba 클라이언트 도구(예: smbclient(8))는 smb.conf에 있는 클라이언트 구성 매개변수를 따릅니다. 이러한 클라이언트 도구와 달리 mount.cifs는 smb.conf를 완전히 무시합니다.
이를 감안할 때 설치 시도에 exec/noexec 옵션이 포함되어 있으면 실행할 수 있을 것으로 예상됩니다. 또한 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 실행 파일에만 적용되는지는 지정하지 않습니다.
실행/실행하지 않음
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의 파일 액세스를 제한하지 않음을 나타내는 것 같습니다.