2018-05-28 《鳥哥的Linux私房菜 基礎學習篇(第四版)》 第13章 Linux 帳號管理與 ACL 權限設定 筆記

目錄:linux

一、/etc/passwd 用戶文件shell

二、shadow 用戶密碼文件
bash

三、/etc/group 羣組文件服務器

四、/etc/gshadow 羣組密碼文件網絡

五、用戶命令工具

  • useradd    命令新建用戶
  • passwd     命令設定新密碼
  • chage     更詳細的密碼參數的顯示與設定
  • usermod    帳號相關數據的微調
  • userdel     刪除用戶的相關數據
  • id       查詢某人或本身的相關 UID/GID 等等的信息
  • finger     顯示用戶相關的信息
  • chfn      更改本身賬號的相關信息
  • chsh      修改/etc/passwd文件的第段Shell

羣組相關命令:測試

  • groupadd    新增羣組
  • groupmod   進行 group 相關參數的修改
  • groupdel    刪除羣組
  • gpasswd    羣組管理員功能

rhcsa7 第5題ui

六、主機的細部權限規劃:ACL 的使用編碼

  • dmesg | grep -i acl  #檢查一下核心掛載時顯示的信息
  • setfacl        #設定某個目錄/文件的 ACL 規範
  • getfacl      #取得某個文件/目錄的 ACL 設定項目
  • rhcsa7 d6

 

 

跟使用者帳號有關的有兩個很是重要的文件,一個是管理使用者 UID/GID重要參數的 /etc/passwd ,一個則是專門管理密碼相關數據的 /etc/shadow。加密

跟使用者羣組有關的兩個文件:/etc/group 與 /etc/gshadow。

一、/etc/passwd 用戶文件

每一行都表明一個帳號,有幾行就表明有幾個帳號在你的系統中! 不過須要特別留意的是,裏頭不少帳號原本就是系統正常運做所必需要的,咱們能夠簡稱他爲系統帳號,例如 bin, daemon, adm, nobody 等等,這些帳號請不要隨意的殺掉他呢!

每行有7列,每列對應的說明:

1. 帳號名稱:
就是帳號啦!用來提供給對數字不太敏感的人類使用來登入系統的!須要用來對應 UID 喔。例如 root 的UID 對應就是 0 (第三字段);
2. 密碼:
早期 Unix 系統的密碼就是放在這字段上!可是由於這個文件的特性是全部的程序都可以讀取,這樣一來很容易形成密碼數據被竊取, 所以後來就將這個字段的密碼數據給他改放到 /etc/shadow 中了。因此這裏你會看到一個『 x 』,呵呵!
3. UID:
這個就是使用者標識符囉!一般 Linux 對於 UID 有幾個限制須要說給您瞭解一下:

id 範圍 該 ID 使用者特性
0
(系統管理員)
當 UID 是 0 時,表明這個帳號是『系統管理員』! 因此當你要讓其餘的帳號名稱
也具備 root 的權限時,將該帳號的 UID 改成 0 便可。 這也就是說,一部系統上
面的系統管理員不見得只有 root 喔! 不過,很不建議有多個帳號的 UID 是 0
啦~容易讓系統管理員混亂!
1~999
(系統帳號)

保留給系統使用的 ID,其實除了 0 以外,其餘的 UID 權限與特性並無不同。
默認 1000 如下的數字讓給系統做爲保留帳號只是一個習慣。
因爲系統上面啓動的網絡服務或背景服務但願使用較小的權限去運做,所以不但願
使用 root 的身份去執行這些服務, 因此咱們就得要提供這些運做中程序的擁有者
帳號才行。這些系統帳號一般是不可登入的, 因此纔會有咱們在第十章提到的
/sbin/nologin 這個特殊的 shell 存在。

根據系統帳號的由來,一般這類帳號又約略被區分爲兩種:
1~200:由 distributions 自行創建的系統帳號;
201~999:若用戶有系統帳號需求時,可使用的帳號 UID。

1000~60000
(可登入帳號)

給 一 般 使 用 者 用 的。 事實 上 , 目 前 的 linux 核心 (3.10.x 版 ) 已 經 可 以支 持 到

4294967295 (2^32-1) 這麼大的 UID 號碼喔!

上面這樣說明能夠了解了嗎?是的, UID 爲 0 的時候,就是 root 呦!因此請特別留意一下你的/etc/passwd 文件!
4. GID:
這個與 /etc/group 有關!其實 /etc/group 的觀念與 /etc/passwd 差很少,只是他是用來規範組名與 GID 的對應而已!GID爲初始羣組 (initial group) 』!也就是說,當用戶一登入系統,馬上就擁有這個羣組的相關權限的意思。一般有效羣組的做用是在新建文件。由於是初始羣組, 使用者一登入就會主動取得,不須要在 /etc/group 的第四個字段寫入該帳號的!

5. 用戶信息說明欄:
這個字段基本上並無什麼重要用途,只是用來解釋這個帳號的意義而已!不過,若是您提供使用 finger 的功能時, 這個字段能夠提供不少的訊息呢!本章後面的 chfn 指令會來解釋這裏的說明。
6. 家目錄:
這是用戶的家目錄,以上面爲例, root 的家目錄在 /root ,因此當 root 登入以後,就會馬上跑到 /root 目錄裏頭啦!呵呵! 若是你有個帳號的使用空間特別的大,你想要將該帳號的家目錄移動到其餘的硬盤去該怎麼做? 沒有錯!能夠在這個字段進行修改呦!默認的用戶家目錄在 /home/yourIDname
7. Shell:
咱們在第十章 BASH 提到不少次,當用戶登入系統後就會取得一個 Shell 來與系統的核心溝通以進行用戶的操做任務。那爲什麼預設 shell 會使用 bash 呢?就是在這個字段指定的囉! 這裏比較須要注意的是,有一個 shell 能夠用來替代成讓帳號沒法取得 shell 環境的登入動做!那就是 /sbin/nologin 這個東西!這也能夠用來製做純 pop 郵件帳號者的數據呢!

 

二、shadow 用戶密碼文件

一樣以『:』做爲分隔符,共9個字段:

1. 帳號名稱:
因爲密碼也須要與帳號對應啊~所以,這個文件的第一欄就是帳號,必需要與 /etc/passwd 相同才行!
2. 密碼:
這個字段內的數據纔是真正的密碼,並且是通過編碼的密碼 (加密) 啦! 你只會看到有一些特殊符號的字母就是了!須要特別留意的是,雖然這些加密過的密碼很難被解出來, 可是『很難』不等於『不會』,因此,這個文件的預設權限是『-rw-------』或者是『----------』,亦即只有 root 才能夠讀寫就是了!你得隨時注意,不要不當心更動了這個文件的權限呢!
另外,因爲各類密碼編碼的技術不同,所以不一樣的編碼系統會形成這個字段的長度不相同。 舉例來講,舊式的 DES, MD5 編碼系統產生的密碼長度就與目前慣用的 SHA 不一樣(注 2)!SHA 的密碼長度明顯的比較長些。由固定的編碼系統產生的密碼長度必須一致,所以『當你讓這個字段的長度改變後,該密碼就會失效(算不出來)』。 不少軟件透過這個功能,在此字段前加上 ! 或 * 改變密碼字段長度,就會讓密碼『暫時失效』了。
3. 最近更動密碼的日期:
這個字段記錄了『更動密碼那一天』的日期,不過,很奇怪呀!在個人例子中怎麼會是 16559 呢?呵呵,這個是由於計算 Linux 日期的時間是以 1970 年 1 月 1 日做爲 1 而累加的日期,1971 年 1 月 1 日則爲 366 啦! 得注意一下這個資料呦!上述的 16559 指的就是 2015-05-04 那一天啦!瞭解乎? 而想要了解該日期可使用本章後面 chage 指令的幫忙!至於想要知道某個日期的累積日數, 可以使用以下的程序計算:

[root@study ~]# echo $(($(date --date="2015/05/04" +%s)/86400+1))
16559

上述指令中,2015/05/04 爲你想要計算的日期,86400 爲每一天的秒數, %s 爲 1970/01/01 以來的累積總秒數。 因爲 bash 僅支持整數,所以最終須要加上 1 補齊 1970/01/01 當天。
4. 密碼不可被更動的天數:(與第 3 字段相比)
第四個字段記錄了:這個帳號的密碼在最近一次被更改後須要通過幾天才能夠再被變動!若是是 0 的話,表示密碼隨時能夠更動的意思。這的限制是爲了怕密碼被某些人一改再改而設計的!若是設定爲 20 天的話,那麼當你設定了密碼以後, 20 天以內都沒法改變這個密碼呦!
5. 密碼須要從新變動的天數:(與第 3 字段相比)
常常變動密碼是個好習慣!爲了強制要求用戶變動密碼,這個字段能夠指定在最近一次更改密碼後, 在多少天數內須要再次的變動密碼才行。你必需要在這個天數內從新設定你的密碼,不然這個帳號的密碼將會『變爲過時特性』。 而若是像上面的 99999 (計算爲 273 年) 的話,那就表示,呵呵,密碼的變動沒有強制性之意。
6. 密碼須要變動期限前的警告天數:(與第 5 字段相比)
當帳號的密碼有效期限快要到的時候 (第 5 字段),系統會依據這個字段的設定,發出『警告』言論給這個帳號,提醒他『再過 n 天你的密碼就要過時了,請儘快從新設定你的密碼呦!』,如上面的例子,則是密碼到期以前的 7 天以內,系統會警告該用戶。
7. 密碼過時後的帳號寬限時間(密碼失效日):(與第 5 字段相比)
密碼有效日期爲『更新日期(第 3 字段)』+『從新變動日期(第 5 字段)』,過了該期限後用戶依舊沒有更新密碼,那該密碼就算過時了。 雖然密碼過時可是該帳號仍是能夠用來進行其餘工做的,包括登入系統取得bash 。不過若是密碼過時了, 那當你登入系統時,系統會強制要求你必需要從新設定密碼才能登入繼續使用喔,這就是密碼過時特性。
那這個字段的功能是什麼呢?是在密碼過時幾天後,若是使用者仍是沒有登入更改密碼,那麼這個帳號的密碼將會『失效』, 亦即該帳號再也沒法使用該密碼登入了。要注意密碼過時與密碼失效並不相同。
8. 帳號失效日期:
這個日期跟第三個字段同樣,都是使用 1970 年以來的總日數設定。這個字段表示: 這個帳號在此字段規定的日期以後,將沒法再使用。 就是所謂的『帳號失效』,此時不論你的密碼是否有過時,這個『帳號』都不能再被使用! 這個字段會被使用一般應該是在『收費服務』的系統中,你能夠規定一個日期讓該帳號不能再使用啦!
9. 保留:
最後一個字段是保留的,看之後有沒有新功能加入。

 

查詢shadow使用哪一種加密的機制 :authconfig --test | grep hashing

 

三、/etc/group 羣組文件

1. 組名:
就是組名啦!一樣用來給人類使用的,基本上須要與第三字段的 GID 對應。
2. 羣組密碼:
一般不須要設定,這個設定一般是給『羣組管理員』使用的,目前不多有這個機會設定羣組管理員啦! 一樣的,密碼已經移動到 /etc/gshadow 去,所以這個字段只會存在一個『x』而已;
3. GID:
就是羣組的 ID 啊。咱們 /etc/passwd 第四個字段使用的 GID 對應的羣組名,就是由這裏對應出來的!
4. 此羣組支持的帳號名稱:
咱們知道一個帳號能夠加入多個羣組,那某個帳號想要加入此羣組時,將該帳號填入這個字段便可。 舉例來講,若是我想要讓 dmtsai 與 alex 也加入 root 這個羣組,那麼在第一行的最後面加上『dmtsai,alex』,注意不要有空格, 使成爲『 root:x:0:dmtsai,alex 』就能夠囉~

 

[dmtsai@study ~]$ groups  #有效與支持羣組的觀察

 

[dmtsai@study ~]$ newgrp 有效羣組  #有效羣組的切換。想要切換的羣組必須是你已經有支持的羣組。

[dmtsai@study ~]$ exit  # 注意!記得離開 newgrp 的環境喔!

      newgrp 的運做示意圖

 

四、/etc/gshadow 羣組密碼文件

1. 組名
2. 密碼欄,一樣的,開頭爲 ! 表示無合法密碼,因此無羣組管理員
3. 羣組管理員的帳號 (相關信息在 gpasswd 中介紹)
4. 有加入該羣組支持的所屬帳號 (與 /etc/group 內容相同!)

以系統管理員的角度來講,這個 gshadow 最大的功能就是創建羣組管理員。當有使用者想要加入某些羣組時, root 或許會沒有空管理。此時若是可以創建羣組管理員的話,那麼該羣組管理員就可以將那個帳號加入本身管理的羣組中! 能夠免去 root 的忙碌啦!不過,因爲目前有相似 sudo 之類的工具, 因此這個羣組管理員的功能已經不多使用了。

 

五、相關命令

5.一、useradd 命令新建用戶

語法:

  • useradd [-u UID] [-g 初始羣組] [-G 次要羣組] [-mM] [-c 說明欄] [-d 家目錄絕對路徑] [-s shell] 使用者帳號名

選項與參數:

  • -u :  後面接的是 UID ,是一組數字。直接指定一個特定的 UID 給這個帳號;
  • -g :  後面接的那個組名就是咱們上面提到的 initial group 啦~該羣組的 GID 會被放置到 /etc/passwd 的第四個字段內。
  • -G:  後面接的組名則是這個帳號還能夠加入的羣組。這個選項與參數會修改 /etc/group 內的相關資料喔!
  • -M :  強制!不要創建用戶家目錄!(系統帳號默認值)
  • -m :  強制!要創建用戶家目錄!(通常帳號默認值)
  • -c :  這個就是 /etc/passwd 的第五欄的說明內容啦~能夠隨便咱們設定的啦~
  • -d :  指定某個目錄成爲家目錄,而不要使用默認值。務必使用絕對路徑!
  • -r :  創建一個系統的帳號,這個帳號的 UID 會有限制 (參考 /etc/login.defs)
  • -s :  後面接一個 shell ,若沒有指定則預設是 /bin/bash 的啦~
  • -e :  後面接一個日期,格式爲『YYYY-MM-DD』此項目可寫入 shadow 第八字段,亦即帳號失效日的設定項目囉;
  • -f:  後面接 shadow 的第七字段項目,指定密碼是否會失效。0 爲馬上失效,-1 爲永遠不失效(密碼只會過時而強制於登入時從新設定而已。)

系統已經幫咱們規定好很是多的默認值:

  • 在 /etc/passwd 裏面創建一行與帳號相關的數據,包括創建 UID/GID/家目錄等;
  • 在 /etc/shadow 裏面將此帳號的密碼相關參數填入,可是還沒有有密碼;
  • 在 /etc/group 裏面加入一個與帳號名稱如出一轍的組名;
  • 在 /home 底下創建一個與帳號同名的目錄做爲用戶家目錄,且權限爲 700

使用 useradd 創建使用者帳號時,會更改的文件:

  • 用戶帳號與密碼參數方面的文件:/etc/passwd, /etc/shadow
  • 使用者羣組相關方面的文件:/etc/group, /etc/gshadow
  • 用戶的家目錄:/home/帳號名稱

使用 useradd 創建使用者帳號時,至少會參考:

  • /etc/default/useradd
  • /etc/login.defs
  • /etc/skel/*

[root@study ~]# useradd -D  #顯示useradd 命令的基本帳號設定的默認值,數據在/etc/default/useradd文件中。
GROUP=100          <==預設的羣組
HOME=/home           <==默認的家目錄所在目錄
INACTIVE=-1           <==密碼失效日,在 shadow 內的第 7 欄
EXPIRE=             <==帳號失效日,在 shadow 內的第 8 欄
SHELL=/bin/bash         <==預設的 shell
SKEL=/etc/skel         <==用戶家目錄的內容數據參考目錄
CREATE_MAIL_SPOOL=yes  <==是否主動幫使用者創建郵件信箱(mailbox)

[root@study ~]# cat /etc/login.defs  #useradd 命令的UID、GID、密碼參數的默認值

MAIL_DIR /var/spool/mail    <==用戶默認郵件信箱放置目錄

PASS_MAX_DAYS 99999    <==/etc/shadow 內的第 5 欄,多久需變動密碼日數
PASS_MIN_DAYS 0      <==/etc/shadow 內的第 4 欄,多久不可從新設定密碼日數
PASS_MIN_LEN 5      <==密碼最短的字符長度,已被 pam 模塊取代,失去效用!
PASS_WARN_AGE 7      <==/etc/shadow 內的第 6 欄,過時前會警告的日數

UID_MIN 1000        <==使用者最小的 UID,意即小於 1000 的 UID 爲系統保留
UID_MAX 60000      <==使用者可以用的最大 UID
SYS_UID_MIN 201     <==保留給用戶自行設定的系統帳號最小值 UID
SYS_UID_MAX 999     <==保留給用戶自行設定的系統帳號最大值 UID
GID_MIN 1000      <==使用者自定義組的最小 GID,小於 1000 爲系統保留
GID_MAX 60000      <==使用者自定義組的最大 GID
SYS_GID_MIN 201     <==保留給用戶自行設定的系統帳號最小值 GID
SYS_GID_MAX 999     <==保留給用戶自行設定的系統帳號最大值 GID

CREATE_HOME yes     <==在不加 -M 及 -m 時,是否主動創建用戶家目錄?
UMASK 077         <==用戶家目錄創建的 umask ,所以權限會是 700
USERGROUPS_ENAB yes   <==使用 userdel 刪除時,是否會刪除初始羣組
ENCRYPT_METHOD SHA512 <==密碼加密的機制使用的是 sha512 這一個機制!

 

使用 useradd 創建了帳號以後,在默認的狀況下,該帳號是暫時被封鎖的(該帳號是沒法登入),瞧一瞧 /etc/shadow 內的第二個字段就曉得囉~ 下一步得用:

5.二、passwd 命令設定新密碼

語法:

  • passwd [--stdin] [帳號名稱]  <==全部人都可使用來改本身的密碼。幫通常帳號創建密碼須要使用『 passwd 帳號 』的格式,使用『 passwd 』表示修改本身的密碼
  • passwd [-l] [-u] [--stdin] [-S] [-n 日數] [-x 日數] [-w 日數] [-i 日期] 帳號   <==root 功能

選項與參數:

  • --stdin :  能夠透過來自前一個管線的數據,做爲密碼輸入,對 shell script 有幫助!
  • -l :    是 Lock 的意思,會將 /etc/shadow 第二欄最前面加上 ! 使密碼失效;
  • -u :    與 -l 相對,是 Unlock 的意思!
  • -S :    列出密碼相關參數,亦即 shadow 文件內的大部分信息。
  • -n :    後面接天數,shadow 的第 4 字段,多久不可修改密碼天數
  • -x :    後面接天數,shadow 的第 5 字段,多久內必需要更動密碼
  • -w :    後面接天數,shadow 的第 6 字段,密碼過時前的警告天數
  • -i :    後面接『日期』,shadow 的第 7 字段,密碼失效日期

新的 distributions 是使用較嚴格的 PAM 模塊來管理密碼,這個管理的機制寫在 /etc/pam.d/passwd 當中。而該文件與密碼有關的測試模塊就是使用:pam_cracklib.so,這個模塊會檢驗密碼相關的信息, 而且取代 /etc/login.defs 內的 PASS_MIN_LEN的設定啦!

理論上,密碼最好符合以下要求:

  • 密碼不能與帳號相同;
  • 密碼儘可能不要選用字典裏面會出現的字符串;
  • 密碼須要超過 8 個字符;
  • 密碼不要使用我的信息,如身份證、手機號碼、其餘電話號碼等;
  • 密碼不要使用簡單的關係式,如 1+1=2, Iamvbird 等;
  • 密碼儘可能使用大小寫字符、數字、特殊字符($,_,-等)的組合。

實例:

[root@study ~]# echo "abc543CC" | passwd --stdin vbird2

 

5.三、chage 更詳細的密碼參數的顯示與設定

語法:

  • chage [-ldEImMW] 帳號名

選項與參數:

  • -l :  列出該帳號的詳細密碼參數;
  • -d :  後面接日期,修改 shadow 第3字段(最近一次更改密碼的日期),格式 YYYY-MM-DD
  • -E :  後面接日期,修改 shadow 第8字段(帳號失效日),格式 YYYY-MM-DD
  • -I :  後面接天數,修改 shadow 第7字段(密碼失效日期)
  • -m :  後面接天數,修改 shadow 第4字段(密碼最短保留天數)
  • -M :  後面接天數,修改 shadow 第5字段(密碼多久須要進行變動)
  • -W :  後面接天數,修改 shadow 第6字段(密碼過時前警告日期)

實例:

[root@study ~]# chage -d 0 agetest  #讓『使用者在第一次登入時, 強制她們必定要更改密碼後纔可以使用系統資源

 

5.四、usermod 帳號相關數據的微調

語法:

  • usermod [-cdegGlsuLU] username

選項與參數:

  • -c :  後面接帳號的說明,即 /etc/passwd 第五欄的說明欄,能夠加入一些帳號的說明。
  • -d :  後面接帳號的家目錄,即修改 /etc/passwd 的第六欄;
  • -e :  後面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 內的第八個字段數據啦!
  • -f :  後面接天數,爲 shadow 的第七字段。
  • -g :  後面接初始羣組,修改 /etc/passwd 的第四個字段,亦便是 GID 的字段!
  • -G :  後面接次要羣組,修改這個使用者可以支持的羣組,修改的是 /etc/group 囉~
  • -a :  與 -G 合用,可『增長次要羣組的支持』而非『設定』喔!
  • -l :  後面接帳號名稱。亦便是修改帳號名稱, /etc/passwd 的第一欄!
  • -s :  後面接 Shell 的實際文件,例如 /bin/bash 或 /bin/csh 等等。
  • -u :  後面接 UID 數字啦!即 /etc/passwd 第三欄的資料;
  • -L :  暫時將用戶的密碼凍結,讓他沒法登入。其實僅改 /etc/shadow 的密碼欄。
  • -U:  將 /etc/shadow 密碼欄的 ! 拿掉,解凍啦!

仔細的比對,會發現 usermod 的選項與 useradd 很是相似。-L 與 -U 這兩個選項也與另外一個命令 passwd 的 -l, -u 相同。

 

5.五、userdel 刪除用戶的相關數據

用戶的數據有:

  • 用戶帳號/密碼相關參數:/etc/passwd, /etc/shadow
  • 使用者羣組相關參數:/etc/group, /etc/gshadow
  • 用戶我的文件數據: /home/username, /var/spool/mail/username..

語法:

  • userdel [-r] username

選項與參數:

  • -r :連同用戶的家目錄也一塊兒刪除

若是該帳號只是『暫時不啓用』的話,那麼將/etc/shadow 裏頭帳號失效日期 (第八字段) 設定爲 0 就可讓該帳號沒法使用,可是全部跟該帳號相關的數據都會留下來! 使用 userdel 的時機一般是『你真的肯定不要讓該用戶在主機上面使用任何數據了!』

另外,其實用戶若是在系統上面操做過一陣子了,那麼該用戶其實在系統內可能會含有其餘文件的。舉例來講,他的郵件信箱 (mailbox) 或者是例行性工做排程 (crontab, 十五章) 之類的文件。 因此,若是想要完整的將某個帳號完整的移除,最好能夠在下達 userdel -r username 以前, 先以『 find /-user username 』查出整個系統內屬於 username 的文件,而後再加以刪除吧!

 

5.六、id 查詢某人或本身的相關 UID/GID 等等的信息

語法:

  • [root@study ~]# id [username]

範例:查閱 root 本身的相關 ID 信息!
[root@study ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

 

5.七、finger 顯示用戶相關的信息

這個指令有點危險,因此新的版本中已經默認不安裝這個軟件。

語法:

  • [root@study ~]# finger [-s] username

選項與參數:

  • -s :僅列出用戶的帳號、全名、終端機代號與登入時間等等;
  • -m :列出與後面接的帳號相同者,而不是利用部分比對 (包括全名部分)

命令結果,其實他列出來的幾乎都是 /etc/passwd 文件裏面的東西。列出的信息說明以下:

  • Login:  爲使用者帳號,亦即 /etc/passwd 內的第一字段;
  • Name:  爲全名,亦即 /etc/passwd 內的第五字段(或稱爲批註);
  • Directory: 就是家目錄了;
  • Shell:    就是使用的 Shell 文件所在;
  • Never logged in.:  figner 還會調查用戶登入主機的狀況喔!
  • No mail.:  調查 /var/spool/mail 當中的信箱資料;
  • No Plan.:  調查 ~vbird1/.plan 文件,並將該文件取出來講明!

 

5.八、chfn 更改本身賬號的相關信息

change finger 的意思。改到/etc/passwd的第五個字段。finger命令能夠顯示出來。這個指令說實在的,除非是你的主機有不少的用戶,不然倒真是用不着這個程序!這就有點像是 bbs裏頭更改你『我的屬性』的那一個資料啦。

語法:

  • chfn [-foph] [帳號名]

選項與參數:

  • -f :後面接完整的大名;
  • -o :您辦公室的房間號碼;
  • -p :辦公室的電話號碼;
  • -h :家裏的電話號碼!

範例一:vbird1 本身更改一下本身的相關信息!
[vbird1@study ~]$ chfn
Changing finger information for vbird1.
Name []: VBird Tsai test<==輸入你想要呈現的全名
Office []: DIC in KSU<==辦公室號碼
Office Phone []: 06-2727175#356<==辦公室電話
Home Phone []: 06-1234567<==家裏電話號碼
Password:<==確認身份,因此輸入本身的密碼
Finger information changed.

 

5.九、chsh 修改/etc/passwd文件的第7段Shell

change shell的縮寫。

語法:

  • chsh [-ls]

選項與參數:

  • -l :列出目前系統上面可用的 shell ,其實就是 /etc/shells 的內容!
  • -s :設定修改本身的 Shell 囉

[vbird1@study ~]$ chsh -l
/bin/sh
/bin/bash    <==通常默認選項
/sbin/nologin  <==所謂:合法不可登入的 Shell 就是這玩意!
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh    <==這就是 C shell 啦!

[vbird1@study ~]$ ll $(which chsh)
-rws--x--x. 1 root root 23856 Mar  6 13:59 /bin/chsh

chfn 與 chsh ,都是可以讓通常用戶修改 /etc/passwd 這個系統文件的。這兩個文件的權限是什麼? 必定是 SUID 的功能。

 

5.十、groupadd 新增羣組

爲了讓使用者的 UID/GID 成對,她們建議新建的與使用者私有羣組無關的其餘羣組時,使用小於 1000 如下的 GID 爲宜。

語法:

  • groupadd [-g gid] [-r] 組名

選項與參數:

  • -g :  後面接某個特定的 GID ,用來直接給予某個 GID ~
  • -r :  創建系統羣組啦!與 /etc/login.defs 內的 GID_MIN 有關。

 

5.十一、groupmod 進行 group 相關參數的修改

  • groupmod [-g gid] [-n group_name] 羣組名

選項與參數:

  • -g :修改既有的 GID 數字;
  • -n :修改既有的組名

 

5.十二、groupdel 刪除羣組

語法:

  • groupdel [groupname]

存在用戶的羣組不容許刪除。刪除有用戶的羣組的兩個辦法:

  • 辦法1:修改 vbird1 的 GID
  • 辦法2:刪除 vbird1 這個使用者。

 

5.1三、gpasswd 羣組管理員功能

# 關於系統管理員(root)作的動做:

  • gpasswd groupname
  • gpasswd [-A user1,...] [-M user3,...] groupname
  • gpasswd [-rR] groupname

選項與參數:

  •   :  若沒有任何參數時,表示給予 groupname 一個密碼(/etc/gshadow)
  • -A :  將 groupname 的主控權交由後面的使用者管理(該羣組的管理員)
  • -M :  將某些帳號加入這個羣組當中!
  • -r :  將 groupname 的密碼移除
  • -R :  讓 groupname 的密碼欄失效

# 關於羣組管理員(Group administrator)作的動做:

  • gpasswd [-ad] user groupname

選項與參數:

  • -a :  將某位使用者加入到 groupname 這個羣組當中!
  • -d :  將某位使用者移除出 groupname 這個羣組當中。

 

除了本機的帳號以外,咱們可能還會使用到其餘外部的身份驗證服務器所提供的驗證身份的功能!若是你的 Linux 主機要使用到上面提到的這些外部身份驗證系統時,可能就得要額外的設定一些數據了

語法:

  • authconfig-tui

 

rhcsa7 第5題

請按照如下要求建立用戶、用戶組:

  • 新建一個名爲adminuser的組,組id爲40000
  • 新建一個名爲natasha的用戶,並將adiminuser做爲其附屬組
  • 新建一個名爲harry的用戶,並將adminuser做爲其附屬組
  • 新建一個名爲sarah的用戶,並不屬於adimnuser組,其在系統中沒有任何可交互的shell
  • natasha、harry和sarah三個用戶的祕密均設置爲redhat

答:
groupadd -g 40000 adminuser
useradd -G adminuser natasha
useradd -G adminuser harry
useradd -s /usr/sbin/nologin sarah
echo redhat | passwd --stdin natasha
echo redhat | passwd --stdin harry
echo redhat | passwd --stdin sarah

usermod -s /sbin/nologin saraha  #賬號saraha設置錯誤,此時修改

 

 

六、主機的細部權限規劃:ACL 的使用

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的read,write,execute 權限以外的細部權限設定。ACL 能夠針對單一使用者,單一文件或目錄來進行r,w,x 的權限規範,對於須要特殊權限的使用情況很是有幫助。

ACL 主要能夠針對如下3方面來控制權限:

 使用者 (user):能夠針對使用者來設定權限;
 羣組 (group):針對羣組爲對象來設定其權限;
 默認屬性 (mask):還能夠針對在該目錄下在創建新文件/目錄時,規範新數據的默認權限。

目前 ACL 幾乎已經預設加入在全部常見的 Linux 文件系統的掛載參數中(ext2/ext3/ext4/xfs 等等)!

6.一、dmesg | grep -i acl  #檢查一下核心掛載時顯示的信息

6.二、setfacl        #設定某個目錄/文件的 ACL 規範

語法:

  • setfacl [-bkRd] [{-m|-x} acl 參數] 目標文件名

選項與參數:

  • -m :設定後續的 acl 參數給文件使用,不可與 -x 合用;
  • -x :刪除後續的 acl 參數,不可與 -m 合用;
  • -b :移除『全部的』 ACL 設定參數;
  • -k :移除『預設的』 ACL 參數,關於所謂的『預設』參數於後續範例中介紹;
  • -R :遞歸設定 acl ,亦即包括次目錄都會被設定起來;
  • -d :設定『預設 acl 參數』的意思!只對目錄有效,在該目錄新建的數據會引用此默認值

6.三、getfacl      #取得某個文件/目錄的 ACL 設定項目

語法:

  • getfacl filename

選項與參數:
getfacl 的選項與 setfacl 相同

 

# 1. 針對特定使用者的方式:
# 設定規範:『 u:[使用者帳號列表]:[rwx] 』,例如針對 vbird1 的權限規範 rx :

[root@study ~]# touch acl_test1
[root@study ~]# ll acl_test1

-rw-r--r--. 1 root root 0 Jul 21 17:33 acl_test1
[root@study ~]# setfacl -m u:vbird1:rx acl_test1
[root@study ~]# ll acl_test1
-rw-r-xr--+ 1 root root 0 Jul 21 17:33 acl_test1
# 權限部分多了個 + ,且與本來的權限 (644) 看起來差別很大!但要如何查閱呢?
[root@study ~]# setfacl -m u::rwx acl_test1
[root@study ~]# ll acl_test1
-rwxr-xr--+ 1 root root 0 Jul 21 17:33 acl_test1
# 設定值中的 u 後面無使用者列表,表明設定該文件擁有者,因此上面顯示 root 的權限成爲 rwx 了!

# 2. 針對特定羣組的方式:
# 設定規範:『 g:[羣組列表]:[rwx] 』,例如針對 mygroup1 的權限規範 rx :
[root@study ~]# setfacl -m g:mygroup1:rx acl_test1
[root@study ~]# getfacl acl_test1

# 3. 針對有效權限 mask 的設定方式:
# 設定規範:『 m:[rwx] 』,例如針對剛剛的文件規範爲僅有 r :
[root@study ~]# setfacl -m m:r acl_test1
[root@study ~]# getfacl acl_test1

# 4. 針對預設權限的設定方式:

# 設定規範:『 d:[ug]:使用者列表:[rwx] 』

[root@study ~]# setfacl -m d:u:myuser1:rx /srv/projecta
[root@study ~]# getfacl /srv/projecta

 

rhcsa7 d6:

複製文件/etc/fstab到/var/tmp目錄下,並按照如下要求配置/var/tmp/fstab文件的權限:

  • 該文件的所屬人爲root
  • 該文件的所屬組爲root
  • 該文件對任何人均沒有執行權限
  • 用戶natasha對該文件有讀和寫的權限
  • 用戶harry對該文件既不能讀也不能寫
  • 全部其餘用戶(包括當前已有用戶及將來建立的用戶)對該文件都有讀的權限

答:

sudo cp /etc/fstab /var/tmp/
ll /var/tmp/fstab

sudo setfacl -m u:natasha:rw /var/tmp/fstab

sudo setfacl -m u:harry:--- /var/tmp/fstab

getfacl /var/tmp/fstab

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息