我目前正在为内部程序开发Debian软件包。作为此包的一部分,我需要创建程序的大部分功能运行的用户。我在postinst脚本中这样做。 postinst脚本可以运行多次(例如,在升级时),因此确保每次都不会尝试创建用户非常重要。
那么,我如何确保仅在第一次运行脚本时创建用户,而不会在以后运行脚本时影响用户?
答案 0 :(得分:9)
尝试:
[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.
答案 1 :(得分:2)
您无需知道用户是否存在。如果用户已经存在具有相同参数的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.
答案 2 :(得分:1)
如前所述,您可以使用'id'命令,如果您希望获得系统中的所有用户,您可以使用:
getent passwd
将列出系统中的所有用户(即使它们位于远程数据库,如ldap或nis等...)