Linux運維常用shell腳本之用戶管理實例

1、用shell腳本批量建立Linux用戶

實現要求:創建用戶student1到student50,指定組為student組!而且每個用戶需要設定一個不同的密碼!

Linux運維常用shell腳本之用戶管理實例

【腳本實現如下:說明:Linux下 Passwd有參數 --stdin This option is used to indicate that passwd should read the new password from standard input, which can be a pipe. 所以linux下自動改變用戶密碼的辦法就是: Echo 密碼 |passwd –stdin 用戶名】-------------------設置相同的密碼------------------------

Linux運維常用shell腳本之用戶管理實例

說明:

echo -n 不換行輸出:

$echo -n "123"

$echo "456"

最終輸出 123456

而不是

123

456

echo -e 處理特殊字符:

\n 換行且光標移至行首 】

ok,就這麼一個簡單的腳本,就可以再系統裡批量生成賬號了。而且密碼跟賬號的名字一樣。

這就是for do done語句用法。


2、批量創建用戶

Linux運維常用shell腳本之用戶管理實例

3.批量添加組用戶

添加一個新組為class1,然後添加屬於這個組的30個用戶,用戶名的形式為stdxx,其中xx從01到30

參考答案:

Linux運維常用shell腳本之用戶管理實例

4.批量刪除用戶

實現自動刪除50個賬號的功能。賬號名為stud1至stud50。

參考腳本:

Linux運維常用shell腳本之用戶管理實例

5.批量修改用戶密碼

舊密碼SSH主機信息old_info文件:

# ip user passwd port

192.168.18.217 root 123456 22

192.168.18.218 root 123456 22

修改密碼腳本:

Linux運維常用shell腳本之用戶管理實例

生成新密碼new_info文件:

192.168.18.217 root n8wX3mU% 22

192.168.18.218 root c87;ZnnL 22

作為一個系統管理員,可能要經常的為機器添加用戶,可能是在一臺機器上添加很多用戶,也有可能是在很多機器上要添加同一個用戶。

基本上,批量添加用戶有兩種方式,一是用useradd + passwd命令配合腳本來添加,二是用newusers+chpasswd來添加。

第一個方法合適用來在不同的機器上添加不同的用戶,或者在同一臺機器上添加大量的規則命名的用戶。第二個方法可用於在同一臺機器上添加大量的用戶名單,如將A機上的用戶全部添加到B機上。

方法一:useradd + passwd命令配合腳本來添加

其中users.list文件內容如下:

johnson

lily

kelly

執行結果如下圖所示:

由腳本知,用戶的初始密碼被設為用戶名+123,大家可以按需修改使用。

方法二、使用while語句

#!/bin/bash

user_info=/root/adduser.txt

useradd=/usr/sbin/useradd

passwd=/usr/bin/passwd

cut=/bin/cut

while read lines

do

username=`echo $lines | $cut -f1 -d' '`

password=`echo $lines | $cut -f2 -d' '`

$useradd $username

if [ $? -ne 0 ];then

echo "$username cunzai,bunengxiugaimima"

else

echo $password | $passwd

fi

done < $user_info

其中adduser.txt存的文件為

username001 password001

username002 password002

username003 password003

username004 password004

方法三、newusers+chpasswd批量添加用戶

1、首先我們創建用戶文件和密碼文件;

我們要創建包含新用戶的文件userfile.txt ;另一個是為新添加的用戶設置密碼的userpwdfile.txt;

[root@localhost ~]# touch userfile.txt

[root@localhost ~]# touch userpwdfile.txt

然後用文本編輯器打開文件userfile.txt,添加如下內容;

win00:x:520:520::/home/win00:/sbin/nologin

win01:x:521:521::/home/win01:/sbin/nologin

win02:x:522:522::/home/win02:/sbin/nologin

win03:x:523:523::/home/win03:/sbin/nologin

win04:x:524:524::/home/win04:/sbin/nologin

win05:x:525:525::/home/win05:/sbin/nologin

win06:x:526:526::/home/win06:/sbin/nologin

win07:x:527:527::/home/win07:/sbin/nologin

win08:x:528:528::/home/win08:/sbin/nologin

win09:x:529:529::/home/win09:/sbin/nologin

userfile.txt 文件內容格式和 /etc/passwd 的格式是一樣的,必須嚴格按照/etc/passwd 的格式來書寫;上面所添加的用戶都不能登錄系統,但完全能用於ftp登錄,但您得在相應ftp服務器的配置文件中打開讓本地用戶有讀寫權限;如果您想讓上面的部份用戶可以登錄系統,可以把SHELL類似改一改,比如改成/bin/bash ;

我們再來書寫新增用戶的密碼文件userpwdfile.txt內容;這個文件的內容中的用戶名要與 userfile.txt用戶名相同且嚴格按照“用戶名:密碼”的格式來寫,一個用戶一行;也就是說我們先是添加了win00到win09的用戶,現在要為這些用戶更新密碼;比如下面的;

win00:123456

win01:654321

win02:123321

win03:qweewq

win04:google

win05:adadwc

win06:wsscee

win07:xxec32

win08:543wew

win09:3ce3wf

2、用newusers批量添加用戶,此時用戶是沒有密碼的

[root@localhost ~]# newusers userfile.txt

2、執行命令/usr/sbin/pwunconv,將/etc/shadow產生的shadow密碼解碼,然後回寫到/etc/passwd中, 並將/etc/shadow的shadow密碼欄刪掉。這是為了方便下一步的密碼轉換工作,即先取消shadow password功能,關閉影子文件。

[root@localhost ~]# pwunconv

3、 用chpasswd批量修改密碼

[root@localhost ~]# chpasswd < userpwdfile.txt

4、最後不要忘了恢復影子文件,保證安全,您可以通過下面的命令來映射到 /etc/shadow文件名

[root@localhost ~]# pwconv


6、批量權限控制腳本

設計一個Shell程序,在/userdata目錄下建立50個目錄,即user1~user50,並設置每個目錄的權限,其中其他用戶的權限為:讀;文件所有者的權限為:讀、寫、執行;文件所有者所在組的權限為:讀、執行。

如下:

Linux運維常用shell腳本之用戶管理實例

後面小編會分享更多Linux和DBA運營方面的乾貨,感興趣的朋友走一波關注哩~

Linux運維常用shell腳本之用戶管理實例


分享到:


相關文章: