私はchmodとその8進モードについて読んでいました。その1
を見ました 実行のみです。実行のみの権限の有効なユースケースは何ですか?ファイルを実行するには、通常、読み取りと実行のアクセス許可が必要です。
$ echo 'echo foo' > say_foo
$ chmod 100 ./say_foo
$ ./say_foo
bash: ./say_foo: Permission denied
$ chmod 500 ./say_foo
$ ./say_foo
foo
承認された回答:
シェルスクリプト 実行するには読み取り権限が必要ですが、バイナリファイル しないでください:
$ 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
ファイルの内容を表示して実行することは、2つの異なることです。シェルスクリプトでは、単純化を許せば、新しいシェル(または現在のシェル)に「読み込む」ことで「実行」されるため、これらは関連しています。これがあなたがそれらを読むことができる必要がある理由です。バイナリはそのメカニズムを使用しません。
ディレクトリの場合、実行権限は少し異なります。これは、内のファイルに対して何かを実行できることを意味します そのディレクトリ(例:それらを読んだり実行したりする)。したがって、/tools
に一連のツールがあるとします。 人々が彼らについて知っている場合にのみ、人々が使用できるようにしたいということです。 chmod 711 /tools
。次に、/tools
で実行可能なもの 明示的に実行できます(例:/tools/mytool
)、ただしls /tools/
拒否されます。同様に、ドキュメントは/private-docs
に保存できます。 これは、ファイル名がわかっている場合にのみ読み取ることができます。