it-swarm-id.com

Apakah izin direktori induk penting saat mengakses subdirektori?

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?

168
Ken Li

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 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 menjalankan izin pada direktori saat ini untuk mengakses file melalui jalur relatif (Anda lakukan di Linux).

Cara Anda mengakses file penting. Misalnya, jika Anda telah menjalankan izin pada /foo/bar tetapi tidak pada /foo, tetapi direktori Anda saat ini adalah /foo/bar, Anda dapat mengakses file dalam /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 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. Sebagai contoh, 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 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 tidak terbatas pada joe (setfacl -m user:joe:0 / /home) dan /home/joe adalah direktori home joe, maka 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 harus masuk 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. Memberi izin eksekusi tanpa memberikan izin membaca 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.

Tidak. Izin folder root membatasi izin file anak. Kamu bisa mencobanya.

$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile

Saya mendapatkan ini:

$ cat: ./rootfolder/childfile: permission denied
34
goovim

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.

4
Kemin Zhou

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 Anda di direktori induk

$ ln foo/bar/test_privs privs_test_checking
1
Kamal