Localiza todos os arquivos com um GID indefinido (Um grupo sem entrada em / etc / group)

2

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.

    
por Stefan Lasiewski 04.08.2010 / 20:05

3 respostas

5

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 }, "/")'
    
por 04.08.2010 / 21:45
4

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.

    
por 04.08.2010 / 20:30
1

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
    
por 04.08.2010 / 23:48