使用者賬戶管理和磁盤配額
一、passwd和shadow配置檔案
1. /etc/passwd:使用者賬戶配置檔案,用來存放使用者的基本資訊;
【passwd配置檔案詳解】cat /etc/passwd
rjxy | : | x | : | 508 | : | 508 | : | : | /home/rjxy | : | /bin/bash |
使用者名 | 密碼,真實密碼存放在/etc/shadow檔案中 | 使用者辨別号UID | 組群辨別号GID | 使用者名全稱,可以不設定 | 使用者宿主目錄 | 使用者的shell類型,有bash、sh和nologin三種,預設為bash |
【shell】是指“提供使用者使用界面”的軟體(指令解析器)。它類似于DOS下的command.com和後來的cmd.exe。它接收使用者指令,然後調用相應的應用程式。同時它又是一種程式設計語言。作為指令語言,它互動式解釋和執行使用者輸入的指令或者自動地解釋和執行預先設定好的一連串的指令;作為程式設計語言,它定義了各種變量和參數,并提供了許多在高階語言中才具有的控制結構,包括循環和分支。
【注意】shell為/sbin/nologin表示該使用者在本地沒有登入權限,如果用su切換使用者,會提示無法登入。一般ftp使用者是這種shell,因為ftp使用者一般不需要在本地登入。
2. /etc/shadow:影子檔案,存放使用者的真實密碼(加密)和有效期限等資訊;
【shadow配置檔案詳解】cat /etc/shadow
rjxy | : | $jlsflsdfsdjfkjfdsjfd | : | 15636 | : | : | 99999 | : | 7 | : | : | : |
使用者名 | 加密後的真實密碼。 【注意】如果密碼前面有“!”或者“!!”表示該使用者的密碼被鎖定,不能登入 | 上次修改密碼的時間,從1970年1月1日開始算的天數 | 兩次修改密碼間隔最少的天數,若為0表示禁用此功能 | 兩次修改密碼間隔最多的天數,若為0表示禁用此功能 | 提前多少天警告使用者密碼将過期 | 密碼過期之後多少天禁用此使用者 | 使用者過期的日期,依然是從1970年1月1日開始算的天數 |
二、字元界面下使用者賬戶的設定
1. 建立使用者賬戶:useradd,建立新賬戶,然後為新使用者配置設定使用者号、使用者群組、宿主目錄和登入shell等
文法:useradd 【選項】 使用者名
-u:指定使用者的UID,一般情況下,使用者的UID 是唯一值,如果加上“-o”選項,則可以給不同使用者設定相同的UID。UID 的數值隻能是0 或者正整數。
-d:指定賬戶登入時所使用的宿主目錄
-s:設定使用者登入後使用的shell 類型
-g:設定使用者的屬組,即使用者所屬的主組群。設定時可以用組群的名稱或者組群的GID。屬組的組群名和GID 必須是已經存在的名稱和GID
u 新使用者賬号是被鎖定的,無法使用,必須使用passwd設定密碼後才能用。
① useradd test #建立使用者“test”
【檢視已經建立的使用者】cat /etc/passwd |grep test #可以看到使用者在/etc/passwd檔案中已經添加了test使用者的資訊,此時test使用者不可登入,因為還沒有設定密碼。
a) cat /etc/shadow|grep test #shadow為影子檔案,存放使用者的真實密碼
b) passwd test #設定密碼
cat /etc/shadow|grep test #對比a)和b)
② useradd –u 510 test2 #建立使用者test2,并設其UID為510
cat /etc/passwd|grep test2
③ useradd –d /home/abc xyz #建立使用者xyz,并設其宿主目錄為/home/abc
cat /etc/passwd|grep xyz
④ useradd –g rjxy abc #把使用者abc所屬的組群更改為rjxy
cat /etc/passwd
⑤ id abc #檢視使用者的ID資訊
【顯示結果】uid=512(abc) gid=500(rjxy) 組=500(rjxy)
uid:使用者ID是512;
gid:使用者組群ID是500,即rjxy組;
組:使用者所屬的所有組,即使用者不一定隻屬于一個組,如果有多個組,會在這裡顯示;
⑥ useradd -g rjxy -u 550 tq #建立使用者tq,其uid為550,屬于rjxy組群
cat /etc/passwd|grep tq
★ useradd –o –u 0 test3 #建立使用者test3,并設其uid為0
【注意】uid是識别使用者身份的唯一辨別,設定相同的uid,相當于多個賬戶共用一個uid,但是身份僅僅是第一個使用該uid的那個賬戶的身份,擁有相同uid的賬戶對互相的檔案具有相同的權限。uid=0表示該使用者和root的uid一緻,即該使用者的身份就是root(隻是名字不同,但是身份相同),可用su test3切換使用者,結果為root登入。
如果要為多個使用者設定相同的UID,需要用“-o”參數
2. 修改使用者賬戶:usermod
文法:useradd 【選項】 使用者名
-l:更改使用者名;
-s:修改使用者登入後所使用的shell類型;
-u:修改使用者的UID值;
-c:修改使用者的全稱;
-d:修改使用者登入時的宿主目錄,如果加上“-m”選項,使用者的舊目錄會移動到新目錄,如果舊目錄不存在,則自動建立新目錄;
-e:修改使用者的有效期;
-L:鎖定使用者;
-U:解鎖使用者。
① usermod -d /home/aaa test2 #把使用者test2的宿主目錄移至/home/aaa,若目錄/home/aaa不存在,需先用mkdir建立,并把啟動檔案複制進去,否則在登入時會出問題;
② usermod -d /home/bbb –m test2
【注意】用ls /home檢視①和②運作的結果,若是①,原test2目錄還儲存,且/home/aaa目錄不會自動建立;若是②,則原/home/aaa目錄自動改為/home/bbb
③ useradd test6 #建立使用者test6
su test6 #可切換至test6使用者
cat /etc/passwd
usermod -l taxi test6 #将test6的名字改為taxi
su test6 #無法切換到test6使用者,因為使用者名已經改為taxi,隻能su taxi
cat /etc/passwd
④ usermod –g test taxi #修改taxi群組為test【test組群必須事先建立】
⑤ usermod –L taxi #鎖定賬戶
usermod –U taxi #解鎖
此外,passwd –l taxi和passwd –u taxi也可用于鎖定和解鎖
passwd –S taxi #檢視使用者狀态
【注意】密碼鎖定後,不能登入該使用者,提示密碼錯誤,但是可以從root賬戶直接切換到該使用者(不需要輸入密碼)
⑥ usermod –e 01/01/1970 taxi #設定有效期限,該時間已經過期,是以使用者taxi無法登入
cat /etc/shadow |grep taxi
su taxi #注意,不要從root中切換使用者,可切換到rjxy使用者,再切換到taxi使用者,即可出現提示,該賬戶已失效
3. 删除或禁止賬戶:userdel
文法:useradd 【-r】使用者名
-r:在删除使用者的同時,把使用者的宿主目錄以及本地郵件存儲目錄也一塊删除
① userdel taxi #删除賬戶,但是保留宿主目錄
ls /home
userdel –r tq #删除賬戶,同時删除宿主目錄
ls /home
三、一些配置檔案
1. /etc/skel目錄
存放使用者啟動檔案,由root使用者管理,建立使用者後自動複制目錄下的啟動檔案到新使用者宿主目錄下。啟動檔案都是隐藏檔案,需要加“–a ”參數檢視。
① ls –la /etc/skel
② ls –la /home/rjxy
【注意】提示“.gvfs檔案無法通路,權限不夠”(.gvfs檔案是GNOME桌面系統的虛拟檔案系統,使用者可以通過gvfs通路FTP、SMB等遠端資料)
【解決方法】umount .gvfs
2. /etc/login.defs #可檢視UID和GID的允許範圍
① cat /etc/login.defs |grep UID
② cat /etc/login.defs |grep GID
3. /etc/default/useradd #用useradd指令建立使用者時的規則檔案
四、group和gshadow配置檔案
1. /etc/group:使用者組群配置檔案
【注意】一個使用者可以屬于一個或多個組群,同一個組群内的使用者之間有相似特性。
★ 安全性
a 若某使用者屬于root組,則其可以浏覽root使用者的宿主目錄(ls –ld /root可以看到,/root目錄對于root群組可讀);
b 若root使用者把某個檔案權限對組群放開,則組群所有使用者都可修改此檔案;
【注意】若某個使用者檔案非常重要,應讓其擁有獨立的組群,或把使用者的檔案權限設為完全私有!
【group配置檔案詳解】cat /etc/group
root: | x: | 0: | root,bin,daemon |
使用者組群名稱 | 加密後的密碼,真實密碼放在/etc/gshadow中 | GID 普通群組GID從500開始 | 組群成員,不包括以這個組作為主組的成員 |
① 檢視GID範圍:cat/etc/login.defs|grep GID #也可以查UID的範圍
② cat /etc/group|grep rjxy #組群成員沒有内容,因為不顯示以這個組作為主組的成員。
【gshadow配置檔案詳解】cat /etc/gshadow
root: | : | : | root |
組群名稱 | 密碼 | 組群的管理者,若為root則省略 | 組群成員清單 |
五、字元界面下組群賬戶的設定
1. 建立組群:groupadd
文法:groupadd 【選項】組群名
-g:指定組群的GID,一般情況下,使用者的GID 是唯一值,如果加上“-o”選項,則可以給不同使用者設定相同的GID。GID 的數值隻能是0 或者正整數。
-r:建立系統組群(GID<500)。
① groupadd abc
cat /etc/group|grep abc
② groupadd -g 800 bcd #建立組群bcd,GID=800
cat /etc/group|grep bcd
③ groupadd –r qqq #建立系統組群qqq(GID < 500)
cat /etc/group|grep qqq
2. 更改組群屬性
文法:groupmod 【選項】組群名
-g:設定組群的GID;
-n:設定新組群名稱;
① groupmod –g 900 bcd #改GID
② groupmod –n xyz bcd #把組群bcd改名為xyz
cat /etc/group
③ groupmod –g 900 –o cde #設定重複GID
3. 删除組群
文法:groupdel 組群名
① groupdel xyz #若組群中包含使用者,需先删除使用者
六、建立使用者群組群的特殊方法:修改使用者群組群配置檔案來添加使用者群組群
1. 修改配置檔案
1) 修改/etc/passwd
① 添加使用者記錄:vi /etc/passwd
test0:x:508:508 | : | : | /home/test0:/bin/bash |
使用者全名 |
2) 執行pwconv,讓/etc/passwd和/etc/shadow同步,然後檢視是否同步
① cat /etc/shadow
pwconv
cat /etc/shadow #test0的資訊同步到了/etc/shadow中
3) 修改/etc/group,添加私有組群
① vi /etc/group
添加内容“test0:x:508:”
② grpconv同步/etc/group和/etc/gshadow檔案
grpconv
cat /etc/gshadow #組群test0的資訊同步到了/etc/gshadow中
2. 修改宿主目錄
1) 建立使用者主目錄,并把啟動檔案複制過去
① mkdir /home/test0
② cp -r /etc/skel /home/test0 ×
ls -a /home/test0
③ cp -r /etc/skel/. /home/test0 √
ls -a /home/test0
2) 改變新增使用者宿主目錄的屬主和權限
① ls -ld /home/test0 #檢視/home/test0目錄的屬主和權限(屬于root)
② chown -R test0.test0 /home/test0 #把/home/test0的屬主和屬組都改為test0(第一個test0為屬主,第二個test0為屬組),參數R為遞歸,即對目錄和目錄下所有的檔案和子目錄都做修改
③ chmod 700 /home/test0 #改變宿主目錄的讀寫權限,僅test0具有所有權限
④ ls -ld /home/test0
3. 設定新使用者的密碼
passwd test0
4. 測試使用者是否添加成功
① su test0
【注意】此時若指令提示符為“bash -4.1”,表示使用者宿主目錄有問題
此時ls -a /home/test0檢視,如果是如下内容,表示第4)步複制啟動檔案時出錯。

應該為:cp -r /etc/skel/. /home/test0
七、使用者群組群維護指令
1. passwd
① passwd #設定目前使用者密碼
② passwd test0 #設定指定使用者密碼
③ passwd -l test0 #鎖定test0密碼,其無法登入
④ passwd -u test0 #解鎖test0
⑤ cat /etc/shadow |grep test0
passwd -d test0 #删除密碼
cat /etc/shadow |grep test0
2. su:切換使用者
3. pwck:檢驗使用者配置檔案/etc/passwd和/etc/shadow内容是否合法完整
① pwck
② rm -rf /home/test0
pwck
八、賬戶資訊顯示
1. finger
① finger test0 #顯示test0的資訊
② finger #顯示所有登入使用者的資訊
可在tty2中登入root使用者,再回到圖形界面用finger檢視,然後在tty2中退出root,再用finger檢視,比較結果
2. id:顯示使用者的UID、GID和所屬組群
3. w:詳細查詢目前已登入的使用者
4. who:顯示已登入使用者的簡單資訊
九、圖形界面下使用者群組群的配置
系統→管理→使用者群組群
十、配置磁盤配額:為新使用者“ttt”配置磁盤配額
【磁盤配額】可對指定使用者配置磁盤塊(Blocks)或者内節點(Inode),以限制使用者對磁盤空間使用的大小,前提是系統中必須安裝quota軟體包,可通過rpm –qa|grep quota檢視;
【Inode】内節點,每個檔案有1個,儲存所有者身份和權限,以及時間資訊(不儲存檔案名,檔案名存放在目錄項dentry裡),可通過“ls -i 檔案名”來檢視
1. 建立檔案系統/dev/sda5
① fdisk /dev/sda #建立擴充分區和邏輯分區
n→e→4;n→l;w
② 重新開機Redhat
③ mkfs.ext3 /dev/sda5
2. 啟用磁盤配額功能:修改/etc/fstab檔案,添加要配置的檔案系統,并添加上usrquota(使用者配額)和grpquota(組群配額)選項;
【例】把/dev/sda5挂載到/mnt/aa,并開啟/dev/sda6的使用者配額群組群配額
1) vi /etc/fstab,添加如下代碼:
/dev/sda5 | /mnt/aa | ext3 | defaults,usrquota,grpquota |
【注意】可用mount挂載,但重新開機後失效,是以需要直接修改/etc/fstab配置檔案。
2) mkdir /mnt/aa
3) init 6 #重新開機Redhat,重新挂載檔案系統
4) mount –s #重新開機Redhat之後,檢視/dev/sda5分區的挂載情況
5) quotacheck:重新挂載檔案系統後,系統就能夠使用磁盤配額了,接着需要用quotacheck 指令檢查啟用了配額的檔案系統,并為檔案系統建立配額檔案aquota.user和quota.group,最後建立目前磁盤用量表。
① quotacheck –a #在啟用了磁盤配額功能的分區生成使用者配額檔案
【注意】如果運作指令後,可能提示沒有權限,這是由于selinux防火牆的問題,需要先把selinux防火牆關閉
【臨時關閉selinux防火牆】 setenforce 0
② quotacheck –a #關閉防火牆後再次生成使用者配額檔案
③ ls -a /mnt/aa #檢查使用者配額檔案是否生成
④ quotacheck–cg /mnt/aa #建立組群配額檔案
⑤ ls –a/mnt/aa #檢查組群配額檔案是否生成
⑥ quotacheck –av #檔案系統建立後,生成每個啟用了配額的檔案系統的目前磁盤用量表
6) 建立使用者“ttt”,并未該使用者配置配額
① 建立使用者并設定密碼
useradd ttt
passwd ttt
② 為ttt設定配額
edquota ttt
【設定為】/dev/sda6 0 2000 5000 0 3 5,即軟限制為2M,硬限制為5M;建立檔案的個數軟限制為3個,硬限制為5個
7) 給“ttt”使用者設定權限,可以對/media/aa目錄進行寫操作
① ls -ld /mnt/aa #檢視目錄/mnt/aa的權限
② chmod 777 /mnt/aa
③ ls -ld /mnt/aa
8) 開啟磁盤配額功能,即讓aquota.user和aquota.qroup兩個檔案的限制生效
quotaon -a或者quotaon /mnt/aa
3. 測試磁盤配額是否成功:即測試“ttt”使用者在/mnt/aa目錄下是否最多隻能建立5個檔案或目錄。
1) su ttt #切換到使用者“ttt”
2) cd /mnt/aa
touch file1
touch file2
touch file3
touch file4 #警告,使用量已經超過軟限額
touch file5
touch file6 #提示出錯,超出磁盤限額,此時mkdir file6同樣提示超出磁盤限額,即限額的“5”是檔案和目錄的總和!
3) quota ttt #檢視使用者ttt的磁盤配額情況