Vou usar a sintaxe gnu find para a flag -perm neste exemplo:
Basicamente - se você lançar extensões malucas como ACLs, terá três chocies - proprietário, grupo e "outros" acessos de gravação. Soa como um trabalho para um loop.
Há muito espaço para otimizar isso, mas deixarei isso para outra pessoa ... Além disso, nunca consigo me lembrar de todos os detalhes de encontrar e cruzar sistemas de arquivos e esse tipo de bobagem. Além disso, verifique se a saída dos grupos é igual à do meu sistema linux de teste
$ groups snoopy
snoopy : snoopy doghouse linus admin wwI woodstock
$
Este é um exemplo aproximado de como você encontra arquivos graváveis por um usuário. Isso será executado quando qualquer usuário, mas se você o executar como um usuário não uid0, encontrará apenas itens que estão nos diretórios para os quais o usuário que está executando o script possui permissões de leitura e execução.
#!/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