Saya sedang membaca tentang chmod dan mode oktalnya. Saya melihat bahwa 1
adalah mengeksekusi saja. Apa kasus penggunaan yang valid untuk izin eksekusi saja? Untuk mengeksekusi file, seseorang biasanya ingin membaca dan mengeksekusi izin.
$ echo 'echo foo' > say_foo
$ chmod 100 ./say_foo
$ ./say_foo
bash: ./say_foo: Permission denied
$ chmod 500 ./say_foo
$ ./say_foo
foo
Jawaban yang Diterima:
Skrip shell memerlukan izin baca untuk dieksekusi, tetapi file biner jangan:
$ 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
Menampilkan konten file dan mengeksekusinya adalah dua hal yang berbeda. Dengan skrip shell, hal-hal ini terkait karena "dieksekusi" dengan "membaca" mereka ke dalam shell baru (atau yang sekarang), jika Anda memaafkan penyederhanaan. Inilah sebabnya mengapa Anda harus bisa membacanya. Biner tidak menggunakan mekanisme itu.
Untuk direktori, izin eksekusi sedikit berbeda; itu berarti Anda dapat melakukan sesuatu pada file di dalam direktori itu (misalnya membaca atau menjalankannya). Jadi katakanlah Anda memiliki seperangkat alat di /tools
yang Anda ingin orang dapat menggunakannya, tetapi hanya jika mereka tahu tentang mereka. chmod 711 /tools
. Kemudian hal-hal yang dapat dieksekusi di /tools
dapat dijalankan secara eksplisit (mis. /tools/mytool
), tetapi ls /tools/
akan ditolak. Demikian pula, dokumen dapat disimpan di /private-docs
yang dapat dibaca jika dan hanya jika nama file diketahui.