第1章 使用者
存儲使用者資訊,每一行表示一個使用者資訊,有多少行就表示多少個使用者資訊。
root : x : 0 : 0 : root : /root : /bin/bash
此檔案由7個字段的資料組成,字段之間用“:”分隔,格式如下:
1使用者名:2密碼:3使用者辨別号UID:4組辨別号GID:5個人資料:6主目錄:7指令解釋器
存儲使用者密碼資訊檔案
old : !! : 17749 : 0 : 99999 : 7 : : :
此檔案由9個字段的資料組成,字段之間用“:”分隔,格式如下:
1使用者名 2 密碼 3 最近改動密碼的日期 4 密碼不可被更動的天數 5 密碼需要重新變更的天數 6 密碼需要變更期限前的警告期限 7 密碼過期的恕限時間8帳号失效日期 9 保留
主要存儲組相關資訊的檔案
oldboy : x : 500 :
此檔案由4個字段的資料組成,字段之間用“:”分隔,格式如下:
1組名 2組密碼 3組ID(GID) 4組成員
主要用來存儲組密碼資訊
oldboy : ! : :
1組名 2組密碼 3組管理者 4使用者組成員
5、和建立使用者相關的目錄
此目錄用來存放新使用者需要的所有基礎環境變量檔案的目錄。
[oldboy@bogon ~]$ rm -f .bash* //删除使用者家目錄下的環境變量後,退出
-bash-4.1$ //重新登入
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是一個多使用者、多任務的作業系統,如果要使用系統資源,就必須向系統管理者申請一個使用者,通過這個使用者進入系統,通過建立不同屬性的使用者實作
不同的作用或權限,可以合理利用和控制系統資源。
預設是root使用者,它的UID 和GID均為0,系統安裝完成後自動生成的,預設通過它就可以登入系統,擁有最高的管理權限。
由系統管理者root建立的,建立完成後可以登入系統,但預設無法建立、修改和删除任何管理者下的檔案;UID從500-65535
安裝系統後預設生成的使用者,大多數不能登入系統,但它們是系統正常運作不可缺少的,它們的存在主要是為了友善系統管理,滿足相應的系統程序對檔案所屬使用者的要求;UID從 1-499
-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:
注:建立使用者的同時,并建立了一個以自己為名的組
-c 修改使用者的個人資訊,同useradd 的-c功能
-g 修改使用者對應的使用者組,同 useradd的-d功能
-s 修改使用者登入後使用的shell名稱,同useradd的-s功能
-u 修改使用者的uid ,同useradd 的-u功能
-l 修改使用者的名稱
usermod -l u1 agan6
新名 已存在的名
-f 強制删除使用者
-r 删除使用者的同時,删除與使用者相關的所有檔案(包含郵箱資訊)
--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檔案裡的使用者才能使用該選項。
用于顯示目前登入系統的使用者資訊。
單獨執行 w 指令會顯示所有的使用者,您也可指定使用者名稱,僅顯示某位使用者的相關資訊。
w –h
不列印頭資訊;
檢視使用者的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
[root@bogon /]# id -u user6
8897
用了顯示使用者登入情況,以下是直接顯示固定行數的記錄:
lastlog 指令 顯示linux中所有使用者最近一次遠端登入的資訊
第2章 使用者組
Linux系統中的使用者組(group)就是具有相同特征的使用者的集合;
有時我們需要讓多個使用者具有相同的權限,就要建立組;
将使用者分組是Linux系統中對使用者進行管理及控制通路權限的一種手段;
一個使用者可以加入到多個組。
-g gid 指定使用者組的GID,GID唯一不能為負數,如果不指定GID從500開始
-f 新增一個組,強制覆寫一個已存在的組,GID、組成員不會改變。
添加組z11,檢視添加後的組資訊
[root@bogon ~]# groupadd z11
[root@bogon ~]# grep "z11" /etc/group
z11:x:8895:
[root@bogon ~]# tail -1 /etc/group
-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
z1:x:8896:user2,user3
注:使用-M參數添加多個使用者時,多使用者之間使用逗号分割;添加批量使用者時,先使用-a參數,在使用-M參數,就會覆寫之前添加過的使用者;是以添加多使用者時,先使用-M 參數。
将user2使用者從組中删除
[root@bogon gj]# gpasswd -d user2 z1
Removing user user2 from group z1
z1:x:8896:user3
-n 修改組名
-g 修改GID
groupmod -n 新名 舊名
groupmod -g 8888 dir
修改z1組的GID
[root@bogon gj]# groupmod -g 8888 z1
z1:x:8888:user3
修改z1組的組名為newz1
1:x:8888:user3
[root@bogon gj]# groupmod -n z1new z1
z1new:x:8888:user3
删除組,删除組後,使用者名依然存在
附加指令: 檢視使用者屬于到哪些組,使用指令: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個使用者批量設定密碼,以腳本形式。