Odpowiedzi:
Na podstawie gid
użytkowników systemu i użytkowników usług można rozdzielić w następujący sposób,
/etc/passwd
zawiera listę dla wszystkich użytkowników wraz z kilkoma innymi informacjami. Użytkownicy usług lub rzeczywistych użytkowników mają gid
1000 lub więcej. Tak więc listę prawdziwych użytkowników można uzyskać jako,
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
gid
Można również wyodrębnić listę użytkowników systemu ( <1000), ponieważ:
awk -F: '($3<1000){print $1}' /etc/passwd
Jak to działa
Zawartość /etc/passwd
jest jak
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
Podczas używania awk
z -F:
nią dzieli linię na kilka pól, traktując ją :
jak separator pól. Pierwsze pole zawiera nazwę użytkownika, a trzecie pole ma gid
.
Dlatego, aby wyodrębnić prawdziwych użytkowników, awk
po prostu sprawdź, czy wartość trzeciego pola jest większa niż równa 1000 i nie jest to nikt użytkownik i wypisuje pierwsze pole, tj. Nazwę użytkownika.
Aby wyświetlić listę wszystkich użytkowników systemu, po prostu sprawdza, czy gid
jest mniejsza niż 1000 i wypisuje nazwę użytkownika.
Edytować
Jak chcesz wyświetlić listę root
(gid = 0) na prawdziwej liście użytkowników. Zdobądź prawdziwych użytkowników, ponieważ
awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
Uzyskaj użytkowników systemu jako,
awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd
Uwaga : Zawsze ignoruję nobody
użytkownika.
Aby wyświetlić listę lokalnych (użytkowników systemu), niż można się zalogować i mieć homedir i GID mniej niż 1000
cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1
Aby wyświetlić listę wszystkich innych użytkowników: (głównie użytkownicy systemu i GID poniżej 1000):
cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]" | cut -d: -f1