希望扩大询问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
~$
换句话说,当我添加鲍勃没有密码,我想只能看到他。
这可能是不是措辞得当,所以请进一步澄清。
这样做的用途是找到具有上述属性的所有用户并删除它们。因此,我不想删除系统创建的帐户。
更新1:更正错别字。
更新2:我发现我可以通过它们的ID,这是通过接收getent
第三场过滤掉所有用户。
因此,运行2的grep虽然管道,如:
sudo getent shadow | grep '^[^:]*:.\?:' | grep (regex) | cut -d: -f1
将完成这项工作。
现在,我明白我应该使用的正则表达式是'.:.:[^(17212)]:.:.:.:.:.:.'
,但它不会带回任何匹配。
有人可以提出任何替代方案吗?
我使用Ubuntu 16.04。
谢谢你的帮助。
我把cut命令关掉以查看所有字段 - 系统会话有id 17212,而“Bob”有17247。“1000”限制是正确的,还是应该只限制在我的情况下,17212和更低? –
分配给用户与系统帐户的数字用户ID的集合可能因系统而异。 –
@KeithThompson我确实认识到这是惯例,但我不记得它不会被保留的情况。显然这是这种情况。 – MirMasej