A sua versão do find não tem a opção -nogroup
?
Aqui está um verso de perl:
perl -MFile::Find -e 'find({ wanted => sub { getgrgid((stat(_))[5]) or \
print ((stat(_))[5], " $File::Find::name\n") }, follow => 1 }, "/")'
Em vários dos nossos sistemas CentOS 5, o arquivo / etc / group foi criado por um script automatizado.
Como resultado, há alguns arquivos no sistema que têm um GID indefinido - o GID não está definido em /etc/group
. Por exemplo, o arquivo a seguir é de propriedade do GID 103, quando deveria pertencer ao grupo 'mysql'.
# ls -ld /var/lib/mysql/mysql/user.frm
-rw-rw---- 1 mysql 103 10330 Apr 1 02:47 /var/lib/mysql/mysql/user.frm
Existe uma maneira de encontrar todos os arquivos neste sistema que são de propriedade de grupos indefinidos?
Eu sei que posso fazer algo assim para encontrar todos os arquivos de propriedade do GID 103:
find / -gid 103
No entanto, quero encontrar TODOS os arquivos pertencentes a um grupo indefinido.
você pode tentar uma solução rápida e suja como:
find . -ls | gawk '$6 ~ /^[0-9]+$/ {print}'
definitivamente não é uma beleza, mas deve funcionar.
Se você tiver -gid
, mas não -nogroup
, poderá usar isto ou algo assim:
gids=($(cut -d: -f3 /etc/group | sed 's/.*/! -gid & /'))
find /dir/to/start ${gids[@]} -ls