Bu örnekte -perm bayrağı için gnu find sözdizimini kullanacağım:
Temel olarak - ACL'ler gibi tuhaf uzantılar atarsanız, 3 chociesiniz vardır - sahip, grup ve "diğer" yazma erişimi. Bir döngü için bir iş gibi geliyor.
Bunu optimize etmek için bolca yer var ama bunu bir başkasına bırakacağım ... Ayrıca, dosya sistemlerini bulmanın ve geçmenin tüm detaylarını ve bu tür saçmalıkları asla hatırlayamıyorum. Ayrıca, grup çıktılarının test linux sistemimle aynı olduğundan emin olun
$ groups snoopy
snoopy : snoopy doghouse linus admin wwI woodstock
$
Bu, bir kullanıcı tarafından yazılabilir dosyaları nasıl bulacağınıza dair kabaca bir örnektir. Bu, herhangi bir kullanıcı olarak çalıştırıldığında olacaktır, ancak bunu uid0 olmayan bir kullanıcı olarak çalıştırırsanız, yalnızca komut dosyasını çalıştıran kullanıcının hem okuma hem de yürütme izinlerine sahip olduğu dizinlerde bulunan şeyleri bulacaksınız.
#!/bin/sh
user=snoopy
directory=/
# first files owned by the user and writable
find "$directory" -follow -user "$user" -perm /u+w 2> /dev/null
# now for files that are group writable with the user in that group
for groups in $(groups snoopy 2> /dev/null | cut -f2 -d:)
do
find "$directory" -follow -group "$user" -perm /g+w 2> /dev/null
done
# now for everything else
find "$directory" -follow -perm /o+w 2> /dev/null