3

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

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

4

3 回答 3

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。

于 2009-08-24T11:27:42.673 回答
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.
于 2009-08-24T13:13:38.233 回答
1

如前所述,您可以使用“id”命令,如果您想获取系统中的所有用户,您可以使用:

getent passwd

这将列出系统上的所有用户(即使他们在远程数据库上,如 ldap 或 nis 等......)

于 2009-08-29T20:11:01.557 回答