创建一个可在 Linux 中自动创建管理员用户的工作 bash 脚本

创建一个可在 Linux 中自动创建管理员用户的工作 bash 脚本

下面的脚本是我已经尝试过的,但它在运行时仍然要求我提供用户的密码和其他信息。

#!/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

相关内容