Ho cercato di trovare eseguibili setuid usando un "one liner".
La prima linea che ho provato è stata:
find / -perm /u+s -type f
Poi ho trovato una linea che è simile ma dà risultati diversi:
find / -perm /6000 -type f
Questi sembrano identici per quanto ne so, ma il primo non mostra tanti risultati come il secondo (mancano principalmente quelli con gruppi strani). Perché, cosa è diverso?
Risposta accettata:
La maggior parte delle persone non è a conoscenza, ma le autorizzazioni Unix non sono in realtà solo Utente, Gruppo e Altri (rwx). Queste 3 triadi sono le autorizzazioni tipiche che consentono a utenti, gruppi e altri utenti di accedere a file e directory. Tuttavia esiste anche un gruppo di bit che precedono i bit utente. Questi bit sono indicati come "Modalità speciali".
È più una notazione abbreviata che non devi impostarli esplicitamente quando hai a che fare con uno strumento come chmod
.
$ chmod 644
In realtà è equivalente a:
$ chmod 0644
Ecco l'elenco dei bit:
estratto articolo di Wikipedia intitolato: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
La tua domanda
Quindi nel tuo primo comando stai cercando u+s
, che risulterebbe essere il bit 04000
. Quando usi la notazione numerica, chiedi i bit 04000
E 02000
. Questo ti darebbe file con set di bit setuid utente o gruppo.
Ulteriori letture
Consiglio vivamente a chiunque voglia comprendere meglio i permessi in Unix, di leggere la pagina di Wikipedia su chmod
. Lo scompone in modo molto semplice ed è un ottimo riferimento quando dimentichi.
Riferimenti
- Esercitazione su chmod