通过 bash 脚本添加用户帐户的正确方法

通过 bash 脚本添加用户帐户的正确方法

我将这个问题交叉发布到询问Ubuntu因为我的问题在 Debian/Ubuntu 上似乎最严重,但有人建议我在这里提问。无论建议的解决此问题的方法是什么,都应该适用于大多数发行版(例如 openSuse 和 Ubuntu)。这是我现在使用的脚本代码:

getent group $MYGROUP
if [ $? -ne 0 ] ; then
    sudo su -c "groupadd $MYGROUP"
fi
sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"

它在 Ubuntu 上创建的用户帐户存在几个问题。

  • 终端提示未设置(echo $PS1不返回任何内容)
  • 箭头键和 Tab 键在终端中无法正常工作
  • 密码似乎不起作用(尽管我仍然不清楚这个问题到底是什么)
  • 不尊重为该新用户设置的 /etc/sudoers 权限

如果我手动创建用户adduser(而不是 useradd),我就不会遇到这些问题。但我需要一个非 Debian 专有的脚本或通过 bash 脚本添加用户帐户的方法。

我也有一个上一个问题关于这个主题,但它足够不同,与这个问题无关。

答案1

问题是 Debian 上新用户的默认 shell不存在/bin/sh您习惯的大部分功能。bash尝试添加-s /bin/bash到您的useradd命令中。

您还可以通过编辑 来永久更改默认 shell /etc/default/useradd

编辑:

自动修改密码的解决方案(MountainX找到的)是这里

答案2

光标键和提示问题听起来像是骨架文件没有正确复制。新用户的主目录是否有.bashrc?

至于密码,man useraddSlack 上告诉我的

-p, --password PASSWORD 加密密码,由 crypt(3) 返回。默认是禁用密码。

所以你可能不应该把明文密码放在那里。不过,我现在找不到手动调用 crypt 的便捷方法,所以也许您需要额外调用sudo passwd $mynewuser.

相关内容