Tidak ada peluru ajaib di sini. Izin membawa informasi yang tidak selalu berlebihan.
Jika Anda melakukan ini di direktori sistem, sistem Anda akan berada dalam kondisi yang sangat buruk, karena Anda harus khawatir tentang setuid dan bit setgid, dan tentang file yang seharusnya tidak dapat dibaca dunia, dan tentang file yang seharusnya bisa ditulis kelompok atau dunia.
Dalam direktori per pengguna, Anda harus khawatir tentang file yang seharusnya tidak dapat dibaca dunia. Tidak ada yang bisa membantu Anda di sana.
Adapun executability, aturan praktis yang baik adalah membuat segala sesuatu yang tidak tampak seperti itu dapat dieksekusi, tidak dapat dieksekusi. Kernel dapat menjalankan skrip yang dua byte pertama adalah #!
, binari ELF yang pertama empat byte yang \x7fELF
mana \x7f
adalah byte dengan nilai 12, dan beberapa jenis file jarang (a.out, apa pun terdaftar binfmt_misc
). Oleh karena itu perintah berikut harus mengembalikan izin Anda ke keadaan yang wajar (mengasumsikan bash 4 atau zsh, jika tidak digunakan find
untuk melintasi pohon direktori; peringatan, diketik langsung ke browser):
for x in **/*; do
if ! [ -f "$x" ]; then continue; fi # skip all but regular files
case $(head -c 4 "$x") in
"#!"??) :;; # skip script
"\x7fELF") :;; # skip ELF executable
*) chmod a-x "$x";;
esac
done
Perhatikan bahwa ada cara sederhana untuk mencadangkan dan mengembalikan izin pohon direktori, di Linux dan mungkin beberapa kesatuan lainnya dengan dukungan ACL:
getfacl -R >saved-permissions
setfacl --restore=saved-permissions
/
atau direktori lain?