Todos os howtos que encontro na web declaram:
Find all SUID files:
find / -perm -4000 -print
Find all SGID files:
find / -perm -2000 -print
Mas isso não é verdade. Vejo:
$ ls -lah test
-r-sr-xr-x 1 user user 0B Jan 24 22:47 test
$
$
$ stat -x test | grep Mode
Mode: (4555/-r-sr-xr-x) Uid: ( 1000/ user) Gid: ( 1000/ user)
$
$
$ find test -perm 4000
$ find test -perm 2000
$
Pergunta: Então, qual é a verdade? Como posso realmente listar todos os arquivos SUID / SGID?
find
(O GNU acha que é exato) terá diretórios e arquivos. Ele / ela simplesmente perde o objetivo do-perm
interruptor. Ler o manual ajudaria.find $FILE -perm /7777
para ver se ofind
faz ou o impede.Respostas:
Se você deseja testar algum dos bits, use
/
. Ou seja, para o seu caso de uso:e:
ou combinado:
Você pode usar pastas e arquivos como argumento para o GNU
find
.Outra abordagem, mais legível pela IMO, é usar os atalhos mnemônicos. Ou seja:
Advertência emptor
Lembre-se de que as variantes de
find
variam. Eles também podem se comportar de maneira diferente. Leia sempre o manual amigável (RTFM).fonte
Usando o comando a seguir, você pode enumerar todos os binários com permissão SUID. A
-perm -u=s
bandeira dafind
ferramenta faz o truque:fonte