我正在尝试编写一个 linode stackscript,这是一个 bash 文件,当您构建新映像时,它会以 root 身份运行。它可以提示输入诸如 USER、KEY 以及可能的(但不理想)PASSWORD 等参数。
在脚本中我创建了一个用户“bob”,然后
adduser --disabled-password --gecos "" --shell /bin/bash $USER
adduser $USER sudo
我们正在创建具有证书但没有密码的用户,该用户一旦通过 SSH 登录,就无法使用 sudo,因为它会提示输入不存在的密码。
我认为这里有两个选项:
- 给它一个密码。不幸的是,没有通过参数执行此操作的选项,那么有没有一种方法可以在没有提示的情况下(非交互式)执行此操作?
- 修复它,这样鲍勃就不需要输入密码了。
答案1
不要禁用密码,而要创建一个没有密码的用户。
解决方法
adduser --disabled-password --gecos "" --shell /bin/bash $USER usermod -g sudo $USER passwd -d $USER
答案2
我找到了一个解决方案,使用选项 1。我以前没有听说过 chpasswd,但它似乎可以与无人值守脚本一起使用。现在用户有了 sudo 的密码。
添加用户 --disabled-password --gecos "" --shell /bin/bash $USER 添加用户 $USER sudo echo "$USER:$PASS" | sudo chpasswd