用戶、組及其它Linux特性
到這個階段,在看到如何操作目錄或文件夾之后,但在讓自己一頭扎進文件之前,我們必須重新審視 權限、用戶 和 組。幸運的是,有一個網(wǎng)站上已經(jīng)有了一個優(yōu)秀而全面的教程,講到了權限,所以你應該去立刻閱讀它。簡而言之,你使用權限來確定誰可以對文件和目錄執(zhí)行操作,以及他們可以對每個文件和目錄執(zhí)行什么操作 —— 從中讀取、寫入、移動、擦除等等。
要嘗試本教程涵蓋的所有內(nèi)容,你需要在系統(tǒng)上創(chuàng)建新用戶。讓我們實踐起來,為每一個需要借用你電腦的人創(chuàng)建一個用戶,我們稱之為 guest
賬戶。
警告: 例如,如果你錯誤地刪除了自己的用戶和目錄,那么創(chuàng)建用戶,特別是刪除用戶以及主目錄會嚴重損壞系統(tǒng)。你可能不想在你日常的工作機中練習,那么請在另一臺機器或者虛擬機上練習。無論你是否想要安全地練習,經(jīng)常備份你的東西總是一個好主意。檢查備份是否正常工作,為你自己以后避免很多咬牙切齒的事情。
一個新用戶
你可以使用 useradd
命令來創(chuàng)建一個新用戶。使用超級用戶或 root 權限運行 useradd
,即使用 sudo
或 su
,這具體取決于你的系統(tǒng),你可以:
sudo useradd -m guest
然后輸入你的密碼?;蛘咭部梢赃@樣:
su -c "useradd -m guest"
然后輸入 root 或超級用戶的密碼。
( 為了簡潔起見,我們將從現(xiàn)在開始假設你使用 sudo
獲得超級用戶或 root 權限。 )
通過使用 -m
參數(shù),useradd
將為新用戶創(chuàng)建一個主目錄。你可以通過列出 /home/guest
來查看其內(nèi)容。
然后你可以使用以下命令來為新用戶設置密碼:
sudo passwd guest
或者你也可以使用 adduser
,這是一個交互式的命令,它會詢問你一些問題,包括你要為用戶分配的 shell(是的,shell 有不止一種),你希望其主目錄在哪里,你希望他們屬于哪些組(有關這點稍后會講到)等等。在運行 adduser
結(jié)束時,你可以設置密碼。注意,默認情況下,在許多發(fā)行版中都沒有安裝 adduser
,但安裝了 useradd
。
順便說一下,你可以使用 userdel
來移除一個用戶:
sudo userdel -r guest
使用 -r
選項,userdel
不僅刪除了 guest
用戶,還刪除了他們的主目錄和郵件中的條目(如果有的話)。
主目錄中的內(nèi)容
談到用戶的主目錄,它依賴于你所使用的發(fā)行版。你可能已經(jīng)注意到,當你使用 -m
選項時,useradd
使用子目錄填充用戶的目錄,包括音樂、文檔和諸如此類的內(nèi)容以及各種各樣的隱藏文件。要查看 guest
主目錄中的所有內(nèi)容,運行 sudo ls -la /home/guest
。
進入新用戶目錄的內(nèi)容通常是由 /etc/skel
架構(gòu)目錄確定的。有時它可能是一個不同的目錄。要檢查正在使用的目錄,運行:
useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
這會給你一些額外的有趣信息,但你現(xiàn)在感興趣的是 SKEL=/etc/skel
這一行,在這種情況下,按照慣例,它指向 /etc/skel/
。
由于 Linux 中的所有東西都是可定制的,因此你可以更改那些放入新創(chuàng)建的用戶目錄的內(nèi)容。試試這樣做:在 /etc/skel/
中創(chuàng)建一個新目錄:
sudo mkdir /etc/skel/Documents
然后創(chuàng)建一個包含歡迎消息的文件,并將其復制過來:
sudo cp welcome.txt /etc/skel/Documents
現(xiàn)在刪除 guest
賬戶:
sudo userdel -r guest
再次創(chuàng)建:
sudo useradd -m guest
嘿!你的 Documents/
目錄和 welcome.txt
文件神奇地出現(xiàn)在了 guest
的主目錄中。
你還可以在創(chuàng)建用戶時通過編輯 /etc/default/useradd
來修改其他內(nèi)容。我的看起來像這樣:
GROUP=users
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
這些選項大多數(shù)都是不言自明的,但讓我們仔細看看 GROUP
選項。
群組心態(tài)
Linux 和其他類 Unix 操作系統(tǒng)依賴于用戶組,而不是逐個為用戶分配權限和特權。一個組就是你想象的那樣:一群在某種程度上相關的用戶。在你的系統(tǒng)上可能有一組允許使用打印機的用戶,他們屬于 lp
(即 “line printer”)組。傳統(tǒng)上 wheel
組的成員是***可以通過使用 su
成為超級用戶或 root 的成員。network
用戶組可以啟動或關閉網(wǎng)絡。還有許多諸如此類的。
不同的發(fā)行版有不同的組,具有相同或相似名稱的組具有不同的權限,這也取決于你使用的發(fā)行版。因此,如果你在前一段中讀到的內(nèi)容與你系統(tǒng)中的內(nèi)容不匹配,不要感到驚訝。
不管怎樣,要查看系統(tǒng)中有哪些組,你可以使用:
getent group
getent
命令列出了某些系統(tǒng)數(shù)據(jù)庫的內(nèi)容。
要查找當前用戶所屬的組,嘗試:
groups
當你使用 useradd
創(chuàng)建新用戶時,除非你另行指定,否則用戶將只屬于一個組:他們自己。guest
用戶屬于 guest
組。組使用戶有權管理自己的東西,僅此而已。
你可以使用 groupadd
命令創(chuàng)建新組,然后添加用戶:
sudo groupadd photos
例如,這將創(chuàng)建 photos
組。下一次,我們將使用它來構(gòu)建一個共享目錄,該組的所有成員都可以讀取和寫入,我們將更多地了解權限和特權。敬請關注!