如何检查哪个包创建了用户?


14

怀疑某些软件包在安装时运行了一些脚本,这些脚本会在中创建用户帐户/etc/passwd。如何检查哪个软件包创建了特定用户?

Answers:


16

如果通过dpkg(包括apt install)安装了软件包,这将相当可靠地工作。有关在默认Ubuntu安装中创建的用户列表以及创建它们的软件包,请参见muru的答案。对于那些用户,此方法将不会产生任何输出。

您可以使用以下命令:

grep -RlE '(adduser|useradd).*systemd' /var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'

<user>您感兴趣的用户名替换,例如,systemd

它会搜索preinstpostinst脚本众所周知包dpkgadduseruseradd命令有问题的用户,看看这包是负责创建用户。结果通过管道传递到sed,因此它仅返回包名称本身,而不返回脚本文件的全名。

说明

  • grep -RlE 递归搜索并仅打印包含匹配项的文件名,使用扩展的正则表达式
  • '(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'在存储脚本的目录中(名称以结尾的文件中)搜索adduseruseradd命令以及要在同一行上查找的用户(.*将匹配它们之间的任何字符,捕获任何命令选项)dpkginst
  • sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'删除/完整路径中的最后一个&之前的所有内容,包括最后一个和.preinst.postinst扩展名

感谢@muru建议比使用find此处更整洁,更快捷的搜索方法:)


您还应该检查一下,preinst因为有一些软件包在该脚本中创建用户。但是我知道了,所以我会接受。
赛尔(Cyker)'16

@Cyker是的,谢谢:)我将进行编辑...现在,我正在调查中,看看是否可以全部抓住它们
Zanna 2016年

grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'简化find -exec grep事情。
muru

谢谢@muru太棒了...(现在我只需要basename -s接受通配符/正则表达式...),这样我就可以将它替换为pre和post inst后缀(但是我没有发现任何adduser的preinst脚本如此耸肩)
Zanna

@Zanna Debian Policy建议postinst,因此您不太可能找到任何有用的东西preinst(但我想这种情况可能很少见)。
muru

15

这里通常adduser添加的用户和组有一个重要的例外:Ubuntu随附的默认用户和组。这些由base-passwd包装提供。在中提供(并描述了)此程序包添加的用户和组的列表/usr/share/doc/base-passwd/users-and-groups.{html,txt.gz}。清单是:

用户(通常具有相应的组)

root    man     majordom    irc         gdm
daemon  lp      postgres    gnats       saned
bin     mail    www-data    nobody      klog
sys     news    backup      messagebus  syslog
sync    uucp    operator    postfix
games   proxy   list        haldaemon

组(没有相应的用户)

adm     fax     audio       staff       sshd
tty     voice   src         users       fetchmail
disk    cdrom   shadow      lpadmin     cupsys
kmem    floppy  utmp        sasl        nogroup
dialout tape    video       scanner
dip     sudo    plugdev     ssh

程序包README(/usr/share/doc/base-passwd/README)还列出了一些UID在60000-64999范围内的用户,并指出这些用户名是由相应的程序包创建的。

另请参阅:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.