Encontrar e diferenças entre -perm / 6000 e -perm / u + s

6

Eu tenho tentado encontrar executáveis setuid usando um 'one liner'.

A linha que eu tentei pela primeira vez foi:

find / -perm /u+s -type f

Depois, encontrei uma linha semelhante, mas com resultados diferentes:

find / -perm /6000 -type f

Estes parecem idênticos, tanto quanto eu posso dizer, mas o primeiro não mostra tantos resultados como o segundo (principalmente aqueles com grupos estranhos estão faltando). Por que, o que é diferente?

    
por Keystone 02.10.2013 / 13:36

2 respostas

9

A maioria das pessoas não sabe, mas as permissões do Unix não são apenas User, Group e Others (rwx). Essas três tríades são as permissões típicas que permitem que usuários, grupos e outros usuários acessem arquivos & diretórios. No entanto, há também um grupo de bits que precede os bits do usuário. Esses bits são chamados de "Modos Especiais".

É mais uma notação abreviada que você não precisa defini-las explicitamente ao lidar com uma ferramenta como chmod .

$ chmod 644

Na verdade, é equivalente a:

$ chmod 0644

Aqui está a lista de bits:

trecho do artigo da Wikipédia intitulado: chmod

Flag                Octal value     Purpose
----                -----------     -------
S_ISUID             04000           Set user ID on execution
S_ISGID             02000           Set group ID on execution
S_ISVTX             01000           Sticky bit
S_IRUSR, S_IREAD    00400           Read by owner
S_IWUSR, S_IWRITE   00200           Write by owner
S_IXUSR, S_IEXEC    00100           Execute/search by owner
S_IRGRP             00040           Read by group
S_IWGRP             00020           Write by group
S_IXGRP             00010           Execute/search by group
S_IROTH             00004           Read by others
S_IWOTH             00002           Write by others
S_IXOTH             00001           Execute/search by others

Sua pergunta

Então, em seu primeiro comando, você está procurando por u+s , o que seria um pouco 04000 . Quando você usa a notação numérica, está solicitando os bits 04000 AND 02000 . Isso lhe daria arquivos com o conjunto de bits setuid ou user.

Leitura Adicional

Eu sugiro que qualquer um que queira entender melhor as permissões no Unix, leia a página da Wikipedia sobre chmod . Ele quebra de forma muito simples e é uma excelente referência quando você esquece.

Referências

por 02.10.2013 / 15:27
3

Modo 6000 é u+s,g+s , não apenas u+s (que seria 4000 ).

find / -perm /u+s ou find / -perm /4000 só encontra arquivos que têm o bit setuid definido. find / -perm /u+s ou find / -perm /6000 encontra arquivos que têm o setuid bit set ou o setgid bit set.

    
por 03.10.2013 / 02:01