1

我想要一个单行 shell 命令或一个简短的 Bash/Python 脚本,它将列出 Linux 服务器上可以登录到该机器的所有用户。因此,像 www-data 和 mail 这样的用户当然会被排除在外,但root会成为列表的一部分。

例如,此代码有效。我在这里找到了。但我正在寻找更简单的清洁剂。

awk -F: '$2 != "*" && $2 !~ /^!/ { print $1, " can log in" }' /etc/shadow
4

2 回答 2

4

您可以使用这个 oneliner 列出在 /etc/shadow 中设置了密码的所有用户,每行一个:

getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:

这仅适用于本地用户,不适用于使用 LDAP 数据库或其他方法时。

如果您使用的是 LDAP,并且想要列出目录中的所有用户,您可以尝试:

getent passwd | cut -f1 -d:

虽然,这将列出所有用户,包括“非用户”帐户,例如www-data

于 2012-11-07T10:55:04.773 回答
1

我在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 ('!', '*')])
于 2012-11-07T10:51:55.200 回答