noexec 마운트 옵션이 nosuid를 의미합니까?

noexec 마운트 옵션이 nosuid를 의미합니까?

인터넷의 많은 가이드에서는 nosuid 설정을 권장합니다.그리고예를 들어 /tmp 마운트 지점에 noexec 옵션이 있습니다. 하지만 noexec는 nosuid를 의미하지 않나요? 실행할 수 없는 작업에는 suid 비트를 사용할 수 없습니다. 그렇죠?

답변1

링크를 제공해 주신 LJKims에게 감사드립니다. 제 질문에 답변하는 데 도움이 되었습니다. 디렉토리에 대해 suid/sgid 비트를 설정할 수도 있다는 사실을 잊어버렸습니다.

~에 따르면GNU coreutils 문서suid 디렉토리에 생성된 파일과 디렉토리는 해당 디렉토리의 소유자를 상속합니다(sgid 디렉토리는 분명히 그룹을 상속합니다). 따라서 이러한 동작을 방지하려면마운트 지점에 noexec 및 nosuid를 설정하는 것이 합리적입니다..

완벽을 기하기 위해: 현재 데비안에 대한 테스트에서 디렉토리의 suid 비트는 작동하지 않지만 sgid 비트만이 파일/디렉토리가 디렉토리 그룹을 상속하게 만듭니다.

# mkdir /test
# chmod 6777 /test
# ls -ld /test
drwsrwsrwx 2 root root 4096 Jun 10 18:50 /test
$ mkdir /test/foo; touch /test/bar
$ ls -l /test
-rw-r--r-- 1 user root    0 Jun 10 18:51 bar
drwxr-sr-x 2 user root 4096 Jun 10 18:51 foo

편집하다: 완전성을 기하기 위해 nosuid 마운트 옵션은 sgid 디렉터리에 영향을 주지 않습니다(적어도 Debian 8에서는).

# mount -o loop,nosuid test.img /test
# mkdir /test/foo
# chmod 2777 /test/foo
$ touch /test/foo/bar; mkdir /test/foo/baz
$ ls -l /test/foo
-rw-r--r-- 1 user root    0 Jun 12 09:46 bar
drwxr-sr-x 2 user root 4096 Jun 12 09:46 baz

관련 정보