我目前正在为内部程序开发 Debian 软件包。作为这个包的一部分,我需要创建程序大部分功能运行的用户。我在 postinst 脚本中这样做。postinst 脚本可以运行多次(例如在升级时),因此确保我不会每次都尝试创建用户很重要。
那么,如何确保仅在第一次运行脚本时创建用户,而不影响以后运行脚本?
尝试:
[aiden@dev ~]$ id aiden
uid=500(aiden) gid=500(aiden) groups=500(aiden)
[aiden@dev ~]$ id foomonkey
id: foomonkey: No such user
[aiden@dev ~]$
第一个$?
是0,第二个是1。
您不需要知道用户是否存在。如果用户已经存在且具有相同的参数,adduser(8) 将不会返回错误。从手册页:
EXIT VALUES
0 The user exists as specified. This can have 2 causes: The user
was created by adduser or the user was already present on the
system before adduser was invoked. Invoking adduser a second
time with the same parameters as before also returns 0.
如前所述,您可以使用“id”命令,如果您想获取系统中的所有用户,您可以使用:
getent passwd
这将列出系统上的所有用户(即使他们在远程数据库上,如 ldap 或 nis 等......)