私はchmodとその内容について読んでいます。オクタルモード。私はそれが1
単なる処刑であることを知っています。実行専用権限の有効なユースケースは何ですか?ファイルを実行するには通常、読み取りおよび実行権限が必要です。
$ echo 'echo foo' > say_foo
$ chmod 100 ./say_foo
$ ./say_foo
bash: ./say_foo: Permission denied
$ chmod 500 ./say_foo
$ ./say_foo
foo
答え1
シェルスクリプト実行するには読み取り権限が必要ですが、バイナリファイル望ましくないもの:
$ cat hello.cpp
#include<iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
$ g++ -o hello hello.cpp
$ chmod 100 hello
$ ./hello
Hello, world!
$ file hello
hello: executable, regular file, no read permission
ファイルの内容の表示と実行は異なります。シェルスクリプトの場合、これは単純化を許すと新しいシェル(または現在のシェル)に「読み込まれて」実行されるためです。だから読むことができるはずです。バイナリはこのメカニズムを使用しません。
実行権限はディレクトリによって若干異なります。これは、ファイルに対して特定のタスクを実行できることを意味します。以内にディレクトリ(読み取りや実行など)/tools
人々が理解できる場合にのみ使用できるツールセットがあるとします。chmod 711 /tools
。これにより、実行可能なエントリが/tools
明示的に実行される可能性がありますが(たとえば/tools/mytool
)ls /tools/
拒否されます。同様に、/private-docs
ファイル名がわかっている場合にのみ読み取り可能な文書を保存できます。
答え2
Gentooでは、setuid(呼び出し元ではなく所有者の権限で実行するように設定されている)実行可能ファイルは読み取りアクセスを拒否されます(モード4711)。これは、特権の昇格を支援するために悪用されるバグの保護層を追加することです。
権限のない攻撃者がsetuidファイルを読み取ることができ、許可することを知っている場合libc スタイル攻撃を返します。、ファイルの内容を使用して、プログラムが呼び出されたときに便利な機能やライブラリをメモリ内のどこに配置できるかを予測できます。
最新のシステムには、より効果的な追加の保護機能が含まれます。ASLRただし、32ビットプラットフォームの制限により、悪用が容易になる可能性があります。
答え3
「実行のみ」の値はファイルにあまり役に立たないようですが、人々がディレクトリの内容を読み取らないようにするために使用できます。
$ mkdir foo
$ touch foo/bar
$ ls foo/
bar
$ chmod 100 foo
$ ls foo/
ls: cannot open directory foo/: Permission denied
答え4
スクリプトを実行するには読み取りおよび実行権限が必要です。スクリプトを実行するにはスクリプトの内容を読む必要があるため、これを実行できる必要がありますread and execute
。それ以外の場合は、スクリプトがないとスクリプトを実行できません。
実行専用権限の有効なユースケースは何ですか?
安全。一部の人は自分のファイルを保護し、他の人がそのファイルを実行または使用するのを防ぐことを望むかもしれません。