shell脚本中添加用户并设置密码

有时候在初始化shell脚本中但愿能顺便建立用户并指定密码,使用useradd命令能够达到该效果:html

useradd -m -p encryptedPassword username

参数说明:shell

  • -m : 自动创建用户的登入目录;
  • -p encryptedPassword : 加密后的密码, 方法crypt()的返回值.
  • username 须要添加的用户名
怎么生成一个加密密码:

使用perl的crypt()方法便可加密明文密码,示例以下:bash

$ perl -e 'print crypt("password", "salt"),"\n"'

输出以下:加密

sa3tHJ3/KuYvI

对于useradd命令须要用到的加密密码,使用'password'做为盐,具体语法以下:code

$ password="1YelloDog@"
$ pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
$ echo $pass
paU5t8Al/qf6M

示例shell脚本用于建立用户:htm

adduser.ship

#!/bin/bash
# Script to add a user to Linux system
if [ $(id -u) -eq 0 ]; then
    read -p "Enter username : " username
    read -s -p "Enter password : " password
    egrep "^$username" /etc/passwd >/dev/null
    if [ $? -eq 0 ]; then
        echo "$username exists!"
        exit 1
    else
        pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
        useradd -m -p $pass $username
        [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
    fi
else
    echo "Only root may add a user to the system"
    exit 2
fi

在root用户下执行该脚本:ci

# ./adduser.sh
Enter username : roja
Enter password : HIDDEN
User has been added to system!
附本身使用的一段增长用户的shell:
...
#若是是生产环境,为了防止明文密码泄露,能够对shell脚本进行加密
password="py@123"
username="py"
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
useradd -m -p $pass $username
...

参考连接:it

https://www.cyberciti.biz/tips/howto-write-shell-script-to-add-user.htmlclass

相关文章
相关标签/搜索