Untuk direktori, akses "baca" memungkinkan Anda membuat daftar konten, dan akses "eksekusi" memungkinkan Anda melintasi direktori untuk membuka salah satu anaknya (file atau subdirektori). Jadi jika Anda menghapus:
- hanya akses baca, orang masih dapat mengakses subdirektori dengan menebak nama mereka
- hanya flag eksekusi, orang masih dapat membuat daftar nama konten meskipun mereka tidak dapat mengaksesnya, dan ini masih dapat diungkap
- membaca dan mengeksekusi hak istimewa pada direktori, apa pun di bawahnya menjadi tidak dapat dijangkau, dan Anda tidak perlu melakukan perubahan rekursif.
Tentu saja jika Anda melakukan perubahan rekursif, reset non-rekursif yang tidak disengaja dari hak akses ke direktori teratas akan memiliki konsekuensi yang lebih kecil.
Tak perlu dikatakan lagi, jika Anda membuat file dua hari yang lalu (dengan mode yang dapat dibaca publik), dan seseorang membaca file tersebut kemarin, atau membuat salinannya, maka tidak ada yang dapat Anda lakukan hari ini untuk menjadikan file tersebut pribadi.
xenoid mengatakan (agak sederhana) bahwa, jika Anda menghapus grup dan izin lain dari direktori Anda (hari ini, sekarang), "apa pun di bawahnya menjadi tidak dapat dijangkau, dan Anda tidak perlu melakukan perubahan rekursif." Saya setuju, jika Anda chmod
direktori (tingkat atas) Anda dengan tepat, tidak seorang pun kecuali Anda sendiri yang dapat mengaksesnya di masa mendatang (yaitu, mulai sekarang). Tapi ada beberapa gotcha.
Tautan keras
Ingat file yang Anda buat dua hari lalu? Misalkan musuh Anda membuat tautan keras ke file itu kemarin (alih-alih menyalinnya). Jika Anda chmod
hanya direktori (tingkat atas) Anda, maka file itu akan terus memiliki izin yang dapat dibaca secara publik yang Anda tetapkan saat Anda membuatnya, sehingga orang jahat akan tetap dapat membacanya di masa mendatang— (berpotensi) bahkan jika Anda selanjutnya memodifikasi dia. Jika Anda melakukan chmod
rekursif ,yang akan mengamankan izin pada file,yang akan memengaruhi tautan. Orang jahat itu masih bisa melakukan ls -l
di atasnya, sehingga mereka dapat melihat saat Anda mengubahnya, dan seberapa besar itu, tetapi mereka tidak akan dapat membacanya lagi.
Direktori kerja
Misalkan, di bawah secret
Anda direktori, Anda memiliki plans
direktori, dan juga dapat dibaca publik. Dan misalkan, lima menit yang lalu, orang jahat itu membuka jendela terminal dan berkata
cd /home/clemisch/secret/plans
Sekarang, setelah Anda melakukan chmod
pada secret
, direktori kerja orang jahat masih /home/clemisch/secret/plans
, dan mereka dapat terus mencantumkan direktori itu dan mengakses file di sana, mungkin selamanya. Tentu saja, setelah mereka cd
di tempat lain, atau tutup jendela itu, atau logout, atau mesin di-boot ulang, lalu mereka kehilangan akses.
Jika Anda melakukan chmod
rekursif , yang akan mengamankan izin pada semua file dan semua direktori, menyebabkan penghuni liar segera kehilangan akses.
Ini mungkin bukan risiko yang sangat besar jika mesin tersebut adalah komputer pribadi yang hanya diakses melalui konsol. Tapi, jika orang jahat itu mungkin meninggalkan screen
atau tmux
sesi di latar belakang, maka mereka bisa menggunakan serangan ini. Dan, jika mesin mendukung ssh
(atau akses jarak jauh lainnya; bahkan mungkin FTP sudah cukup),serangan ini dapat digunakan.
Kesalahan manusia
Seperti yang ditunjukkan xenoid dalam jawaban mereka:Jika Anda melakukan chmod
rekursif pada secret
hari ini,dan kemudian lusa Anda secara tidak sengajachmod
(hanya) direktori tingkat atas kembali ke 755, maka Anda masih akan dilindungi oleh chmod
rekursif hari ini —semua file dan direktori di bawah secret
tetap tidak akan terbaca. (Tentu saja, jika Anda membuat baru file dalam secret
besok, dan Anda mengizinkannya untuk dibaca secara publik, maka itu akan terungkap saat Anda membuka izin pada secret
direktori. Tapi itu benar tidak peduli apakah chmod
hari ini adalah rekursif atau tidak.)
mazunki berkomentar, “Saya percaya cp
membawa izin.” Saya tidak yakin apa maksudnya, tetapi pertimbangkan skenario ini. Anda ingin melakukan diff
antara dua file:
secret/plans/the/quick/brown/fox/file1
secret/jumps/over/the/lazy/dog/file2
Tetapi Anda tidak yakin persis di mana file-file itu berada, dan Anda harus mencari-cari untuk menemukannya. Anda mungkin tergoda untuk melakukannya
cd plans
cd the/quick # looking for file1
cd brown/fox # found it!
cp file1 /tmp
cd ../../../../..
cd jumps/over
cd the # looking for file2
cd lazy/dog # found it!
diff /tmp/file1 file2
Jika Anda melakukan ini, maka /tmp/file1
akan memiliki perlindungan yang sama seperti secret/plans/the/quick/brown/fox/file1
—jadi itulah alasan lain untuk melakukan chmod
rekursif hari ini.
SATU hal lagi
Jika penjahat membuka salah satu file rahasia Anda lima menit yang lalu, dan tetap membukanya, mereka akan dapat membacanya di masa mendatang— berpotensi bahkan jika Anda memodifikasinya. Kabar baiknya adalah bahwa ini adalah serangan yang agak rumit untuk dieksekusi — orang jahat harus memikirkannya, sebelum Anda melakukan chmod
. Kabar buruknya adalah serangan ini sangat sulit untuk dilawan— chmod rekursif tidak akan membantu.
__________
dan, tentu saja, pengguna istimewa / proses
P.S. Anda dapat mempersingkat perintah Anda sedikit:chmod go=
setara dengan chmod g=,o=
. (Itu tidak akan membuat chmod
rekursif lebih cepat, tentu saja.)