Come cercare tutti i file SUID / SGID?


11

Tutti gli howtos che trovo sul web affermano:

Find all SUID files:
find / -perm -4000 -print
Find all SGID files:
find / -perm -2000 -print 

Ma non è vero. Vedere:

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

Domanda: Qual è la verità? Come posso davvero elencare tutti i file SUID / SGID?


Uhm, allora perché esattamente questo "non è vero"? Hai fatto R ead T ha F riendly M anuale, giusto? I bit di autorizzazione del file sono esattamente in modalità (ottale o simbolica).
0xC0000022L

** test ** è un file. Trova ricerche nelle directory. Quindi dovresti usare find nella directory in cui risiede il test.
Nils,

1
@Nils: falso. find(GNU trova l'esatto) prenderà allo stesso modo directory e file. Lui / lei manca semplicemente il punto -permdell'interruttore. Leggere il manuale sarebbe di aiuto.
0xC0000022L

@ 0xC0000022L Interessante. La mia manpage di Linux su CentOS 5 mi dice che ci vorranno solo directory. Ha molto senso eseguirlo su un file?
Nils,

@Nils: no, non ha senso in particolare farlo. Ma non ti impedirai di quella follia. Indipendentemente da ciò, a prima vista ho anche pensato che questo fosse il problema. Ahimè, non è per questa domanda. Puoi provare controllando alcuni bit su un file come questo find $FILE -perm /7777per vedere se lo fai findo lo impedisce.
0xC0000022L

Risposte:


14

Se si desidera verificare uno qualsiasi dei bit, utilizzare /. Vale a dire per il tuo caso d'uso:

find "$DIRECTORY" -perm /4000

e:

find "$DIRECTORY" -perm /2000

o combinato:

find "$DIRECTORY" -perm /6000

Puoi usare sia le cartelle che i file come argomento per GNU find.

Un altro approccio IMO meglio leggibile sta usando le scorciatoie mnemoniche. Vale a dire:

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

Caveat emptor

Tieni presente che le varianti di findvariano. Possono anche comportarsi diversamente. Leggere sempre il manuale descrittivo (RTFM).


8

Utilizzando il seguente comando è possibile enumerare tutti i file binari con autorizzazione SUID. La -perm -u=sbandiera dello findstrumento fa il trucco:

find / -perm -u=s -type f 2>/dev/null
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.