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

Mou*_*inX 17 bash scripts users adduser

这是我现在使用的脚本代码:

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"
Run Code Online (Sandbox Code Playgroud)

这种方法在 openSuse 上运行良好。但是它在Ubuntu 上创建的用户帐户存在几个问题,所以我在这里寻求帮助。

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

相反,如果我使用adduser(而不是 useradd)手动创建用户,我在 Ubuntu 上没有这些问题。但我不能adduser在 openSuse (afaik) 上使用。因此,我需要一个非 Debian 独有的脚本或通过我的 bash 脚本添加用户帐户的方法,该脚本可在 Ubuntu 上运行(并且不会停止在其他发行版上运行)。

最后,我想理解的差异之间adduseruseradd。例如,我想知道使用哪个骨架目录,adduser因为这可能useradd是没有按预期工作的原因(因为我刚刚接受了默认值)。

谢谢

Mou*_*inX 18

我的解决方案在这里提供:https : //unix.stackexchange.com/questions/82923/proper-way-to-add-a-user-account-via-bash-script by Ulrich SchwarzJoseph R. . 我必须做的主要事情是添加-s /bin/bash到我现有的useradd命令中并删除-p password需要加密密码的命令。

sudo su -c "useradd mynewuser -s /bin/bash -m -g $PRIMARYGRP -G $MYGROUP"
Run Code Online (Sandbox Code Playgroud)

然后这样做:

sudo chpasswd << 'END'
mynewuser:password
END
Run Code Online (Sandbox Code Playgroud)

  • `echo mynewuser:密码 | sudo chpasswd` 也有效。 (9认同)

小智 12

这将起作用。

sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | sudo chpasswd
Run Code Online (Sandbox Code Playgroud)