Я буду використовувати синтаксис gnu find для прапора -perm у цьому прикладі:
В основному - якщо ви викинете хитрі розширення, такі як ACL, у вас є 3 варіанти - власник, група та "інший" доступ для запису. Звучить як робота для петлі.
Існує достатньо місця для оптимізації цього, але я залишу це комусь іншому ... Крім того, я ніколи не можу згадати всі деталі пошуку та перетину файлових систем та подібних дурниць. Крім того, переконайтеся, що вихід групи є таким же, як у моїй тестовій системі Linux
$ groups snoopy
snoopy : snoopy doghouse linus admin wwI woodstock
$
Це приблизний приклад того, як ви можете знайти файли, записані користувачем. Це буде коли запускатись як будь-який користувач, але якщо ви запускаєте його як не-uid0 користувача, ви знайдете лише ті речі, які знаходяться в каталогах, до яких користувач, що працює під сценарієм, має права читання та виконання.
#!/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