web-dev-qa-db-ja.com

UnixがFATファイルシステムの実行可能フラグを設定するのはなぜですか?

LinuxにFATファイルシステムをマウントすると、すべてのファイルに実行可能アクセス許可が設定されていることに気付きました。どうしてこれなの? FATファイルシステムで見つかったプログラムを直接実行できる、または直接実行したいという可能性はほとんどありません。すべてのファイルに実行可能ビットを暗黙的に設定するのは面倒です。

FAT(および他のファイルシステムも)にモードビットがないことを理解しているので、ファイルに表示されている777モードは、Unixのファイルシステムドライバーによってシミュレートされているだけです。私の質問は、なぜ666ではなく777なのかということです。

4
Edward Falk

FATはPOSIXスタイルのファイルシステムではない可能性があります。つまり、FATに実行可能ファイルを保存して、そこから直接実行することを許可してはならないという意味ではありません。 FATはPOSIXパーミッションを保存しないため、これが(簡単に)発生する唯一の方法は、ファイルに使用されるデフォルトモードで実行が許可されている場合です...

以前は、(V)FATが他のオペレーティングシステム(DOSおよびWindows)のメインファイルシステムとして使用されていて、ハードドライブが小さかったとき、Unix/LinuxバイナリをFATファイルシステムに保存することは珍しくありませんでした。 (POSIX属性を特別なファイルに格納するFATバリアントもあるので、FATファイルシステムでLinuxを実行できます。)今日でも、たとえばUSBキーで実行することができます。

セキュリティへの影響が心配な場合は、使用できるオプションがいくつかあります。 noexecnodevは、おそらくディストリビューションのリムーバブルファイルシステムにすでに設定されています。 dmaskおよびfmaskを使用すると、使用するモードを具体的に決定できます。 showexecは、.bat.comまたは.exe拡張。 (ファイルのアクセス許可とそれを実行する機能は別々であることに注意してください...)

9
Stephen Kitt