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

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

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

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"

这种方法在 openSuse 上效果很好。但它在以下操作系统上创建的用户帐户存在一些问题:Ubuntu所以我在这里寻求帮助。

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

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

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

谢谢

答案1

我的解决方案在这里提供:https://unix.stackexchange.com/questions/82923/proper-way-to-add-a-user-account-via-bash-script 经过乌尔里希·施瓦茨约瑟夫·R。。我要做的主要事情是添加-s /bin/bash到我现有的useradd命令中并删除-p password需要加密密码的命令。

sudo su -c "useradd mynewuser -s /bin/bash -m -g $PRIMARYGRP -G $MYGROUP"

然后执行以下操作:

sudo chpasswd << 'END'
mynewuser:password
END

答案2

这会起作用。

sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | sudo chpasswd

答案3

我的脚本会自动构建一个使用 ssh 密钥登录且无需密码的服务账户

#add service group/user
addgroup service-runner
useradd devops-service --create-home --shell /bin/bash --groups service-runner
#gpasswd -a devops-service sudo #allowing sudo requires password, and not a good idea for a service account.
mkdir /home/devops-service/.ssh
chmod 700 /home/devops-service/.ssh
cat [email protected] >> /home/devops-service/.ssh/authorized_keys
chown devops-service:devops-service /home/devops-service -R

答案4

我希望这个单行使用此处字符串可能会帮助某人:

adduser someuser --disabled-password <<< ""

相关内容