确保在Debian GNU / Linux系统上存在用户

时间:2009-08-24 11:24:24

标签: linux shell debian gnu

我目前正在为内部程序开发Debian软件包。作为此包的一部分,我需要创建程序的大部分功能运行的用户。我在postinst脚本中这样做。 postinst脚本可以运行多次(例如,在升级时),因此确保每次都不会尝试创建用户非常重要。

那么,我如何确保仅在第一次运行脚本时创建用户,而不会在以后运行脚本时影响用户?

3 个答案:

答案 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等...)