RHCSA 系列(三): 如何管理 RHEL7 的用戶和組
RHCSA: 用戶和組管理 – Part 3
管理用戶帳戶
如果想要給RHEL 7 伺服器添加賬戶,你需要以root用戶執行如下兩條命令之一:
# adduser [new_account]
# useradd [new_account]
當添加新的用戶帳戶時,默認會執行下列操作。
- 它/她的主目錄就會被創建(一般是"/home/用戶名",除非你特別設置)
- 一些隱藏文件 如
.bash_logout
,.bash_profile
以及.bashrc
會被複制到用戶的主目錄,它們會為用戶的回話提供環境變數。你可以進一步查看它們的相關細節。 - 會為您的賬號添加一個郵件池目錄。
- 會創建一個和用戶名同樣的組(LCTT 譯註:除非你給新創建的用戶指定了組)。
用戶帳戶的全部信息被保存在/etc/passwd
文件。這個文件以如下格式保存了每一個系統帳戶的所有信息(欄位以「:」分割)
[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
[username]
和[Comment]
其意自明,就是用戶名和備註- 第二個『x』表示帳戶的啟用了密碼保護(記錄在
/etc/shadow
文件),密碼用於登錄[username]
[UID]
和[GID]
是整數,它們表明了[username]
的用戶ID 和所屬的主組ID
最後。
[Home directory]
顯示[username]
的主目錄的絕對路徑[Default shell]
是當用戶登錄系統後使用的默認shell
另外一個你必須要熟悉的重要的文件是存儲組信息的/etc/group
。和/etc/passwd
類似,也是每行一個記錄,欄位由「:」分割
[Group name]:[Group password]:[GID]:[Group members]
[Group name]
是組名- 這個組是否使用了密碼 (如果是"x"意味著沒有)
[GID]
: 和/etc/passwd
中一樣[Group members]
:用戶列表,使用「,」隔開。裡面包含組內的所有用戶
添加過帳戶後,任何時候你都可以通過 usermod 命令來修改用戶賬戶信息,基本的語法如下:
# usermod [options] [username]
相關閱讀
示例1 : 設置帳戶的過期時間
如果你的公司有一些短期使用的帳戶或者你要在有限時間內授予訪問,你可以使用 --expiredate
參數 ,後加YYYY-MM-DD 格式的日期。為了查看是否生效,你可以使用如下命令查看
# chage -l [username]
帳戶更新前後的變動如下圖所示
修改用戶信息
示例 2: 向組內追加用戶
除了創建用戶時的主用戶組,一個用戶還能被添加到別的組。你需要使用 -aG或 -append -group 選項,後跟逗號分隔的組名。
示例 3: 修改用戶主目錄或默認Shell
如果因為一些原因,你需要修改默認的用戶主目錄(一般為 /home/用戶名),你需要使用 -d 或 -home 參數,後跟絕對路徑來修改主目錄。
如果有用戶想要使用其它的shell來取代默認的bash(比如zsh)。使用 usermod ,並使用 -shell 的參數,後加新的shell的路徑。
示例 4: 展示組內的用戶
當把用戶添加到組中後,你可以使用如下命令驗證屬於哪一個組
# groups [username]
# id [username]
下面圖片的演示了示例2到示例4
添加用戶到額外的組
在上面的示例中:
# usermod --append --groups gacanepa,users --home /tmp --shell /bin/sh tecmint
如果想要從組內刪除用戶,取消 --append
選項,並使用 --groups
和你要用戶屬於的組的列表。
示例 5: 通過鎖定密碼來停用帳戶
如果想要關閉帳戶,你可以使用 -l(小寫的L)或 -lock 選項來鎖定用戶的密碼。這將會阻止用戶登錄。
示例 6: 解鎖密碼
當你想要重新啟用帳戶讓它可以繼續登錄時,使用 -u 或 –unlock 選項來解鎖用戶的密碼,就像示例5 介紹的那樣
# usermod --unlock tecmint
下面的圖片展示了示例5和示例6:
鎖定上鎖用戶
示例 7:刪除組和用戶
如果要刪除一個組,你需要使用 groupdel ,如果需要刪除用戶 你需要使用 userdel (添加 -r 可以刪除主目錄和郵件池的內容)。
# groupdel [group_name] # 刪除組
# userdel -r [user_name] # 刪除用戶,並刪除主目錄和郵件池
如果一些文件屬於該組,刪除組時它們不會也被刪除。但是組擁有者的名字將會被設置為刪除掉的組的GID。
列舉,設置,並且修改標準 ugo/rwx 許可權
著名的 ls 命令 是管理員最好的助手. 當我們使用 -l 參數, 這個工具允許您以長格式(或詳細格式)查看一個目錄中的內容。
而且,該命令還可以用於單個文件中。無論哪種方式,在「ls」輸出中的前10個字元表示每個文件的屬性。
這10個字元序列的第一個字元用於表示文件類型:
- – (連字元): 一個標準文件
- d: 一個目錄
- l: 一個符號鏈接
- c: 字元設備(將數據作為位元組流,例如終端)
- b: 塊設備(以塊的方式處理數據,例如存儲設備)
文件屬性的接下來的九個字元,分為三個組,被稱為文件模式,並註明讀(r)、寫(w)、和執行(x)許可權授予文件的所有者、文件的所有組、和其它的用戶(通常被稱為「世界」)。
同文件上的讀取許可權允許文件被打開和讀取一樣,如果目錄同時有執行許可權時,就允許其目錄內容被列出。此外,如果一個文件有執行許可權,就允許它作為一個程序運行。
文件許可權是通過chmod命令改變的,它的基本語法如下:
# chmod [new_mode] file
new_mode 是一個八進位數或表達式,用於指定新的許可權。隨意試試各種許可權看看是什麼效果。或者您已經有了一個更好的方式來設置文件的許可權,你也可以用你自己的方式自由地試試。
八進位數可以基於二進位等價計算,可以從所需的文件許可權的文件的所有者、所有組、和世界組合成。每種許可權都等於2的冪(R = 2^2,W = 2^1,x = 2^0),沒有時即為0。例如:
文件許可權
在八進位形式下設置文件的許可權,如上圖所示
# chmod 744 myfile
請用馬上來對比一下我們以前的計算,在更改文件的許可權後,我們的實際輸出為:
長列表格式
示例 8: 尋找777許可權的文件
出於安全考慮,你應該確保在正常情況下,儘可能避免777許可權(任何人可讀、可寫、可執行的文件)。雖然我們會在以後的教程中教你如何更有效地找到您的系統的具有特定許可權的全部文件,你現在仍可以組合使用ls 和 grep來獲取這種信息。
在下面的例子,我們會尋找 /etc 目錄下的777許可權文件。注意,我們要使用第二章:文件和目錄管理中講到的管道的知識:
# ls -l /etc | grep rwxrwxrwx
查找所有777許可權的文件
示例 9: 為所有用戶指定特定許可權
shell腳本,以及一些二進位文件,所有用戶都應該有權訪問(不只是其相應的所有者和組),應該有相應的執行許可權(我們會討論特殊情況下的問題):
# chmod a+x script.sh
注意: 我們可以使用表達式設置文件模式,表示用戶許可權的字母如「u」,組所有者許可權的字母「g」,其餘的為「o」 ,同時具有所有許可權為「a」。許可權可以通過+
或 -
來授予和收回。
為文件設置執行許可權
長目錄列表還用兩列顯示了該文件的所有者和所有組。此功能可作為系統中文件的第一級訪問控制方法:
檢查文件的所有者和所有組
改變文件的所有者,您應該使用chown命令。請注意,您可以在同時或分別更改文件的所有組:
# chown user:group file
你可以更改用戶或組,或在同時更改兩個屬性,但是不要忘記冒號區分,如果你想要更新其它屬性,讓另外的部分為空:
# chown :group file # 僅改變所有組
# chown user: file # 僅改變所有者
示例 10:從一個文件複製許可權到另一個文件
如果你想「克隆」一個文件的所有權到另一個,你可以這樣做,使用–reference參數,如下:
# chown --reference=ref_file file
ref_file的所有信息會複製給 file
複製文件屬主信息
設置 SETGID 協作目錄
假如你需要授予在一個特定的目錄中擁有訪問所有的文件的許可權給一個特定的用戶組,你有可能需要使用給目錄設置setgid的方法。當setgid設置後,該真實用戶的有效GID會變成屬主的GID。
因此,任何訪問該文件的用戶會被授予該文件的屬組的許可權。此外,當setgid設置在一個目錄中,新創建的文件繼承組該目錄的組,而且新創建的子目錄也將繼承父目錄的setgid許可權。
# chmod g+s [filename]
要以八進位形式設置 setgid,需要在基本許可權前綴以2。
# chmod 2755 [directory]
總結
紮實的用戶和組管理知識,以及標準和特殊的 Linux許可權管理,通過實踐,可以幫你快速解決 RHEL 7 伺服器的文件許可權問題。
我向你保證,當你按照本文所概述的步驟和使用系統文檔(在本系列的第一章 回顧基礎命令及系統文檔中講到), 你將掌握基本的系統管理的能力。
請隨時使用下面的評論框讓我們知道你是否有任何問題或意見。
via: http://www.tecmint.com/rhcsa-exam-manage-users-and-groups/
作者:Gabriel Cánepa 譯者:xiqingongzi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive