如何检查创建用户的包?
怀疑某些软件包在安装时运行脚本,这些脚本在/etc/passwd
创建用户帐户。 如何查看创建特定用户的软件包?
如果通过dpkg
安装软件包(包括使用apt install
),这将合理可靠地工作。 请参阅muru的答案,了解在默认Ubuntu安装中创建的用户列表以及创建它们的包。 对于这些用户,此方法不会产生任何输出。
您可以使用以下命令:
grep -RlE '(adduser|useradd).*systemd' /var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-az]+inst:\1:'
将
替换为您感兴趣的用户的名称,例如systemd
这将搜索dpkg
已知的所有软件包的preinst
和postinst
脚本中的adduser
或useradd
命令以及相关用户,以查看哪个软件包负责创建该用户。 结果通过管道传输给sed,因此它只返回包名本身而不是脚本文件的全名。
说明
-
grep -RlE
递归搜索并仅打印包含匹配项的文件名,使用扩展正则表达式 -
'(adduser|useradd).*
搜索' /var/lib/dpkg/info --include='*inst' adduser
或useradd
命令以及要在同一行上找到的用户(.*
将在dpkg
存储脚本的目录中匹配它们之间的任何字符,捕获任何命令选项,在名称以inst
结尾的文件中 -
sed -r 's:.*/(.*)\.[-az]+inst:\1:'
剥离完整路径中的最后一个/
之前的所有内容以及.preinst
或.postinst
扩展名
感谢@muru建议更简洁,更快捷的搜索方式,而不是使用find
here 🙂
通常的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
自述/usr/share/doc/base-passwd/README
包README( /usr/share/doc/base-passwd/README
)还列出了一些具有60000-64999范围内UID的用户,并声明这些用户是由相应的包创建的。
另见:
- Unix和Linux:如何找出用户所属的软件包?
-
base-passwd
for 14.04的源代码 – 您可以在*.master
文件中看到用户和组的列表。
- 无法使用sudo apt-get install -f修复损坏的软件包
- 依赖性错误阻止所有APT命令运行,“程序包libappstream-glib8:amd64尚未配置”
- 强制安装32位deb失败后,如何安装64位版本?
- Ubuntu 16.10:teamviewer:i386依赖于libpng12-0
- 如何在Ubuntu 15.04上安装mysql-server?
- 安装包时“设备上没有剩余空间”,但我还有空间
- sudo dpkg –configure dpkg:error handlingdefault-jdk( – configure):
- 更新/安装失败,导致无法恢复的dpkg致命错误,因为缺少libc6-i386
- 无法安装GitKraken