用戶管理

第1章 用戶

1.1 用戶及組配置文件:

1.1.1 /etc/passwd

存儲用戶信息,每一行表示一個用戶信息,有多少行就表示多少個用戶信息。

root : x : 0 : 0 : root : /root : /bin/bash

此文件由7個字段的數據組成,字段之間用分隔,格式如下:

1用戶名:2密碼:3用戶標識號UID4組標識號GID5個人資料:6主目錄:7命令解釋器

1.1.2 /etc/shadow

存儲用戶密碼信息文件

old : !! : 17749 : 0 : 99999 : 7 : : :

此文件由9個字段的數據組成,字段之間用分隔,格式如下:

1用戶名 2 密碼 3 最近改動密碼的日期 4 密碼不可被更動的天數 5 密碼需要重新變更的天數 6 密碼需要變更期限前的警告期限 7 密碼過期的恕限時間8帳號失效日期 9 保留

1.1.3 /etc/group

主要存儲組相關信息的文件

oldboy : x : 500 :

此文件由4個字段的數據組成,字段之間用分隔,格式如下:

1組名 2組密碼 3IDGID 4組成員

1.1.4 /etc/gshadow

主要用來存儲組密碼信息

oldboy : ! : :

此文件由4個字段的數據組成,字段之間用分隔,格式如下:

1組名 2組密碼 3組管理員 4用戶組成員

5、和創建用戶相關的目錄

1.1.5 /etc/skel

此目錄用來存放新用戶需要的所有基礎環境變量文件的目錄。


[oldboy@bogon ~]$ rm -f .bash* //刪除用戶家目錄下的環境變量後,退出

-bash-4.1$ //重新登錄

 

1.2 useradd命令工作原理

1、不帶任何參數使用添加用戶時,首先讀/etc/login.defs    /etc/default/useradd 預先定義的規則

2、根據設置的規則添加用戶,同時會向/etc/passwd  /etc/group文件添加新建的用戶和組但/etc/shadow   /etc/gshadow也會同步生成記錄

3、同時系統會根據/etc/login.defs    /etc/default/useradd文件中配置的信息建立用戶的家目錄,並複製/etc/skel中所有隱藏的環境配置文件到新用戶的家目錄中,以完成對用戶環境的初始化設置。


模擬故障:

1、useradd u1

2、passwd u1

3、在xshell裏新開一個窗口

ssh IP地址 //執行此命令

例如 :ssh 10.10.10.30

4、彈出窗口 輸入用戶名和密碼

5、在普通用戶的家目錄 ~ rm -rf .bash*

6、ls -a //發現.bash* 的文件全部刪除

7、exit //退出登錄

8、 ssh IP地址 //執行此命令在重新登錄一次,登錄後發現故障

cp /etc/skel/.bash* ~ //把/etc/skel/.bash* 下的所有.bash* 文件拷貝到 用戶的家目錄

Linux是一個多用戶、多任務的操作系統,如果要使用系統資源,就必須向系統管理員申請一個用戶,通過這個用戶進入系統,通過建立不同屬性的用戶實現
不同的作用或權限,可以合理利用和控制系統資源。

1.3 Linux系統中用戶分類:

1.3.1 管理員用戶

默認是root用戶,它的UID GID均爲0,系統安裝完成後自動生成的,默認通過它就可以登錄系統,擁有最高的管理權限。

1.3.2 普通用戶

由系統管理員root創建的,創建完成後可以登錄系統,但默認無法創建、修改和刪除任何管理員下的文件;UID500-65535

1.3.3 系統用戶(或虛擬用戶)

安裝系統後默認生成的用戶,大多數不能登錄系統,但它們是系統正常運行不可缺少的,它們的存在主要是爲了方便系統管理,滿足相應的系統進程對文件所屬用戶的要求;UID 1-499

1.4 用戶創建命令

1.4.1 useradd 命令創建用戶

-n 不創建以用戶名爲名的組

-c 創建用戶時,添加個人信息

-u 用戶ID值,這個值必須是唯一的

-s 用戶登錄後使用的shell

-g 指定用戶對應的組,對應的組必須在系統中存在

[root@localhost ~]# useradd agan

[root@localhost ~]# grep -w "agan" /etc/passwd

agan:x:504:504::/home/agan:/bin/bash

[root@localhost ~]# grep -w "agan" /etc/group

agan:x:504:

注:創建用戶的同時,並創建了一個以自己爲名的組

1.4.2 usermod 修改用戶信息

-c 修改用戶的個人信息,同useradd -c功能

-g 修改用戶對應的用戶組,同 useradd-d功能

-s 修改用戶登錄後使用的shell名稱,同useradd-s功能

-u 修改用戶的uid ,同useradd -u功能

-l 修改用戶的名稱

usermod -l u1 agan6

新名 已存在的名

1.4.3 userdel 刪除用戶

-f 強制刪除用戶

-r 刪除用戶的同時,刪除與用戶相關的所有文件(包含郵箱信息)

1.4.4 修改用戶密碼命令 passwd

--stdin //從標準輸入讀取密碼字符串

一條命令非人工交互設置密碼(企業使用技巧)

[root@localhost ~]# echo "123456" | passwd --stdin u1

Changing password for user u1.

passwd: all authentication tokens updated successfully.

注:這個命令在工作中批量設置密碼時很有用

 

批量更新用戶的密碼

[root@localhost gj]# chpasswd //命令輸入完,直接回車

root:123456 //格式 用戶名:密碼,用戶必須存在纔可以,一行一個用戶

u1:123456

u2:654321 //輸入完成後,直接ctrl+D 結束輸入

注:此命令有一個bagel,當一行輸入錯誤後,不能返回修改。

當使用useradd 命令批量創建用戶後,可以使用chpasswd 命令批量設置密碼或批量修改密碼。

 

把用戶和密碼字符串放到文件裏執行批量改密碼

[root@localhost gj]# cat passwd.txt

u1:123

u2:321

u3:123

[root@localhost gj]# chpasswd < passwd.txt

 

su的作用是變更爲其它使用者的身份,超級用戶除外,需要鍵入該使用者的密碼。

su 切換用戶卻不切換工作環境 , su - 同時切換用戶與工作環境

 

su的缺點造就了sudo的誕生

由於用戶通過 su root 命令直接獲取root權限,從而造成用戶的權限太大,也就可能給系統造成危險。

爲了既保證系統的安全又可以執行相應命令,sudo 也就以此誕生。

 

sudo作用:通過配置文件來限制用戶的權限 ,可以讓普通用戶在執行指定的命令或程序時,擁有超級用戶的權限。

sudo的工作過程如下:

1,當用戶執行sudo時,系統會主動尋找/etc/sudoers文件,判斷該用戶是否有執行sudo的權限

2,確認用戶具有可執行sudo的權限後,讓用戶輸入用戶自己的密碼確認

3,若密碼輸入成功,則開始執行sudo後續的命令

4,root執行sudo時不需要輸入密碼(因爲sudoers文件中有配置root ALL=(ALL) ALL這樣一條規則)

 

給普通用戶u1提權,讓普通用戶可以查看root用戶的家目錄;普通用戶可以使用useradd命令,創建新用戶

1) useradd u1

2) visudo=vi打開/etc/sudoers文件 或 vim /etc/sudoers

注:visudo會檢查內部語法,避免用戶輸入錯誤信息,所以我們一般使用visudo,編輯此文件要用root權限

3) 編輯文件的第98行,編輯完成後,wq! 強制保存退出

root ALL=(ALL) ALL

u1 ALL=(ALL) /bin/ls,/usr/sbin/useradd

4)使用u1 用戶登錄測試

sudo useradd u11 //可成功創建用戶,證明提權成功

sudo ls /root //可查看root的家,證明提權成功

5) sudo -l //-l 參數是列出當前用戶可執行的命令,但只有在sudoers文件裏的用戶才能使用該選項。

 

1.4.5 w命令

用於顯示目前登入系統的用戶信息。

單獨執行 w 指令會顯示所有的用戶,您也可指定用戶名稱,僅顯示某位用戶的相關信息。




w –h

不打印頭信息;


1.4.6 id命令

查看用戶的UID GID

[root@bogon /]# id user6

uid=8897(user6) gid=8899(z11) groups=8899(z11)

[root@bogon /]# id -g user6

8899

[root@bogon /]# id -G user6

8899

[root@bogon /]# id -u user6

8897

1.4.7 last命令

用了顯示用戶登錄情況,以下是直接顯示固定行數的記錄:

lastlog 命令 顯示linux中所有用戶最近一次遠程登錄的信息

第2章 用戶組

Linux系統中的用戶組(group)就是具有相同特徵的用戶的集合;

有時我們需要讓多個用戶具有相同的權限,就要創建組;

將用戶分組是Linux系統中對用戶進行管理及控制訪問權限的一種手段;

一個用戶可以加入到多個組。

2.1 添加用戶組命令 groupadd

-g gid 指定用戶組的GIDGID唯一不能爲負數,如果不指定GID500開始

-f 新增一個組,強制覆蓋一個已存在的組,GID、組成員不會改變。

添加組z11,查看添加後的組信息

[root@bogon ~]# groupadd z11

[root@bogon ~]# grep "z11" /etc/group

z11:x:8895:

[root@bogon ~]# tail -1 /etc/group

z11:x:8895:

2.2 gpasswd 將已存在的用戶加入到組中的命令

-a:添加一個用戶到組,可以追加到組

-M:添加多個用戶到組,覆蓋之前的組成員

-d:從組刪除用戶

把user1用戶添加到z1,並且查看是否添加成功

[root@bogon gj]# groupadd z1

[root@bogon gj]# useradd user1

[root@bogon gj]# gpasswd -a user1 z1

Adding user user1 to group z1

[root@bogon gj]# grep "z1" /etc/group

z1:x:8896:user1

-a選項只能添加一個用戶,需要同時添加多用戶時,使用-M參數

同時添加user2、user3用戶到z1組(先創建user2、user3用戶)

[root@bogon gj]# gpasswd -M user2,user3 z1

[root@bogon gj]# grep "z1" /etc/group

z1:x:8896:user2,user3

注:使用-M參數添加多個用戶時,多用戶之間使用逗號分割;添加批量用戶時,先使用-a參數,在使用-M參數,就會覆蓋之前添加過的用戶;所以添加多用戶時,先使用-M 參數。

 

將user2用戶從組中刪除

[root@bogon gj]# gpasswd -d user2 z1

Removing user user2 from group z1

[root@bogon gj]# grep "z1" /etc/group

z1:x:8896:user3

2.3 修改組信息的命令 groupmod

-n 修改組名

-g 修改GID

groupmod -n 新名 舊名

groupmod -g 8888 dir

 

修改z1組的GID

[root@bogon gj]# grep "z1" /etc/group

z1:x:8896:user3

[root@bogon gj]# groupmod -g 8888 z1

[root@bogon gj]# grep "z1" /etc/group

z1:x:8888:user3

 

修改z1組的組名爲newz1

[root@bogon gj]# grep "z1" /etc/group

1:x:8888:user3

[root@bogon gj]# groupmod -n z1new z1

[root@bogon gj]# grep "z1" /etc/group

z1new:x:8888:user3

2.4 groupdel 刪除組的命令

刪除組,刪除組後,用戶名依然存在

附加命令: 查看用戶屬於到哪些組,使用命令:groups

groups 用戶名

[root@bogon gj]# groups user1

user1 : user1 z2

批量創建用戶:

創建一個文件,此文件的擴展名必須爲*.sh

vim aa.sh

#!/bin/bash

for ((i=1;i<=10;i++));

{

useradd gj$i

 

}

echo "批量用戶成功創建完成啦!!!"

 

2、sh aa.sh

3、查看腳本是否成功

ls /home

注:如果在home裏看到,批量創建的用戶,代表成功

批量創建30個用戶,併爲30個用戶批量設置密碼,以腳本形式。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章