Jika saya memiliki folder root dengan izin terbatas, katakan saja 600, dan jika folder / file anak memiliki izin 777, apakah semua orang akan dapat membaca / menulis / mengeksekusi file anak meskipun folder root memiliki 600?
Jika saya memiliki folder root dengan izin terbatas, katakan saja 600, dan jika folder / file anak memiliki izin 777, apakah semua orang akan dapat membaca / menulis / mengeksekusi file anak meskipun folder root memiliki 600?
Jawaban:
Aturan tepatnya adalah: Anda dapat melintasi direktori jika dan hanya jika Anda memiliki izin untuk menjalankannya.
Jadi misalnya untuk mengakses dir/subdir/file
, Anda perlu menjalankan izin dir
dan dir/subdir
, ditambah izin file
untuk jenis akses yang Anda inginkan. Masuk ke kasus sudut, saya tidak yakin apakah itu universal bahwa Anda perlu menjalankan izin pada direktori saat ini untuk mengakses file melalui jalur relatif (yang Anda lakukan di Linux).
Cara Anda mengakses file penting. Misalnya, jika Anda telah menjalankan izin pada /foo/bar
tetapi tidak aktif /foo
, tetapi direktori Anda saat ini /foo/bar
, Anda dapat mengakses file /foo/bar
melalui jalur relatif tetapi tidak melalui jalur absolut. Anda tidak dapat mengubah /foo/bar
dalam skenario ini; proses yang lebih istimewa mungkin telah dilakukan cd /foo/bar
sebelum tidak memiliki hak . Jika file memiliki banyak tautan keras, jalur yang Anda gunakan untuk mengaksesnya menentukan kendala akses Anda.
Tautan simbolik tidak mengubah apa pun. Kernel menggunakan hak akses dari proses panggilan untuk melewatinya. Misalnya, jika sym
tautan simbolis ke direktori dir
, Anda perlu menjalankan izin dir
untuk mengakses sym/foo
. Izin pada symlink itu sendiri mungkin atau tidak masalah tergantung pada OS dan sistem file (beberapa menghormati mereka, beberapa mengabaikannya).
Menghapus izin eksekusi dari direktori root secara efektif membatasi pengguna ke bagian dari pohon direktori (dimana proses yang lebih istimewa harus berubah menjadi). Ini membutuhkan daftar kontrol akses untuk digunakan. Misalnya, jika /
dan /home
berada di luar batas ke joe
( setfacl -m user:joe:0 / /home
) dan /home/joe
merupakan joe
direktori home, maka joe
tidak akan dapat mengakses seluruh sistem (termasuk menjalankan skrip shell dengan /bin/sh
atau binari terkait secara dinamis yang perlu diakses /lib
, jadi Anda harus d perlu masuk lebih dalam untuk penggunaan praktis, misalnya setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib
).
Izin baca pada direktori memberikan hak untuk menghitung entri. Memberi izin eksekusi tanpa memberikan izin baca terkadang bermanfaat: nama entri berfungsi sebagai kata sandi untuk mengaksesnya. Saya tidak bisa memikirkan kegunaan apa pun dalam memberikan izin baca atau tulis ke direktori tanpa menjalankan izin.
Anda dapat membuat direktori anak dapat ditulisi walaupun direktori induknya tidak. Saya melakukan ini untuk grup.
Sebagai contoh: direktori induk dimiliki oleh grup coder
drwxr-sr-x
direktori anak
drwxrwsr-x
Anda (anggota grup coder) masih dapat menulis ke direktori turunan tetapi tidak ke direktori induk.
Anda dapat membuat tautan keras untuk mengakses file bahkan jika Anda tidak memiliki hak istimewa eksekusi di direktori induk. Tapi yang penting di sini adalah Anda harus membuat tautan keras sebelum Anda kehilangan hak istimewa eksekusi di direktori induk
$ ln foo/bar/test_privs privs_test_checking