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

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

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

A linha que tentei pela primeira vez foi:

find / -perm /u+s -type f

Então encontrei uma linha semelhante, mas que dá resultados diferentes:

find / -perm /6000 -type f

Pelo que posso dizer, eles parecem idênticos, mas o primeiro não mostra tantos resultados quanto o segundo (faltam principalmente aqueles com grupos estranhos). Por que, o que é diferente?

Responder1

A maioria das pessoas não sabe, mas as permissões do Unix não são apenas Usuário, Grupo e Outros (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 e 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 de que você não precisa defini-los explicitamente ao lidar com uma ferramenta como o chmod.

$ chmod 644

Na verdade, é equivalente a:

$ chmod 0644

Aqui está a lista de bits:

trecho do artigo da Wikipedia 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, no seu primeiro comando, você está procurando u+s, o que resultaria em bit 04000. Quando você usa a notação numérica, você está pedindo bits04000 E 02000. Isso forneceria arquivos com bits setuid de usuário ou grupo definidos.

Leitura adicional

Eu sugiro fortemente que qualquer pessoa que queira entender melhor as permissões no Unix leia oPágina da Wikipédia sobrechmod. Ele explica de forma muito simples e é uma excelente referência quando você esquece.

Referências

Responder2

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

find / -perm /u+sou find / -perm /4000apenas encontra arquivos que possuem o bit setuid definido. find / -perm /u+sou find / -perm /6000encontra arquivos que possuem o bit setuid definido ou o bit setgid definido.

informação relacionada