Saya akan menggunakan sintaks gnu find untuk flag -perm dalam contoh ini:
Pada dasarnya - jika Anda membuang ekstensi aneh seperti ACL, Anda punya 3 chocies - pemilik, grup, dan akses tulis "lainnya". Kedengarannya seperti pekerjaan untuk satu lingkaran.
Ada banyak ruang untuk mengoptimalkan ini tetapi saya akan menyerahkannya kepada orang lain ... Juga, saya tidak pernah dapat mengingat semua detail dari menemukan dan melintasi sistem file dan omong kosong semacam itu. Juga, pastikan output kelompok sama dengan pada sistem pengujian linux saya
$ groups snoopy
snoopy : snoopy doghouse linus admin wwI woodstock
$
Ini adalah contoh kasar bagaimana Anda akan menemukan file yang dapat ditulis oleh pengguna. Ini akan ketika dijalankan sebagai pengguna mana pun, tetapi jika Anda menjalankannya sebagai pengguna non-uid0 Anda hanya akan menemukan hal-hal yang ada di direktori dimana pengguna yang menjalankan skrip telah membaca dan menjalankan izin.
#!/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