Ich möchte, dass mit einem Befehl alle Benutzer aufgelistet werden, die über Root-Berechtigungen verfügen, z. B. sudo?
Angenommen, ich bin ein Sudoer-Benutzer. Wie kann ich alle anderen Sudoer-Benutzer kennenlernen?
command-line
sudo
Maythux
quelle
quelle
sudo
Erlaubnis und wer nicht .... wenn ein Benutzer in istsudo
Gruppe , aber diesudoers
Datei hat nichts erwähntsudo
Gruppe, dann?Antworten:
Wenn Sie nur die sudoers in der aufgeführten Liste müssen
sudo
Gruppe, denke ich , dass der beste Weg , es zu tun wäre, um diesen Befehl auszuführen (was sollte als alle anderen Befehle in dieser Antwort rechen leichter sein):Auch wie in den Kommentaren von muru vorgeschlagen, kann das Format der Einträge in
/etc/group
leicht gehandhabt werden voncut
:Auch hier kann man, wie in den Kommentaren von muru vorgeschlagen,
getent
anstelle vongrep
:Mit jedem dieser Befehle werden alle in der
sudo
Gruppe aufgelisteten Benutzer in/etc/group
(falls vorhanden) gedruckt .Aufschlüsselung von Befehl 1:
grep
: Druckt alle Zeilen, die zu einem regulären Ausdruck in einer Datei passen-P
:grep
Stimmt mit regulären Ausdrücken im Perl-Stil übereino
:grep
Lässt nur die übereinstimmende Zeichenfolge drucken'^sudo.+:\K.*$'
: Stimmtgrep
mit dem regulären Ausdruck zwischen den Anführungszeichen übereinRegex # 1 Aufschlüsselung:
^
: Beginn der Linie.+
: ein oder mehrere Zeichen\K
: Das vorherige Spiel verwerfen.*
: null oder mehr Zeichen$
: Ende der LinieAufschlüsselung von Befehl Nr. 2:
grep
: Druckt alle Zeilen, die zu einem regulären Ausdruck in einer Datei passen'^sudo.+:\K.*$'
: Stimmtgrep
mit dem regulären Ausdruck zwischen den Anführungszeichen übereincut
: Druckt nur einen bestimmten Abschnitt jeder Zeile in einer Datei-d:
: Lässtcut
interpretieren:
als Feldbegrenzer-f4
:cut
Lässt nur das vierte Feld druckenRegex # 2 Aufschlüsselung:
^
: Beginn der Linie.*
: null oder mehr Zeichen$
: Ende der Liniequelle
getent group sudo | cut -d: -f4
, oder benutze awk, aber denk daran, dass group und passwd feste Formate mit Begrenzern haben.getent group
- Sie brauchen das grep überhaupt nicht.getent group foo
ist wiegrep foo /etc/group
, aber fähiger.getent
gelerntgrep
undgetent
rechnerisch verglichen habe? Wäre es leichter zu rennengetent
?sudo
Gruppe sind. Einige Unixe haben andere Gruppen wiewheel
. Die Antwort von @muru wird alle Sudoer einschließen, egal in welcher Gruppe sie sich befinden.Wie hier angegeben , halte ich es für den einfachsten Weg, mit
-l
&-U
options zusammen zu entdecken. Geben Sie einfach Folgendes ein, umusers
eine Liste zu erstellen :John
then:Wenn der Benutzer
sudo
Zugriff hat, wird diesudo
Zugriffsebene für diesen bestimmten Benutzer gedruckt :Wenn der Benutzer nicht sudo Zugang hat, wird es drucken , dass ein Benutzer nicht erlaubt läuft
sudo
auf localhost:quelle
for u in $(awk -F'[/:]' '{if($3>=1000&&$3!=65534) print $1}' /etc/passwd); do sudo -lU "$u" ; done
. schnelle Hack nichts garantiert :)"%domain [email protected]" ALL=(ALL) ALL
haben, funktioniert es. Sie haben mir viel Zeit gespart, da ich nicht wusste, dass dies auch für nicht lokale Benutzer funktioniert.Wie bereits erwähnt, kann die Antwort auf Unix & Linux Stack Exchange gefunden werden :
Der einzige Unterschied ist, dass die Gruppe in Ubuntu nicht
wheel
abersudo
(oderadmin
in älteren Versionen von Ubuntu) ist. So wird der Befehl:quelle
geten group
und sehe viele verschiedene Zahlen. Meine ursprüngliche Frage ist, wie man herausfindet, ob ein Benutzer ein Systembenutzer ist (erstellt mituseradd -r
)Wenn Sie den
sudo -l -U
Test erweitern, können Siegetent passwd
die Benutzer bestimmen, die ihn verwenden könnensudo
. Mitgetent
können wir auf Benutzer zugreifen, die möglicherweise nicht in derpasswd
Datei vorhanden sind, z. B. LDAP-Benutzer:sudo -U
gibt keinen Exit-Wert ungleich Null zurück, den wir ausnutzen könnten, sodass wir uns darauf beschränken, die Ausgabe zu begrenzen.quelle
sudo
.Auf den meisten Unix-ähnlichen Systemen mit dem Befehl sudo und einer sudo-Konfigurationsdatei. visudo als root ausführen:
oder
ermöglicht es einem Administrator, die Berechtigungen von Gruppen zu überprüfen und zu ändern, die den Befehl sudo 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 die Sudo-GID.
Um zu sehen, welche Benutzer diesen Gruppen derzeit zugewiesen sind, rufen Sie die Datei / etc / group wie folgt auf:
Eine Beispielausgabe unter Ubuntu (aber nicht auf Redhat-, Oracle Solaris / Solaris- oder BSD-basierten Systemen) würde dies ergeben:
Wie wir sehen können, ist Ihr Benutzer der Administrator des Systems und Mitglied der Gruppe 4 (adm). Ihr Benutzer und mein Bruder sind jedoch beide Mitglieder der Gruppe 27, bei der es sich um die gid-Nummer (Gruppenidentifikationsnummer) des Gruppen-Sudos handelt. 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 Befehl sudo angewendet wird. Auf BSD-basierten Systemen (zB FreeBSD) ist der Root-Benutzer ein Mitglied der Wheel-Gruppe, die gid 0 hat.
Auch mit dem Befehl id kann jeder Benutzer die Gruppeninformationen eines anderen bekannten Benutzers im System finden.
Zum Beispiel:
Beispielausgabe
quelle
Dieser Befehl gibt eine Liste von Benutzern mit sudo-Rechten zurück:
Ausgabe ist (zB):
Wenn nur der Benutzername angezeigt werden soll, dann lautet dieser Befehl:
quelle
Befehl:
Ausgabe:
Tom, Stacy sind die Benutzer mit Sudo-Berechtigungen.
quelle
cat
.Ich war ratlos darüber, wie der
vagrant
Benutzersudo
auch ohne Erwähnung in/etc/sudoers
noch in/etc/group
noch gefunden mit verwenden kanngetent
.Stellt sich heraus,
sudo
liest auch Einträge aus allen Dateien unter/etc/sudoers.d/
. Wenn Sie dieses Verzeichnis nicht durchgesehen haben, können Sie möglicherweise nicht erkennen, wie viele Benutzer tatsächlichsudo
Zugriff haben.Diese Art des
sudo
Zugriffs kann durch die Antwort von JoKeR unter Verwendung von erkannt werdensudo -l -U vagrant
, wird jedoch von keiner der anderen Antworten hier erkannt, auf die sich alle entwedergetent
oder verlassen/etc/group
.quelle