Todos los howtos que encuentro en la web dicen:
Find all SUID files:
find / -perm -4000 -print
Find all SGID files:
find / -perm -2000 -print
Pero eso no es verdad. Ver:
$ 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
$
Pregunta: Entonces, ¿cuál es la verdad? ¿Cómo puedo realmente enumerar todos los archivos SUID / SGID?
find
(GNU encuentra que es exacto) tomará directorios y archivos por igual. Él / ella simplemente pierde el punto del-perm
cambio. Leer el manual ayudaría.find $FILE -perm /7777
para ver si lofind
hace o lo impide.Respuestas:
Si desea probar cualquiera de los bits, use
/
. Es decir, para su caso de uso:y:
o combinado:
Puede usar tanto carpetas como archivos como argumento para GNU
find
.Otro enfoque, IMO mejor legible, es utilizar los accesos directos mnemónicos. Es decir:
Advertencia de emptor
Tenga en cuenta que las variantes de
find
varían. También pueden comportarse de manera diferente. Siempre lea el manual amigable (RTFM).fuente
Al usar el siguiente comando puede enumerar todos los archivos binarios que tienen permiso SUID. La
-perm -u=s
bandera de lafind
herramienta hace el truco:fuente