Antworten:
Basierend auf gid
können Systembenutzer und Dienstbenutzer wie folgt getrennt werden:
/etc/passwd
enthält eine Liste für alle Benutzer sowie einige andere Informationen. Dienstnutzer oder echte Benutzer haben gid
mehr als oder gleich 1000. Eine Liste von echten Benutzern kann also erhalten werden als:
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
Auch eine Liste der Systembenutzer ( gid
<1000) kann extrahiert werden als:
awk -F: '($3<1000){print $1}' /etc/passwd
Wie es funktioniert
Der Inhalt von /etc/passwd
ist wie,
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
Bei der Verwendung von awk
mit -F:
ihm teilt die Inhalte einer Zeile in mehrere Felder Behandlung :
als Feldtrennzeichen . Das erste Feld enthält den Benutzernamen und das dritte Feld den gid
.
Um echte Benutzer zu extrahieren, awk
überprüfen Sie einfach, ob der Wert des dritten Felds größer als 1000 ist, und es ist nicht niemand Benutzer und druckt das erste Feld, dh den Benutzernamen.
Um alle Systembenutzer aufzulisten, werden nur gid
weniger als 1000 überprüft und der Benutzername gedruckt.
Bearbeiten
Wie Sie root
in der realen Benutzerliste auflisten möchten (gid = 0). Holen Sie sich echte Benutzer als,
awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
Holen Sie sich Systembenutzer als,
awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd
Hinweis Ich ignoriere immer nobody
Benutzer.
Lokale (Systembenutzer) auflisten, die sich anmelden können und Homedir und GID unter 1000 haben
cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1
So listen Sie alle anderen Benutzer auf: (hauptsächlich Systembenutzer mit einer GID von weniger als 1000):
cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]" | cut -d: -f1