Jika saya memiliki folder root dengan beberapa izin terbatas, katakanlah 600, dan jika folder/file anak memiliki izin 777, apakah semua orang dapat membaca/menulis/mengeksekusi file anak meskipun folder root memiliki 600?
Jawaban yang Diterima:
Aturan yang tepat adalah:Anda dapat melintasi direktori jika dan hanya jika Anda memiliki izin untuk mengeksekusinya.
Jadi misalnya untuk mengakses dir/subdir/file
, Anda perlu menjalankan izin pada dir
dan dir/subdir
, ditambah izin pada file
untuk jenis akses yang Anda inginkan. Masuk ke kasus sudut, saya tidak yakin apakah itu universal bahwa Anda perlu mengeksekusi izin pada direktori saat ini untuk mengakses file melalui jalur relatif (Anda lakukan di Linux).
Cara Anda mengakses file penting. Misalnya, jika Anda telah mengeksekusi izin pada /foo/bar
tapi tidak di /foo
, tetapi direktori Anda saat ini adalah /foo/bar
, Anda dapat mengakses file di /foo/bar
melalui jalur relatif tetapi tidak melalui jalur absolut. Anda tidak dapat mengubah ke /foo/bar
dalam skenario ini; proses yang lebih istimewa mungkin telah dilakukan cd /foo/bar
sebelum pergi tanpa hak. Jika sebuah file memiliki beberapa tautan keras, jalur yang Anda gunakan untuk mengaksesnya menentukan batasan akses Anda.
Tautan simbolis tidak mengubah apa pun. Kernel menggunakan hak akses dari proses pemanggilan untuk melintasinya. Misalnya, jika sym
adalah tautan simbolis ke direktori dir
, Anda perlu menjalankan izin pada dir
untuk mengakses sym/foo
. Izin pada symlink itu sendiri mungkin atau mungkin tidak penting tergantung pada OS dan sistem file (beberapa menghormatinya, beberapa mengabaikannya).
Menghapus izin eksekusi dari direktori root secara efektif membatasi pengguna ke bagian dari pohon direktori (yang harus diubah menjadi proses yang lebih istimewa). Ini membutuhkan daftar kontrol akses untuk digunakan. Misalnya, jika /
dan /home
terlarang untuk joe
(setfacl -m user:joe:0 / /home
) dan /home/joe
adalah joe
direktori home, lalu joe
tidak akan dapat mengakses seluruh sistem (termasuk menjalankan skrip shell dengan /bin/sh
atau binari yang terhubung secara dinamis yang perlu mengakses /lib
, jadi Anda perlu mempelajari lebih dalam untuk penggunaan praktis, mis. setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib
).
Izin baca pada direktori memberikan hak untuk menghitung entri. Memberikan izin eksekusi tanpa memberikan izin baca terkadang berguna:nama entri berfungsi sebagai kata sandi untuk mengaksesnya. Saya tidak bisa memikirkan apa gunanya memberikan izin baca atau tulis ke direktori tanpa izin eksekusi.