Antworten:
Basierend auf gidkönnen Systembenutzer und Dienstbenutzer wie folgt getrennt werden:
/etc/passwdenthält eine Liste für alle Benutzer sowie einige andere Informationen. Dienstnutzer oder echte Benutzer haben gidmehr 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/passwdist wie,
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
Bei der Verwendung von awkmit -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 gidweniger als 1000 überprüft und der Benutzername gedruckt.
Bearbeiten
Wie Sie rootin 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 nobodyBenutzer.
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