На этот вопрос уже есть ответ здесь:
Я хочу знать список всех пользователей, созданных в моей системе. Мне нужны несистемные пользователи.
Я знаю, что файл / etc / passwd
содержит всех пользователей
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh libuuid:x:100:101::/var/lib/libuuid:/bin/sh syslog:x:101:103::/home/syslog:/bin/false messagebus:x:102:104::/var/run/dbus:/bin/false colord:x:103:108:colord colour management daemon,,,:/var/lib/colord:/bin/false lightdm:x:104:111:Light Display Manager:/var/lib/lightdm:/bin/false whoopsie:x:105:114::/nonexistent:/bin/false avahi-autoipd:x:106:117:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false avahi:x:107:118:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false usbmux:x:108:46:usbmux daemon,,,:/home/usbmux:/bin/false kernoops:x:109:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false pulse:x:110:119:PulseAudio daemon,,,:/var/run/pulse:/bin/false rtkit:x:111:122:RealtimeKit,,,:/proc:/bin/false saned:x:112:123::/home/saned:/bin/false speech-dispatcher:x:113:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh hplip:x:114:7:HPLIP system user,,,:/var/run/hplip:/bin/false user1:x:1000:1000:user1,,,:/home/user1:/bin/bash user2:x:1001:1001:user2,,,:/home/user2:/bin/bash user3:x:1002:1002:user3,,,:/home/user3:/bin/bash user4:x:1003:1003:user4,,,:/home/user4:/bin/bash xrdp:x:115:126::/var/run/xrdp:/bin/false lxc-dnsmasq:x:116:128:LXC dnsmasq,,,:/var/lib/lxc:/bin/false clamav:x:117:129::/var/lib/clamav:/bin/false dhcpd:x:118:132::/var/run:/bin/false liquidsoap:x:119:133::/usr/share/liquidsoap:/bin/false sshd:x:120:65534::/var/run/sshd:/usr/sbin/nologin
Но, как вы можете видеть, файл может стать очень большим по мере установки дополнительных служб, и я не могу просто открыть и легко искать несистемных пользователей.
Итак, мне нужна простая команда, чтобы вывести список этих пользователей. Спасибо
Я не очищаю решение. Но я могу помочь Вам найти реальных пользователей.
Первое решение:
в /etc/passwd
, продержитесь столбец, показывающий оболочку/команду по умолчанию. В Ubuntu это обычно /bin/bash
, но это не правило. Таким образом, можно попробовать:
sudo grep '/bin/bash'/etc/passwd | сокращают-d:-f1
Также обычно реальные пользователи размещает папку, расположенную в /home
. Можно попробовать:
sudo grep '/home /'/etc/passwd | сокращают-d:-f1
Или они оба:
sudo grep-E '/home. */bin/bash'/etc/passwd | сокращают-d:-f1
Второе решение:
существует также файл /etc/shadow
, где во втором столбце зашифровал пользовательские пароли . У системных программ и демонов нет паролей, обычно. Здесь можно попробовать:
sudo awk-F: '2$! = "*" & & 2$! ~/^!/{печатают 1$, "-имеет pwd"}'/etc/shadow
, Но поймите, все это решение, не 'ясное'. Иногда пользователи могут создать там домашние папки в других местах, они могут войти в систему без паролей, и их оболочка/команда по умолчанию может быть любым, такой как zsh
, sh
, ksh
и т.д.
Другой способ сделать это было бы
getent passwd | tr ":" " " | awk "\$3 >= $(grep UID_MIN /etc/login.defs | cut -d " " -f 2) { print \$1 }" | sort| uniq|sed -e 's/nobody//g'