这是我现在使用的脚本代码:
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 <<< ""