代码之家  ›  专栏  ›  技术社区  ›  Daniel Watkins

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

  •  3
  • Daniel Watkins  · 技术社区  · 16 年前

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

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

    3 回复  |  直到 16 年前
        1
  •  9
  •   Aiden Bell    16 年前

    尝试:

    [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。

        2
  •  2
  •   camh    16 年前

    您不需要知道用户是否存在。如果用户已存在且参数相同,则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.
    
        3
  •  1
  •   Chmouel Boudjnah    16 年前

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

    getent passwd
    

    它将列出系统上的所有用户(即使他们在远程数据库上,如LDAP或NIS等等…)