shell腳本中添加用戶並設置密碼


有時候在初始化shell腳本中希望能順便創建用戶並指定密碼,使用useradd命令可以達到該效果:

useradd -m -p encryptedPassword username

參數說明:

  • -m : 自動建立用戶的登入目錄;
  • -p encryptedPassword : 加密后的密碼, 方法crypt()的返回值.
  • username 需要添加的用戶名
怎么生成一個加密密碼:

使用perl的crypt()方法即可加密明文密碼,示例如下:

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

輸出如下:

sa3tHJ3/KuYvI

對於useradd命令需要用到的加密密碼,使用'password'作為鹽,具體語法如下:

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

示例shell腳本用於創建用戶:

adduser.sh

#!/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用戶下執行該腳本:

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

參考鏈接:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM