Pesquisar arquivos com base na propriedade ou permissão


O comando find pesquisa arquivos com base na propriedade ou nas permissões. As opções -user e -group do comando find pesquisam por um nome de usuário e grupo ou por ID de usuário e ID de grupo.

Para procurar arquivos no diretório /home/developer que o usuário developer possui:

[developer@host ~]$ find -user developer
.
./.bash_logout
./.bash_profile
...output omitted...

Para pesquisar arquivos no diretório /home/developer que o grupo developer possui:

[developer@host ~]$ find -group developer
.
./.bash_logout
./.bash_profile
...output omitted...

Para procurar arquivos no diretório /home/developer que a ID de usuário 1000 possui:

[developer@host ~]$ find -uid 1000
.
./.bash_logout
./.bash_profile
...output omitted...

Para pesquisar arquivos no diretório /home/developer que a ID de grupo 1000 possui:

[developer@host ~]$ find -gid 1000
.
./.bash_logout
./.bash_profile
...output omitted...

As opções -user e -group do comando find pesquisam arquivos em que o proprietário do arquivo e o proprietário do grupo sejam diferentes. O exemplo a seguir lista os arquivos que o usuário root possui e com o grupo mail:

[root@host ~]# find / -user root -group mail
/var/spool/mail
...output omitted...

A opção -perm do comando find é usada para procurar arquivos com um conjunto específico de permissões. Os valores octais definem as permissões com 4, 2 e 1 como leitura, gravação e execução. As permissões são precedidas por um sinal / ou - para controlar os resultados da pesquisa.

A permissão octal precedida pelo sinal / corresponde a arquivos em que pelo menos uma permissão foi definida para o usuário, grupo ou outro para esse conjunto de permissões. Um arquivo com as permissões r—r—r— não corresponde à permissão /222, mas corresponde à permissão rw-r—r—. Um sinal - antes da permissão significa que todas as três partes das permissões devem corresponder. No exemplo anterior, os arquivos com as permissões rw-rw-rw- correspondem. Você também pode usar a opção -perm do comando find com o método simbólico para permissões.

Por exemplo, os comandos a seguir correspondem a qualquer arquivo no diretório /home para o qual o usuário tenha permissões de leitura, gravação e execução, os membros do grupo tenham permissões de leitura e gravação, e outros tenham acesso somente leitura. Ambos os comandos são equivalentes; o primeiro usa o método octal para permissões, enquanto o segundo usa os métodos simbólicos.

[root@host ~]# find /home -perm 764
...output omitted...
[root@host ~]# find /home -perm u=rwx,g=rw,o=r
...output omitted...

A opção -ls do comando find é prática ao pesquisar arquivos por permissões, pois fornece informações para os arquivos que incluem suas permissões.

[root@host ~]# find /home -perm 764 -ls
 26207447   0 -rwxrw-r--   1 user  user   0 May 10 04:29 /home/user/file1

Para pesquisar arquivos para os quais o usuário tem pelo menos permissões de gravação e execução, o grupo tem pelo menos permissão de gravação, e outros têm pelo menos permissão de leitura, execute o seguinte comando:

[root@host ~]# find /home -perm -324
...output omitted...
[root@host ~]# find /home -perm -u=wx,g=w,o=r
...output omitted...

Para pesquisar arquivos aos quais o usuário tem permissões de leitura, o grupo tem pelo menos permissões de leitura, ou outros têm pelo menos permissão de gravação, execute o seguinte comando:

[root@host ~]# find /home -perm /442
...output omitted...
[root@host ~]# find /home -perm /u=r,g=r,o=w
...output omitted...

Quando usado com os sinais / ou -, o valor 0 funciona como um caractere curinga, porque ele significa qualquer permissão.

Para pesquisar qualquer arquivo no diretório /home/developer para o qual outros usuários têm pelo menos acesso de leitura na máquina host, execute o seguinte comando:

[developer@host ~]$ find -perm -004
...output omitted...
[developer@host ~]$ find -perm -o=r
...output omitted...

Para pesquisar todos os arquivos no diretório /home/developer em que outros têm permissão de gravação, execute o seguinte comando:

[developer@host ~]$ find -perm -002
...output omitted...
[developer@host ~]$ find -perm -o=w
...output omitted...

Referências