我想要知道我的系统中所有用户的列表。我需要非系统用户。
我知道该文件/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/命令可以是任何命令,例如zsh
,sh
等等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'