我需要能够在我的Linux (Fedora 10)上创建用户帐户,并通过bash脚本自动分配密码(如果需要,也可以采用其他方式)。

通过Bash创建用户很容易,例如:

[whoever@server ]#  /usr/sbin/useradd newuser

是否可以在Bash中分配密码,功能类似于此,但自动:

[whoever@server ]# passwd newuser
Changing password for user testpass.
New UNIX password:
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
[whoever@server ]#

当前回答

下面是我在Ubuntu 14.04上测试的。它是一个不需要任何用户输入的一行程序。

sudo useradd -p $(openssl passwd -1 $PASS) $USERNAME

摘自@Tralemonkey

其他回答

对于RedHat / CentOS,下面是创建用户、添加密码并使用户成为sudoer的代码:

#!/bin/sh
echo -n "Enter username: "
read uname

echo -n "Enter password: "
read -s passwd

adduser "$uname"
echo $uname:$passwd | sudo chpasswd

gpasswd wheel -a $uname

下面的代码可以在Ubuntu 14.04中运行。在其他版本/linux变体中使用它之前请尝试一下。

# quietly add a user without password
adduser --quiet --disabled-password --shell /bin/bash --home /home/newuser --gecos "User" newuser

# set password
echo "newuser:newpassword" | chpasswd

我在自己的shell脚本中进行了测试。

$new_username表示新创建的用户 $new_password表示新密码

是被久远

echo "$new_password" | passwd --stdin "$new_username"

对于 Debian/Ubuntu

echo "$new_username:$new_password" | chpasswd

对于 OpenSUSE

echo -e "$new_password\n$new_password" | passwd "$new_username"

我也问过自己同样的问题,但不想依赖Python脚本。

这是在一个bash行中添加一个具有已定义密码的用户的行:

useradd -p $(openssl passwd -crypt $PASS) $USER

您可以运行passwd命令并向其发送管道输入。所以,你可以这样做:

echo thePassword | passwd theUsername --stdin