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+s
ou find / -perm /4000
apenas encontra arquivos que possuem o bit setuid definido. find / -perm /u+s
ou find / -perm /6000
encontra arquivos que possuem o bit setuid definido ou o bit setgid definido.