下面的脚本是我已经尝试过的,但它在运行时仍然要求我提供用户的密码和其他信息。
#!/bin/bash
PASSWORD="somepassword"
USERNAME="default"
if id -u "$USERNAME" >/dev/null 2>&1; then
userdel -r -f $USERNAME
adduser --disabled-password --gecos "" $USERNAME
usermod -a -G sudo $USERNAME
echo $USERNAME:$PASSWORD | chpasswd
else
adduser $USERNAME
adduser --disabled-password --gecos "" $USERNAME
usermod -a -G sudo $USERNAME
echo $USERNAME:$PASSWORD | chpasswd
fi
答案1
警告:在脚本中保留未加密的密码是一个非常糟糕的主意。如果你仍然选择这样做,至少要通过root将文件的权限更改为600。这将保护它免受简单的攻击。
然后:
我看到的第一个问题是您adduser
在 else 部分调用了两次。
这将触发第一次执行,询问所有问题。
第二个电话工作正常。
另外,then 和 else 部分之间有很多通用选项,脚本可以写成这样:
#!/bin/bash
$PassWord="somepassword"
UserName="default"
if id -u "$UserName" >/dev/null 2>&1; then
userdel -r -f "$UserName"
fi
adduser --disabled-password --gecos "" "$UserName"
userdir=/home/"$UserName"
[[ -d $userdir ]] || mkdir "$userdir" # only needed for system users.
# which usually do not have a password.
usermod -a -G sudo "$UserName"
echo "$UserName:$PassWord" | chpasswd
答案2
adduser
如果您尝试在自治脚本中使用它,结果会很糟糕。我最终使用了很好的旧版本useradd
,这完全修复了我下面的脚本。
#!/bin/bash
PASSWORD="somepassword"
USERNAME="default"
if id -u "$USERNAME" >/dev/null 2>&1; then
userdel -r -f $USERNAME
useradd -m -p $PASSWORD -s /bin/bash $USERNAME
usermod -a -G sudo $USERNAME
echo $USERNAME:$PASSWORD | chpasswd
else
useradd -m -p $PASSWORD -s /bin/bash $USERNAME
usermod -a -G sudo $USERNAME
echo $USERNAME:$PASSWORD | chpasswd
fi