Supondo que você tenha as permissões de root no sistema, você pode usar isso
sudo -u USER -g GROUP find ROOTDIR -exec test \! -r {} \; -ls
onde USER e GROUP devem ser substituídos pelo username e groupname cujo acesso deve ser avaliado e ROOTDIR é o diretório superior da árvore de diretórios sob a qual realizar a avaliação.
Advertências
Observe que sudo
deve ser configurado apropriadamente, o que significa que a raiz deve ter permissão para atuar como qualquer usuário, bem como qualquer grupo.
Como funciona
O comando funciona executando o utilitário test
para todos os arquivos e diretórios em ROOTDIR. As opções passadas para o utilitário fazem com que ele retorne o código de saída de sucesso (zero) sempre que puder não acessar um determinado arquivo ou diretório. Este código de saída é usado por find
para determinar se deve imprimir o nome do arquivo ou diretório ( -ls
).
Saída
Output é a lista de arquivos e diretórios aos quais o USER: GROUP não tem acesso, com informações extras sobre cada arquivo e diretório, semelhante à saída de ls -l
(ou seja, com permissões, propriedade, tempo de modificação etc).
Coisas úteis que você pode ajustar
Você pode testar diferentes tipos de permissões substituindo -r
por uma opção diferente, consulte teste do homem . Você pode substituir -ls
por -print
se não quiser as informações extras sobre cada arquivo e diretório, mas apenas o nome delas. Note que se o comando encontrar diretórios que ele não pode atravessar, ele também irá reclamar no stderr. Dependendo do que você passar para test
, isso pode ser superficial e pode ser descartado por redirecionamento.