我想要一个单行 shell 命令或一个简短的 Bash/Python 脚本,它将列出 Linux 服务器上可以登录到该机器的所有用户。因此,像 www-data 和 mail 这样的用户当然会被排除在外,但root
会成为列表的一部分。
例如,此代码有效。我在这里找到了。但我正在寻找更简单的清洁剂。
awk -F: '$2 != "*" && $2 !~ /^!/ { print $1, " can log in" }' /etc/shadow
您可以使用这个 oneliner 列出在 /etc/shadow 中设置了密码的所有用户,每行一个:
getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:
这仅适用于本地用户,不适用于使用 LDAP 数据库或其他方法时。
如果您使用的是 LDAP,并且想要列出目录中的所有用户,您可以尝试:
getent passwd | cut -f1 -d:
虽然,这将列出所有用户,包括“非用户”帐户,例如www-data
我在Find Linux users that can log in with password 中找到了 Bash 脚本。
重击版本:
awk -F: '$2 != "*" && $2 !~ /^!/ { print $1, " can log in" }' /etc/shadow
蟒蛇版本:
users = [i.split(':') for i in open('/etc/shadow').readlines()]
print '\n'.join([i[0] for i in users if i[1] not in ('!', '*')])