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

相關文章
相關標籤/搜索