我需要能够在我的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 ]#

当前回答

——stdin在Debian上不起作用。它说:

`passwd: unrecognized option '--stdin'`

这招对我很管用:

#useradd $USER
#echo "$USER:$SENHA" | chpasswd

在这里我们可以找到一些其他的好方法:

http://www.debian-administration.org/articles/668

其他回答

我知道我要过几年才会有这个想法,但我不敢相信居然没有人建议用户mod。

usermod --password `perl -e "print crypt('password','sa');"` root

如果有人想在旧的HPUX上执行此操作,您可以使用usermod.sam。

/usr/sam/lbin/usermod.sam -F -p `perl -e "print crypt('password','sa');"` username

只有当执行脚本的人是当前用户时才需要使用-F。当然,您不需要使用Perl来创建散列。您可以使用openssl或许多其他命令来代替它。

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

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

摘自@Tralemonkey

请使用sudo权限运行以下脚本,通过脚本创建用户。

注意:此脚本支持所有linux操作系统,如Redhat, Centos, Ubuntu, suse, kali, Arch, Bitname, BSD....等

#!/bin/bash
#author: bablish jaiswal
#purpos: Linux user creation with a storng password
clear
#echo "Hi, I am a function to create sudo user with strong password. Kindly share following information"
echo -e "\n\n\n"
printf "\e[6;33mHi, I am a function to create sudo user with a strong password. Kindly share following information\e[0m";echo
read -p "user name:- " name #input name
read -p "complete path for $name home directory? example: /home/$name :- " home #user home path
( useradd  -m -d $home $name -s /bin/bash ) > /dev/null 2>&1
pass=$(cat /dev/urandom |tr -dc "[[:graph:]]" |head -c16)
(echo -e "$pass\n$pass" | passwd $name ) > /dev/null 2>&1
echo " "
printf "\e[6;33m-----------------------------Copy below credentials-------------------------\e[0m";echo
echo -e "User:- $name\nHomeDir:- $home\npassword:- $pass"
#svalue=$(cat /etc/sudoers |grep -i root |grep -i all|tail -n1 |awk '{$1=""}1')
svalue=$(cat /etc/sudoers |grep -i root |grep -i all|tail -n1 |awk '{print $2}')
echo "${name} ${svalue} NOPASSWD:ALL" >> /etc/sudoers && echo “Remark:- User $name is a sudo user”

来自IBM (https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.cmds1/chpasswd.htm):)

创建一个文本文件,输入text.txt,并按如下方式填充用户:密码对:

user1:password1
user2:password2
...
usern:passwordn

保存“text.txt”文件并运行

cat text.txt | chpassword

就是这样。该解决方案是(a)可伸缩的,(b)不需要在命令行上打印密码。

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

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

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