it-swarm.com.de

Wie könnte ich alle Superuser auflisten?

Ich möchte, dass mit einem Befehl alle Benutzer aufgelistet werden, die über Root-Berechtigungen verfügen, d. H. Sudo?

Angenommen, ich bin ein Sudoer-Benutzer. Wie kann ich alle anderen Sudoer-Benutzer kennenlernen?

84
Maythux

Wenn Sie nur die Sudoer auflisten müssen, die in der Gruppe Sudo aufgeführt sind, ist es meines Erachtens am besten, diesen Befehl auszuführen (der sollte rechnerisch leichter ist als jeder der andere Befehle in dieser Antwort):

_grep -Po '^Sudo.+:\K.*$' /etc/group
_

Wie in den Kommentaren von muru vorgeschlagen, kann das Format der Einträge in _/etc/group_ leicht von cut gehandhabt werden:

_grep '^Sudo:.*$' /etc/group | cut -d: -f4
_

Auch hier kann man, wie in den Kommentaren von muru vorgeschlagen, getent anstelle von grep verwenden:

_getent group Sudo | cut -d: -f4
_

Mit jedem dieser Befehle werden alle Benutzer gedruckt, die in der Gruppe Sudo in _/etc/group_ (falls vorhanden) aufgeführt sind.

Aufschlüsselung von Befehl 1:

  • grep: Druckt alle Zeilen, die einem regulären Ausdruck in einer Datei entsprechen
  • _-P_: grep passt zu regulären Ausdrücken im Perl-Stil
  • o: Lässt grep nur die übereinstimmende Zeichenfolge drucken
  • _'^Sudo.+:\K.*$'_: Lässt grep mit der Regex zwischen den Anführungszeichen übereinstimmen

Regex # 1 Aufschlüsselung:

  • Alle Zeichen oder Zeichengruppen, die nicht aufgelistet sind, stimmen mit dem Zeichen oder der Zeichengruppe selbst überein
  • _^_: Zeilenanfang
  • _.+_: ein oder mehrere Zeichen
  • _\K_: verwerfen Sie die vorherige Übereinstimmung
  • _.*_: null oder mehr Zeichen
  • _$_: Zeilenende

Aufschlüsselung von Befehl 2:

  • grep: Druckt alle Zeilen, die einem regulären Ausdruck in einer Datei entsprechen
  • _'^Sudo.+:\K.*$'_: Lässt grep mit der Regex zwischen den Anführungszeichen übereinstimmen
  • cut: Druckt nur einen bestimmten Abschnitt jeder Zeile in einer Datei
  • _-d:_: Lässt cut _:_ als Feldbegrenzer interpretieren
  • _-f4_: Lässt cut nur das vierte Feld drucken

Regex # 2 Aufschlüsselung:

  • Alle Zeichen oder Zeichengruppen, die nicht aufgelistet sind, stimmen mit dem Zeichen oder der Zeichengruppe selbst überein
  • _^_: Zeilenanfang
  • _.*_: null oder mehr Zeichen
  • _$_: Zeilenende
79
kos

Wie es heißt hier Ich betrachte den einfachsten Weg, mit den Optionen -l & -U zusammen zu entdecken, tippe einfach users und liste zB auf: John dann:

Wenn der Benutzer Sudo -Zugriff hat, wird die Ebene des Sudo -Zugriffs für diesen bestimmten Benutzer gedruckt:

  Sudo -l -U John
  User John may run the following commands on this Host:
     (ALL : ALL) ALL

Wenn der Benutzer keinen Sudo-Zugriff hat, wird gedruckt, dass ein Benutzer nicht berechtigt ist , Sudo auf localhost auszuführen:

   Sudo -l -U John
   User John is not allowed to run Sudo on localhost.
29
JoKeR

Wie bereits erwähnt, finden Sie die Antwort auf nix & Linux Stack Exchange :

Dies zeigt, dass der Benutzer "saml" Mitglied der Radgruppe ist.

$ getent group wheel
wheel:x:10:saml

Der einzige Unterschied ist, dass die Gruppe in Ubuntu nicht wheel ist, sondern Sudo (oder admin in älteren Versionen von Ubuntu). So wird der Befehl:

getent group Sudo
13

Wenn Sie den Test Sudo -l -U erweitern, können Sie getent passwd verwenden, um die Benutzer zu ermitteln, die Sudo verwenden können. Mit getent können wir auf Benutzer zugreifen, die möglicherweise nicht in der passwd-Datei vorhanden sind, z. B. LDAP-Benutzer:

getent passwd | cut -f1 -d: | Sudo xargs -L1 Sudo -l -U | grep -v 'not allowed'

Sudo -U gibt keinen Exit-Wert ungleich Null zurück, den wir ausnutzen könnten, sodass wir uns darauf beschränken, die Ausgabe zu begreifen.

9
muru

Auf den meisten Unix-ähnlichen Systemen mit dem Befehl Sudo und einer Sudo-Konfigurationsdatei. visudo als root ausführen:

:~$ Sudo bash

oder

:~$ su

:~# visudo

ermöglicht es einem Administrator, die Berechtigungen von Gruppen zu überprüfen und zu ändern, die den Sudo-Befehl verwenden können.

Auf Debian-basierten Unix-ähnlichen Systemen wie Ubuntu haben die Gruppen 4 und 27 im Allgemeinen Zugriffsrechte auf die Sudo-Berechtigungen.

Gruppe 4 ist die Administratorgruppe (adm) und Gruppe 27 ist das Sudo-Gid.

Um zu sehen, welche Benutzer diesen Gruppen derzeit zugewiesen sind, rufen Sie die Datei/etc/group wie folgt auf:

:~$ cat /etc/group

Eine Beispielausgabe unter Ubuntu (aber nicht auf Redhat-, Oracle Solaris/Solaris- oder BSD-basierten Systemen) würde dies ergeben:

adm:x:4:youruser
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9: 
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:youruser,mybrother
floppy:x:25:
tape:x:26:
Sudo:x:27:youruser,mybrother

Wie wir sehen können, ist Ihr Benutzer der Administrator des Systems und Mitglied der Gruppe 4 (adm). Aber Ihr Benutzer und mein Bruder sind beide Mitglieder der Gruppe 27, die die gid-Nummer (Gruppenidentifikationsnummer) der Gruppe Sudo ist. So kann mybrother auch root-Rechte erlangen (Superuser).

Viele Linux-Systeme wie Fedora und Slackware enthalten die Radgruppe gid = 10. Dies ermöglicht Administratorrechte, wenn der Sudo-Befehl angewendet wird. Auf BSD-basierten Systemen (z. B. FreeBSD) ist der Root-Benutzer ein Mitglied der Wheel-Gruppe mit der GID 0.

Auch mit dem Befehl id kann jeder Benutzer die Gruppeninformationen eines anderen bekannten Benutzers im System finden.

Zum Beispiel:

:~$ id mybrother

Beispielausgabe

uid=1001(mybrother) gid=1001(mybrother) groups=1001(mybrother),24(cdrom),27(Sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
2
oOpSgEo

Dieser Befehl gibt eine Liste der Benutzer mit Sudo-Rechten zurück:

awk -F ":" '{ system("groups " $1 " | grep -P \"[[:space:]]Sudo([[:space:]]|$)\"") }' /etc/passwd

Die Ausgabe ist (z. B.):

<username> : <username> adm cdrom Sudo dip plugdev lpadmin sambashare docker

Wenn nur der Benutzername angezeigt werden soll, dann lautet dieser Befehl:

awk -F ":" '{ system("groups " $1 " | grep -P \"[[:space:]]Sudo([[:space:]]|$)\"") }' | awk -F ":" '{ print $1 }' /etc/passwd
1
A.B.

Befehl:

cat /etc/group | grep Sudo

Ausgabe:

Sudo:x:27:Tom,Stacy

Tom, Stacy sind die Benutzer mit Sudo-Berechtigungen.

0
XYZ