Burada sihirli mermi yok. İzinler her zaman gereksiz olmayan bilgiler taşır.
Bunu bir sistem dizininde yapmış olsaydınız, sisteminiz çok kötü durumda olurdu, çünkü setuid ve setgid bitleri ve dünya tarafından okunamayan dosyalar ve dosyalar hakkında endişelenmeniz gerekir. grup ya da dünya tarafından yazılabilir olması gerekiyordu.
Kullanıcı başına bir dizinde, dünya tarafından okunabilir olması gerekmeyen dosyalar hakkında endişelenmeniz gerekir. Orada kimse size yardım edemez.
Yürütülebilirliğe gelince, iyi bir kural, yürütülebilecek gibi görünmeyen her şeyin gerçekleştirilemez hale getirilmesi olacaktır. Çekirdek, ilk iki baytı olan komut #!
dosyalarını, ilk dört baytı 12 değerine sahip baytın \x7fELF
bulunduğu ELF ikili dosyalarını \x7f
ve birkaç nadir dosya türünü (a.out, kayıtlı herhangi bir şey binfmt_misc
) çalıştırabilir. Bu nedenle, aşağıdaki komut izinlerinizi makul bir duruma geri yüklemelidir (bash 4 veya zsh olduğunu varsayar, aksi takdirde find
dizin ağacında gezinmek için kullanın ; uyarı, doğrudan tarayıcıya yazılır):
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
Bir dizin ağacının, Linux'ta ve muhtemelen ACL destekli diğer birleşimlerin izinlerini yedeklemek ve geri yüklemek için basit bir yol olduğunu unutmayın:
getfacl -R >saved-permissions
setfacl --restore=saved-permissions
/
başka bir dizinde mi yaptınız ?