Mount

noexec 掛載選項是否暗示 nosuid?

  • June 12, 2017

Internet 上的許多指南都建議設置 nosuidnoexec 選項,例如在 /tmp 掛載點上。但是 noexec 不是暗示 nosuid 嗎?不能執行的東西不能使用 suid 位,對吧?

感謝 LJKims 的連結,它可以幫助我回答我自己的問題。我忘記了也可以為目錄設置 suid/sgid 位。

根據GNU coreutils 文件,在 suid-directory 中創建的文件和目錄繼承目錄的所有者(sgid-directories 顯然繼承了組)。因此,如果您想避免這種行為,在掛載點上同時設置 noexec 和 nosuid 是有意義的

為了完整性:在我對目前 Debian 的測試中,目錄上的 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

引用自:https://unix.stackexchange.com/questions/369996