noexecマウントオプションはnosuidを意味しますか?

noexecマウントオプションはnosuidを意味しますか?

インターネットの多くのガイドでは、nosuidの設定をお勧めします。そしてたとえば、/ tmpマウントポイントにnoexecオプションがあります。しかし、noexecはnosuidを意味しませんか?実行できないジョブではsuidビットを使用できません。そうですか?

答え1

リンクを提供してくれたLJKimsに感謝します。私の質問に答えるのに役立ちました。私はディレクトリにsuid / sgidビットを設定することができるという事実を忘れました。

~によるとGNU coreutils ドキュメントsuidディレクトリに作成されたファイルとディレクトリはそのディレクトリの所有者を継承します(sgidディレクトリは明らかにグループを継承します)。したがって、これらの動作を防ぐためにマウントポイントに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

関連情報