Su una scatola di Linux, come posso elencare tutti gli utenti che hanno i privilegi di root (e ancora meglio, tutti gli utenti in generale con se hanno root o no)?
Su una scatola di Linux, come posso elencare tutti gli utenti che hanno i privilegi di root (e ancora meglio, tutti gli utenti in generale con se hanno root o no)?
Risposte:
Non dimenticare di cambiare la password di root. Se un utente ha UID 0 oltre a root, non dovrebbe. Cattiva idea. Controllare:
grep 'x:0:' /etc/passwd
Ancora una volta, non dovresti farlo ma per verificare se l'utente è un membro del gruppo radice:
grep root /etc/group
Per vedere se qualcuno può eseguire comandi come root, controlla sudoers:
cat /etc/sudoers
Per verificare il bit SUID, che consente ai programmi di essere eseguiti con i privilegi di root:
find / -perm -04000
grep '[^:]*:[^:]*:0:' /etc/passwd
. +1 in particolare per il controllo del SUID.
Per vedere chi è UID 0:
getent passwd 0
Per vedere chi è in gruppo root
, wheel
adm
e admin
:
getent group root wheel adm admin
Per elencare tutti gli utenti e i gruppi di cui sono membri:
getent passwd | cut -d : -f 1 | xargs groups
getent passwd
invece, è effettivamente corretta. Basta non dimenticare di controllare / etc / sudoers.
La radice pura è l'id utente "0".
Tutti gli utenti nel sistema sono nel file / etc / passwd:
less /etc/passwd
Coloro che sono root hanno "0" come ID utente, che è la terza colonna. Quelli con "0" come gruppo (4a colonna) possono anche avere alcuni privilegi di root.
Successivamente, ti consigliamo di guardare i gruppi e vedere chi è un membro aggiuntivo dei gruppi "root" o "wheel" o "admin":
less /etc/group
Gli utenti elencati in questi gruppi potrebbero avere alcuni privilegi di root, in particolare tramite il comando "sudo".
L'ultima cosa che vorrai controllare è la configurazione "sudo" e vedere chi è elencato come autorizzato ad eseguire questo comando. Questo file stesso è ben documentato, quindi non lo riprodurrò qui:
less /etc/sudoers
Questo riguarda le aree principali di chi potrebbe avere accesso come root.
consolehelper
e PackageKit
.)
getent passwd
dovrebbe elencare tutti gli utenti del sistema (incluso root), in formato passwd, indipendentemente dal database in cui sono definiti.
Per stampare tutti gli utenti
perl -n -e '@user = split /:/ ; print "@user[0]\n";' < /etc/passwd
Per stampare solo quegli utenti con UID 0, come altri hanno già detto, gli utenti con privilegi di root impliciti:
perl -n -e '@user = split /:/ ; print "@user[0]\n" if @user[2] == "0";' < /etc/passwd
getent passwd
invece. Per il tuo primo esempio di "stampa tutti gli utenti", prova piuttosto questo:getent passwd | perl -naF: -e 'print "$F[0]\n"'
Per un rapido elenco di tutti gli utenti, prova a premere due volte la scheda (per il completamento automatico) dopo aver digitato il passwd
comando seguito da uno spazio. Funziona anche con il su
comando.
Deve essere eseguito come utente con privilegi di root.