列出所有非系统用户

列出所有非系统用户

我想要知道我的系统中所有用户的列表。我需要非系统用户。

我知道该文件/etc/passwd包含所有用户

根:x:0:0:根:/根:/bin/bash
守护进程:x:1:1:守护进程:/usr/sbin:/bin/sh
箱:x:2:2:箱:/箱:/箱/sh
系统:x:3:3:系统:/dev:/bin/sh
同步:x:4:65534:同步:/bin:/bin/同步
游戏:x:5:60:游戏:/usr/游戏:/bin/sh
人:x:6:12:人:/ var /缓存/人:/ bin / sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
邮件:x:8:8:邮件:/var/邮件:/bin/sh
新闻:x:9:9:新闻:/var/spool/新闻:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
代理:x:13:13:代理:/bin:/bin/sh
www-数据:x:33:33:www-数据:/ var / www:/ bin / sh
备份:x:34:34:备份:/var/备份:/bin/sh
list:x:38:38:邮件列表管理器:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats 错误报告系统(管理员):/var/lib/gnats:/bin/sh
无人:x:65534:65534:无人:/不存在:/bin/sh
libuuid:x:100:101 :: / var / lib / libuuid:/ bin / sh
系统日志:x:101:103::/home/syslog:/bin/false
消息总线:x:102:104::/var/run/dbus:/bin/false
colord:x:103:108:colord 颜色管理守护进程,,,:/var/lib/colord:/bin/false
lightdm:x:104:111:灯光显示管理器:/var/lib/lightdm:/bin/false
whoopsie:x:105:114::/不存在:/bin/false
avahi-autoipd:x:106:117:Avahi autoip 守护进程,,,:/var/lib/avahi-autoipd:/bin/false
avahi:x:107:118:Avahi mDNS 守护进程,,,:/var/run/avahi-daemon:/bin/false
usbmux:x:108:46:usbmux 守护进程,,,:/home/usbmux:/bin/false
kernoops:x:109:65534:内核错误跟踪守护进程,,,:/:/bin/false
脉冲:x:110:119:PulseAudio 守护进程,,,:/var/run/pulse:/bin/false
rtkit:x:111:122:RealtimeKit,,,:/proc:/bin/false
saned:x:112:123::/home/saned:/bin/false
语音调度器:x:113:29:语音调度器,,,:/var/run/speech-dispatcher:/bin/sh
hplip:x:114:7:HPLIP 系统用户,,,:/var/run/hplip:/bin/false
用户 1:x:1000:1000:用户 1,,,:/home/用户 1:/bin/bash
用户 2:x:1001:1001:用户 2,,,:/home/用户 2:/bin/bash
用户 3:x:1002:1002:用户 3,,,:/home/用户 3:/bin/bash
用户 4:x:1003:1003:用户 4,,,:/home/用户 4:/bin/bash
xrdp:x:115:126 :: / var /运行/ 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 /运行:/ bin / false
liquidsoap:x:119:133 :: / usr /共享/ liquidsoap:/ bin / false
sshd:x:120:65534::/var/run/sshd:/usr/sbin/nologin

但是正如您所看到的,随着您安装更多服务,文件可能会变得非常大,我无法轻松地打开并搜索非系统用户。

所以我需要一个简单的命令来列出这些用户。谢谢

答案1

我不知道解决方案。但我可以帮你找到真正的用户。

第一个解决方案:

在 中/etc/passwd,最后一列显示默认 shell/命令。在 Ubuntu 中通常是/bin/bash,但这不是规则。因此您可以尝试:

sudo grep'/bin/bash'/etc/passwd|cut-d:-f1

另外通常真实用户的主文件夹位于/home。您可以尝试:

sudo grep'/home/'/etc/passwd|cut-d:-f1

或者两者兼而有之:

sudo grep -E'/home。*/bin/bash'/etc/passwd|cut-d:-f1

第二种解决方案:

还有一个文件/etc/shadow,其中第二列加密用户密码。系统程序和守护进程通常没有密码。您可以尝试以下方法:

sudo awk -F: '$2 != "*" && $2 !~ /^!/ { print $1, " - has pwd" }' /etc/shadow

但请理解,所有这些解决方案都不是“明确的”。有时用户可以在其他地方创建主文件夹,他们可以不用密码登录,并且他们的默认 shell/命令可以是任何命令,例如zshsh等等ksh...

答案2

另一种方法是

getent passwd | tr ":" " " | awk "\$3 >= $(grep UID_MIN /etc/login.defs | cut -d " " -f 2) { print \$1 }" | sort| uniq|sed -e 's/nobody//g'

相关内容