将用户添加到系统*仅当该用户不存在时*

将用户添加到系统*仅当该用户不存在时*

我一直在运行useradd {user}命令将用户添加到我的系统中,尽管我计划在自动化环境中运行它,并且它最终可能会再次运行,即使用户已经存在。

有没有一种方法可以让我仅在用户尚不存在时才运行它?用户没有主文件夹。

答案1

id -u somename当用户不存在时返回非零退出代码。

您可以非常简单地测试它...(&>/dev/null只是抑制正常输出/警告)

id -u somename &>/dev/null || useradd somename 

答案2

尝试这个:

useradd {user} || echo "User already exists."

甚至这个:

useradd {user} || true

答案3

除非您只有一小部分系统,否则您就问错了问题。答案是根本不运行 useradd,而是将这项工作留给像 puppet 或 Chef 这样的配置管理解决方案。这将允许您的用户定义集中化,并防止您运行 for 循环以及使用 root 用户使用 ssh 来配置您的系统。您将始终让系统处于已知的配置状态。

puppet 的文档位于http://docs.puppetlabs.com

以木偶中的例子为例:

user { "bob" : 
  password   => "$1$yv3n066X$Vpb05Ac/fHTicNdT9T5vz1", # generated with `openssl passwd -1`
  ensure     => present,                              # ensure => absent to remove
  managehome => true,
}

答案4

useradd如果用户已经存在,则不会再次添加该用户,其目的是确保 uid 号和 uid 登录名是唯一的。如果您计划运行一批,请确保所使用的 uid 是唯一的;useradd会抱怨有问题的条目,并且您需要捕获错误/stderr 以查看哪些用户帐户在进入帐户系统时出现问题(/etc/passwdgroupshadow)。

相关内容