【问题标题】:How can I find "real user" accounts with empty password?如何找到密码为空的“真实用户”帐户?
【发布时间】:2017-04-25 19:01:28
【问题描述】:

希望扩展here 提出的关于查找密码为空的用户的问题。我想要的是过滤掉该行的系统帐户

sudo getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1

运行时打印出来。

我的问题是我希望能够仅显示通过脚本或通过我的系统中的终端添加的密码为空的用户帐户,也就是“真实”的人,以及我创建的帐户我自己。

深入:

发生了什么现在

~$ sudo useradd bob

~$ sudo getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
Sudo password for user: [pw]
daemon
bin
sys
[...]
rtkit
saned
usbmux
bob
~$

想要什么

~$ sudo useradd bob

~$ sudo [getent command for the problem]
Sudo password for user: [pw]
bob
~$    

换句话说,当我在没有密码的情况下添加 Bob 时,我希望只能看到他。

这可能措辞得当,所以请要求进一步澄清。

这样做的用途是找到所有具有上述属性的用户并将其删除。因此,我不想删除系统创建的帐户。


更新 1: 更正了拼写错误。


更新2:我发现我可以通过ID过滤掉所有用户,这是getent收到的第三个字段。

因此,通过管道运行 2 个 grep,如下所示:

sudo getent shadow | grep '^[^:]*:.\?:' | grep (regex) | cut -d: -f1

将完成工作。

现在,我知道我应该使用的正则表达式是 '.:.:[^(17212)]:.:.:.:.:.:.',但它不会带回任何匹配项。

有人可以提出任何替代方案吗?


我使用的是 Ubuntu 16.04。

感谢您的帮助。


【问题讨论】:

    标签: linux ubuntu sudo


    【解决方案1】:

    用户账号id从1000开始,低id属于系统账号,所以需要过滤掉——id是输出的第三个字段

    > getent passwd
    

    【讨论】:

    • 我关闭了 cut 命令以查看所有字段 - 系统帐户的 id 为 17212,而“Bob”的 ID 为 17247。“1000”限制是否正确,或者我应该只限制我的情况,17212 及以下?
    • 分配给用户和系统帐户的一组数字用户 ID 可能因系统而异。
    • @KeithThompson 我确实意识到这是按照惯例,但我不记得有一个案例不会保留。显然这里就是这种情况。
    • @ThemistoklisGkasios ID 为 17212 的用户是什么?我不认为,在这种情况下,它是一个“边界”id(如典型设置中的 1000),而是以这种方式设置的一些服务。您可以尝试的另一个字段是 shell(来自 passwd 的最后一个)- 服务通常将其设置为 /usr/bin/nologin 或 /bin/false。我承认我的系统有带有 /bin/bash 的 PostgreSQL,但对我来说这两者的结合是可行的。关于您的第二次更新:getent shadow 没有为我显示任何用户 ID。旁注:您可以使用grep -v 过滤掉一些东西。
    • 我的解决方案是使用sudo getent shadow | awk -F ':' '{print $1 \" \"$2 \" \" $3},并在应用程序本身中使用自定义解析器解析结果
    【解决方案2】:

    已解决的案例:

    使用以下内容:

    sudo getent shadow |  awk  -F ':' '{print $1 \" \"$2 \" \" $3}
    

    结合脚本中的自定义解析器,我可以在应用程序内的列表中获取所有密码为空的用户帐户。

    然后,使用 17212 属性,我可以区分系统帐户和用户帐户。

    请注意,这种从用户帐户中区分系统帐户的方式可能不适合您。 (感谢 cmets 中的@MirMasej)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-30
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多