Wie liste ich auf einer Linux-Box alle Benutzer mit Root-Rechten auf (und noch besser, alle Benutzer im Allgemeinen sowie, ob sie Root haben oder nicht)?
Können Sie genauer sagen, was Sie unter "Root-Berechtigungen" verstehen? Du meinst Benutzer mit UID = 0?
Chris S
Benutzer, die die Fähigkeit haben, alles zu tun. Grundsätzlich - Ich muss die Benutzer zusammen mit den Gruppen auflisten, denen sie angehören, wenn dies möglich ist.
Eric
2
Wenn ich wüsste, wo sich Ihr Computer befindet, könnte ich aufsteigen und am Netzkabel ziehen. Das würde als "alles tun" qualifizieren, was bedeutet, dass ich auf Ihrer Liste stehe. Rafiq hat die drei häufigsten Dinge aufgelistet, aber es könnte noch mehr geben, und wir wissen, wie Ihr System aufgebaut ist.
Chris S
Antworten:
42
Vergessen Sie nicht, das root-Passwort zu ändern. Wenn ein Benutzer neben root die UID 0 hat, sollte dies nicht der Fall sein. Schlechte Idee. Überprüfen:
grep 'x:0:' /etc/passwd
Wiederum sollten Sie dies nicht tun, sondern prüfen, ob der Benutzer Mitglied der Stammgruppe ist:
grep root /etc/group
Um zu sehen, ob jemand Befehle als root ausführen kann, überprüfen Sie sudoers:
cat /etc/sudoers
So suchen Sie nach dem SUID-Bit, mit dem Programme mit Root-Rechten ausgeführt werden können:
Streng genommen funktioniert das erste nur, wenn sich die Shadow-Passwortdatei in user befindet. Ich bin damit einverstanden, dass dies heutzutage fast immer der Fall ist, aber für alle Fälle habe ich einen schnellen Perl-Job ausgeführt, bei dem Feld 3 explizit überprüft wird.
MadHatter unterstützt Monica
4
Dies ist ein besseres Muster als die ersten: grep '[^:]*:[^:]*:0:' /etc/passwd. +1 insbesondere für die Überprüfung auf SUID.
Bis auf weiteres angehalten.
33
Um zu sehen, wer UID 0 ist:
getent passwd 0
Um zu sehen, wer in Gruppen rootist wheeladmund admin:
getent group root wheel adm admin
So listen Sie alle Benutzer und die Gruppen auf, denen sie angehören:
Im Gegensatz zu allen anderen Antworten, die sich fälschlicherweise auf die Datei / etc / passwd stützen getent passwd, ist diese hier richtig. Vergiss nur nicht, / etc / sudoers zu überprüfen.
mivk
Danke dafür. Viel klarer. Für mich ist das die akzeptierte Antwort.
Fiddy Bux
6
Reine root ist die Benutzer-ID "0".
Alle Benutzer im System befinden sich in der Datei / etc / passwd:
less /etc/passwd
Diejenigen, die root sind, haben "0" als Benutzer-ID, was die 3. Spalte ist. Diejenigen mit "0" als Gruppe (4. Spalte) können auch einige Root-Rechte haben.
Als Nächstes möchten Sie sich die Gruppen ansehen und sehen, wer ein zusätzliches Mitglied der Gruppen "root" oder "wheel" oder "admin" ist:
less /etc/group
Benutzer, die in diesen Gruppen aufgeführt sind, können über einige Root-Berechtigungen verfügen, insbesondere über den Befehl "sudo".
Das Letzte, was Sie überprüfen möchten, ist die "sudo" -Konfiguration, um zu sehen, wer die Berechtigung zum Ausführen dieses Befehls besitzt. Diese Datei selbst ist gut dokumentiert, daher werde ich sie hier nicht reproduzieren:
less /etc/sudoers
Dies deckt die Hauptbereiche ab, die Root-Zugriff haben könnten.
In serverfault.com/questions/205598/… finden Sie einige weitere Stellen, an denen Rechte zur Eskalation von Berechtigungen gewährt werden können. (Nämlich consolehelperund PackageKit.)
mattdm
2
Es wird definitiv NICHT garantiert, dass sich alle Benutzer in / etc / passwd befinden. Sie können zum Beispiel in LDAP sein. Es getent passwdsollten jedoch alle Systembenutzer (einschließlich root) im passwd-Format aufgelistet werden, unabhängig von der Datenbank, in der sie definiert sind.
Das ist ein guter Einzeiler, aber seien Sie sich der Einschränkungen bewusst (ich bin sicher, MadHatter ist sich dessen bereits bewusst) - es werden keine Gruppen und keine Sudoer überprüft. Es wird nur die implizite Wurzel prüfen, wie er sagt.
Rafiq Maniar
2
Analysieren Sie / etc / passwd nicht. Benutzer können an anderer Stelle definiert werden. Verwenden Sie getent passwdstattdessen. Versuchen Sie für Ihr erstes Beispiel "Alle Benutzer drucken" getent passwd | perl -naF: -e 'print "$F[0]\n"'
Folgendes
2
Um eine schnelle Liste aller Benutzer zu erhalten, drücken Sie zweimal die Tabulatortaste (zur automatischen Vervollständigung), nachdem Sie den passwdBefehl gefolgt von einem Leerzeichen eingegeben haben. Dies funktioniert auch mit dem suBefehl.
Muss als Benutzer mit Root-Rechten ausgeführt werden.
Antworten:
Vergessen Sie nicht, das root-Passwort zu ändern. Wenn ein Benutzer neben root die UID 0 hat, sollte dies nicht der Fall sein. Schlechte Idee. Überprüfen:
grep 'x:0:' /etc/passwd
Wiederum sollten Sie dies nicht tun, sondern prüfen, ob der Benutzer Mitglied der Stammgruppe ist:
grep root /etc/group
Um zu sehen, ob jemand Befehle als root ausführen kann, überprüfen Sie sudoers:
cat /etc/sudoers
So suchen Sie nach dem SUID-Bit, mit dem Programme mit Root-Rechten ausgeführt werden können:
find / -perm -04000
quelle
grep '[^:]*:[^:]*:0:' /etc/passwd
. +1 insbesondere für die Überprüfung auf SUID.Um zu sehen, wer UID 0 ist:
Um zu sehen, wer in Gruppen
root
istwheel
adm
undadmin
:So listen Sie alle Benutzer und die Gruppen auf, denen sie angehören:
quelle
getent passwd
, ist diese hier richtig. Vergiss nur nicht, / etc / sudoers zu überprüfen.Reine root ist die Benutzer-ID "0".
Alle Benutzer im System befinden sich in der Datei / etc / passwd:
Diejenigen, die root sind, haben "0" als Benutzer-ID, was die 3. Spalte ist. Diejenigen mit "0" als Gruppe (4. Spalte) können auch einige Root-Rechte haben.
Als Nächstes möchten Sie sich die Gruppen ansehen und sehen, wer ein zusätzliches Mitglied der Gruppen "root" oder "wheel" oder "admin" ist:
Benutzer, die in diesen Gruppen aufgeführt sind, können über einige Root-Berechtigungen verfügen, insbesondere über den Befehl "sudo".
Das Letzte, was Sie überprüfen möchten, ist die "sudo" -Konfiguration, um zu sehen, wer die Berechtigung zum Ausführen dieses Befehls besitzt. Diese Datei selbst ist gut dokumentiert, daher werde ich sie hier nicht reproduzieren:
Dies deckt die Hauptbereiche ab, die Root-Zugriff haben könnten.
quelle
consolehelper
undPackageKit
.)getent passwd
sollten jedoch alle Systembenutzer (einschließlich root) im passwd-Format aufgelistet werden, unabhängig von der Datenbank, in der sie definiert sind.So drucken Sie alle Benutzer
Um nur die Benutzer mit der UID 0 zu drucken, müssen die Benutzer mit impliziten Root-Rechten wie von anderen gesagt:
quelle
getent passwd
stattdessen. Versuchen Sie für Ihr erstes Beispiel "Alle Benutzer drucken"getent passwd | perl -naF: -e 'print "$F[0]\n"'
Um eine schnelle Liste aller Benutzer zu erhalten, drücken Sie zweimal die Tabulatortaste (zur automatischen Vervollständigung), nachdem Sie den
passwd
Befehl gefolgt von einem Leerzeichen eingegeben haben. Dies funktioniert auch mit demsu
Befehl.Muss als Benutzer mit Root-Rechten ausgeführt werden.
quelle
Es hat mich geärgert, dass es keine einzeilige Antwort gab ... Wenn Sie alle UID 0-Konten (Root-Konten) auflisten möchten, verwenden Sie Folgendes:
Beste,
quelle