1. 程式人生 > >shell指令碼建立使用者並設定密碼

shell指令碼建立使用者並設定密碼

0 背景

在非root使用者tseg下建立新的使用者ls並設定密碼123。

1 命令列下新增使用者及密碼

如果使用命令列時我們需要這樣做:

#建立使用者ls
sudo useradd ls
#為ls使用者設定密碼
sudo passwd ls

可以看到,要想完成此動作需要root許可權。

2 shell指令碼下新增使用者和設定密碼

因為新增使用者和設定密碼需要root許可權,所以在非root使用者下需要使用sudo,但是sudo的每次使用會需要密碼,為避免輸入,在此把sudo設為免密碼。

//進入/etc/sudoers檔案
sudo vim /etc/sudoers
//為tseg使用者設定免密碼,在 “root   ALL
=(ALL) ALL” 之後新增或修改下面這句 tseg ALL=(ALL) NOPASSWD:ALL

建立使用者,設定密碼

#!/bin/sh

#設定變數name接收第一個引數(要建立的使用者名稱),$n表示第n個引數,且=兩邊不能有空格
name=$1
#設定變數pass接收第二個引數(要為其設定的密碼)
pass=$2
#echo語句會輸出到控制檯,${變數}或者 $變數 表示變數代表的字串
echo "you are setting username : ${name}"
echo "you are setting password : $pass for ${name}
"
#新增使用者$name,此處sudo需要設定為無密碼,後面將會作出說明 sudo useradd $name #如果上一個命令正常執行,則輸出成功,否則提示失敗並以非正常狀態退出程式 # $?表示上一個命令的執行狀態,-eq表示等於,[ 也是一個命令 # if fi 是成對使用的,後面是前面的倒置,很多這樣的用法。 if [ $? -eq 0 ];then echo "user ${name} is created successfully!!!" else echo "user ${name} is created failly!!!" exit 1 fi #sudo passwd $name會要求填入密碼,下面將$pass作為密碼傳入
echo $pass | sudo passwd $name --stdin &>/dev/null if [ $? -eq 0 ];then echo "${name}'s password is set successfully" else echo "${name}'s password is set failly!!!" fi