Como procurar por todos os arquivos SUID / SGID?

6

Todos os howtos que eu 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. Veja:

$ 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?

    
por somelooser28533 24.01.2015 / 21:52

2 respostas

9

Se você quiser testar qualquer dos bits, use / . Ou seja para o seu caso de uso:

find "$DIRECTORY" -perm /4000

e:

find "$DIRECTORY" -perm /2000

ou combinados:

find "$DIRECTORY" -perm /6000

Você pode usar ambas as pastas e arquivos como argumento para o GNU find .

Outra abordagem IMO, melhor legível, é usar os atalhos mnemônicos. Ou seja:

find "$DIRECTORY" -perm /u=s,g=s

Emptor de advertência

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).

    
por 24.01.2015 / 22:08
5

Usando o comando a seguir, você pode enumerar todos os binários com a permissão SUID. O sinalizador -perm -u=s da ferramenta find faz o truque:

find / -perm -u=s -type f 2>/dev/null
    
por 20.05.2018 / 17:55

Tags