Linux 和其他類 Unix 作業系統依賴於使用者組,而不是逐個為使用者分配許可權和特權。一個組就是你想象的那樣:一群在某種程度上相關的使用者。
到這個階段,,但在讓自己一頭扎進檔案之前,我們必須重新審視 許可權、使用者 和 組。幸運的是,有一個網站上已經有了一個優秀而全面的教學,講到了許可權,所以你應該去立刻閱讀它。簡而言之,你使用許可權來確定誰可以對檔案和目錄執行操作,以及他們可以對每個檔案和目錄執行什麼操作 —— 從中讀取、寫入、移動、擦除等等。
要嘗試本教學涵蓋的所有內容,你需要在系統上建立新使用者。讓我們實踐起來,為每一個需要借用你電腦的人建立一個使用者,我們稱之為 guest
賬戶。
警告: 例如,如果你錯誤地刪除了自己的使用者和目錄,那麼建立使用者,特別是刪除使用者以及主目錄會嚴重損壞系統。你可能不想在你日常的工作機中練習,那麼請在另一台機器或者虛擬機器上練習。無論你是否想要安全地練習,經常備份你的東西總是一個好主意。檢查備份是否正常工作,為你自己以後避免很多咬牙切齒的事情。
你可以使用 useradd
命令來建立一個新使用者。使用超級使用者或 root 許可權執行 useradd
,即使用 sudo
或 su
,這具體取決於你的系統,你可以:
sudo useradd -m guest
然後輸入你的密碼。或者也可以這樣:
su -c "useradd -m guest"
然後輸入 root 或超級使用者的密碼。
( 為了簡潔起見,我們將從現在開始假設你使用 sudo
獲得超級使用者或 root 許可權。 )
通過使用 -m
引數,useradd
將為新使用者建立一個主目錄。你可以通過列出 /home/guest
來檢視其內容。
然後你可以使用以下命令來為新使用者設定密碼:
sudo passwd guest
或者你也可以使用 adduser
,這是一個互動式的命令,它會詢問你一些問題,包括你要為使用者分配的 shell(是的,shell 有不止一種),你希望其主目錄在哪裡,你希望他們屬於哪些組(有關這點稍後會講到)等等。在執行 adduser
結束時,你可以設定密碼。注意,預設情況下,在許多發行版中都沒有安裝 adduser
,但安裝了 useradd
。
順便說一下,你可以使用 userdel
來移除一個使用者:
sudo userdel -r guest
使用 -r
選項,userdel
不僅刪除了 guest
使用者,還刪除了他們的主目錄和郵件中的條目(如果有的話)。
談到使用者的主目錄,它依賴於你所使用的發行版。你可能已經注意到,當你使用 -m
選項時,useradd
使用子目錄填充使用者的目錄,包括音樂、文件和諸如此類的內容以及各種各樣的隱藏檔案。要檢視 guest
主目錄中的所有內容,執行 sudo ls -la /home/guest
。
進入新使用者目錄的內容通常是由 /etc/skel
架構目錄確定的。有時它可能是一個不同的目錄。要檢查正在使用的目錄,執行:
useradd -DGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=no
這會給你一些額外的有趣資訊,但你現在感興趣的是 SKEL=/etc/skel
這一行,在這種情況下,按照慣例,它指向 /etc/skel/
。
由於 Linux 中的所有東西都是可客製化的,因此你可以更改那些放入新建立的使用者目錄的內容。試試這樣做:在 /etc/skel/
中建立一個新目錄:
sudo mkdir /etc/skel/Documents
然後建立一個包含歡迎訊息的檔案,並將其複製過來:
sudo cp welcome.txt /etc/skel/Documents
現在刪除 guest
賬戶:
sudo userdel -r guest
再次建立:
sudo useradd -m guest
嘿!你的 Documents/
目錄和 welcome.txt
檔案神奇地出現在了 guest
的主目錄中。
你還可以在建立使用者時通過編輯 /etc/default/useradd
來修改其他內容。我的看起來像這樣:
GROUP=usersHOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=no
這些選項大多數都是不言自明的,但讓我們仔細看看 GROUP
選項。
Linux 和其他類 Unix 作業系統依賴於使用者組,而不是逐個為使用者分配許可權和特權。一個組就是你想象的那樣:一群在某種程度上相關的使用者。在你的系統上可能有一組允許使用印表機的使用者,他們屬於 lp
(即 “line printer”)組。傳統上 wheel
組的成員是唯一可以通過使用 su
成為超級使用者或 root 的成員。network
使用者組可以啟動或關閉網路。還有許多諸如此類的。
不同的發行版有不同的組,具有相同或相似名稱的組具有不同的許可權,這也取決於你使用的發行版。因此,如果你在前一段中讀到的內容與你系統中的內容不匹配,不要感到驚訝。
不管怎樣,要檢視系統中有哪些組,你可以使用:
getent group
getent
命令列出了某些系統資料庫的內容。
要查詢當前使用者所屬的組,嘗試:
groups
當你使用 useradd
建立新使用者時,除非你另行指定,否則使用者將只屬於一個組:他們自己。guest
使用者屬於 guest
組。組使使用者有權管理自己的東西,僅此而已。
你可以使用 groupadd
命令建立新組,然後新增使用者:
sudo groupadd photos
例如,這將建立 photos
組。下一次,我們將使用它來構建一個共用目錄,該組的所有成員都可以讀取和寫入,我們將更多地了解許可權和特權。敬請關注!