1.04k likes | 1.13k Views
第 18 章. 帳號與磁碟空間管理. 本章重點. 18-1 帳號簡介 18-2 建立使用者帳號 18-3 管理者帳號 18-4 停用與移除使用者帳號 18-5 自訂群組 18-6 使用者磁碟空間管理. 前言. Linux 屬於多人多工的作業系統 , 可讓不同的使用者從本地端登入。在網路上則允許使用者利用 telnet 、 ssh 等方式從遠端登入。無論是從本機或由遠端登入 , 使用者都必須在該台主機上擁有帳號才行。
E N D
第 18 章 帳號與磁碟空間管理
本章重點 • 18-1 帳號簡介 • 18-2 建立使用者帳號 • 18-3 管理者帳號 • 18-4 停用與移除使用者帳號 • 18-5 自訂群組 • 18-6 使用者磁碟空間管理
前言 • Linux 屬於多人多工的作業系統, 可讓不同的使用者從本地端登入。在網路上則允許使用者利用 telnet、ssh 等方式從遠端登入。無論是從本機或由遠端登入, 使用者都必須在該台主機上擁有帳號才行。 • 本章會介紹系統的管理者與一般使用者的帳號, 以及使用者的群組。另外還可為每個帳號設定磁碟空間的限制, 以避免使用者任意堆放過多的檔案。
18-1 帳號簡介 • 雖然 Linux 是一個多人多工的系統, 但並不是所有人都可以隨意進入系統!想要使用 Linux 的使用者, 必須先取得一個合法的使用者帳號。以下我們先來認識一下帳號的功能, 及系統管理者帳號與一般使用者帳號間的差別。
18-1-1 為何要建立使用者帳號 • 在安裝 Linux 的過程中, 安裝程式預設便會建立一個系統管理者帳號, 並在第一次啟動 Linux 時, 詢問您是否要新增其他帳號。為什麼要這麼麻煩, 建立一個以上的帳號呢?因為這樣可以幫助您更有效地管理系統: • 掌控使用者身份:剛剛說過, 要擁有帳號的使用者才可以登入系統。而帳號的申請、建立, 則必須透過系統管理者。藉由這樣的機制, 管理者便可以確實掌控得以進入系統的使用者身份。
為何要建立使用者帳號 • 資源共享, 不互相干擾:由於 Linux 是允許多人共用的作業系統, 因此透過使用者帳號, 系統可以分別儲存使用者個人的環境設定, 讓每個使用者共同使用一部電腦時, 仍然可以依照自己的喜好、習慣工作, 不會互相干擾。 • 權限管制, 維護系統安全:系統的管理者可以考量每個使用者的工作需要, 及系統運作狀況, 給予不同的操作權限, 讓系統保持在最佳狀態運作。
18-1-2 系統管理者帳號與一般使用者帳號的差別 • 經過前述的說明, 相信您可以發現, 同樣是帳號, 好像還是有差異, 能做的事也大大不同。沒錯, Linux 中的帳號主要分成 2 類, 系統管理者帳號與一般使用者帳號。 • 系統管理者的帳號名稱為 root, 具有對系統完全的控制權, 可以對系統做任何的設定及修改, 當然也可以決定哪些使用者可以進入系統, 並設定所有帳號的權限。以下我們就來看看這 2 類帳號的主要差異:
系統管理者帳號與一般使用者帳號的差別 • 所謂 "家目錄", 是每個使用者的專屬目錄, 個人擁有的儲存空間。預設只有使用者本人及系統管理者可以進入, 可以讓您擺放個人設定檔及私人檔案。
實務經驗談 • 本書在操作時雖然多以 root 帳號為例來說明, 但是一般在使用 Linux 時大多建議使用一般的使用者帳號登入。如此可以避免使用 root 帳號登入, 在操作系統時不小心誤刪檔案或執行了錯誤的指令。
18-2 建立使用者帳號 • 建立使用者帳號有許多種方法, 不管是要一次建立一個帳號, 或是想要一次建多個帳號, 本節都會告訴您如何操作。
使用 useradd 指令建立帳號 • 在 Linux 中, 執行useradd指令, 可建立新的使用者帳號: • 關於設定密碼的詳細說明, 請參考第 9-8-1 節。 • 您也可以使用 adduser指令建立帳號, 其與 useradd指令的用法完全相同。
使用 useradd 指令建立帳號 • 在一個系統當中, 使用者的帳號名稱必須是唯一的, 假若要建立的帳號先被他人所佔用, 則會出現使用者已存在的訊息: • 要解決使用者帳號的管理問題, 就靠系統管理者本身自立自強囉。一般來說有 3 種方法: • 管理者自己根據使用者的帳號來建立一份資料庫, 爾後在新增使用者之前, 都可利用資料庫先查詢帳號存在與否。
使用 useradd 指令建立帳號 • 檢查 /etc 目錄下的 passwd 檔案, 該檔內含本系統所有使用者的帳號, 管理者可確認帳號是否已經存在。 • 執行 finger帳號指令, 看看該帳號是否存在。 • finger指令對帳號的英文字母大小寫一視同仁, 不會刻意去判別。
建立測試的 guest 帳號 • 有時候某些人可能因為洽公或突然需要發送電子郵件, 而臨時需要使用系統。管理者沒有必要為了他們而特別建立新帳號, 但為了應付這些臨時性的需求, 可開放一個共用的帳號, 供這些不需要在主機上用有固定帳號的使用者登入。 • 這種共用的帳號名稱通常設為 guest, 可用 passwd -d guest指令取消密碼。在此 Linux 發行版中預設並無此帳號, 如有需要請自行建立。但是這種沒有密碼的帳號非常危險, 為了避免被惡意人士濫用, 建議您務必在伺服器上面設定限制 IP, 或是使用其他機制進行安全性管制。
編輯 passwd 與 shadow 檔案來建立帳號 • 使用 useradd指令所建立的帳號, 實際上是儲存在 /etc 目錄下的 passwd 和 shadow 檔案中, 因此修改這 2 個檔案也能夠新增使用者帳號。
passwd 檔案的內容格式 • 在開始編輯檔案的內容之前, 我們需先瞭解 /etc/passwd 檔案的內容格式:
passwd 檔案的內容格式 • 每個使用者帳號在 passwd 檔案中都有 7 個欄位, 由左到右分別用冒號 (:) 隔開, 分別說明如下: • 帳號名稱:此欄位為帳號名稱。passwd 檔的前面是系統內建帳號 (如 root 帳號) 或常駐服務使用的帳號 (如 adm)。一般使用者的帳號放在後面, 且其第 3 個欄位的號碼 (使用者識別碼) 預設是由 1000 (Fedora 16 以前的版本是以 500 為預設 UID) 開始向上遞增。
passwd 檔案的內容格式 • 使用者密碼:本來是一串看似亂碼的編碼字串, 啟用投影密碼之後, 只剩一個 "x" 字元, 密碼編碼字串改存放到 /etc/shadow 檔案裡, 只有 root 帳號有權讀取、修改, 以避免密碼編碼字串外流後被破解, 導致系統被入侵。 • 使用者識別碼 (UID, User ID):系統使用 UID 來判別使用者, 故必須是唯一的號碼。編號 0 是 root 帳號的 UID;編號 1~999 則是系統保留給各種常駐服務和伺服器使用的 UID, 我們應避開不要混雜其中;而第一個分配給使用者的編號從 1000 開始。
passwd 檔案的內容格式 • 群組識別碼(GID, Group ID):每個帳號皆屬於某一群組, 而每個群組也都有一個唯一的 GID 號碼供系統識別使用。例如 root 帳號所屬的 root 群組識別碼為 0, users 群組的識別碼是 100。此欄位即記錄該帳號所隸屬的群組。關於系統設定的 GID, 可以參考 /etc/group 檔案的內容。 • 使用者相關資訊:記錄使用者的姓名、電話與地址等資料。這部份可自行加入, 或保留空白。
passwd 檔案的內容格式 • 使用者家目錄:每個使用者的家目錄, 通常預設的目錄名稱和使用者帳號相同, 方便管理者識別, 必要時亦可採用與帳號不一樣的名稱來建立目錄。 • 使用者環境:就是使用者在文字模式下的環境, 負責解譯使用者所輸入的指令, 讓系統得以瞭解使用者要做甚麼事。Linux 系統預設是使用 bash, 您可參考第 22 章。
passwd 檔案的內容格式 • 在預設的情況下, 任何使用者都可以讀取 /etc/passwd 檔案, 我們用ls 指令來查看一下: • /etc 目錄下還會有 passwd- 檔, 這是 passwd 的備份檔。當您需要復原原來 passwd 檔的內容時, 可從這個檔案著手。
passwd 檔案的內容格式 • /etc/passwd 檔預設的權限是 "rw-r--r--", 表示所有使用者皆可讀取 (詳見第 19-3 節), 因為 passwd 檔內含 UID 與 GID 資訊, 負責轉換擁有者(owner) 和 UID 之間的關係, 所以必須讓使用者能夠讀取。 • 以下筆者示範更改 passwd 檔權限前後的差別。假設使用者 tony 登入系統, 並執行 ls 指令:
passwd 檔案的內容格式 • 若管理者把 passwd 檔的權限更改為 "rw------", 只有 root 帳號方能讀取該檔案, 當 tony 再登入系統後的情形會變成下面這樣: • 不僅提示符號前的帳號名稱變成 "我沒有名字!", 檔案擁有者的名稱也變成了識別碼 1000 了!所以我們不應限制 passwd 的讀取權限, 而應該啟用投影密碼改善保密的問題。
建立使用者帳號的視窗程式 • 在 X Window 中, 也有親切好用的視窗程式幫助您建立使用者帳號, 請按概覽鈕, 切換到應用程式頁次的其他類別, 再按使用者與群組圖示並如下操作, 即可建立使用者帳號:
建立使用者帳號的視窗程式 • 在上方使用者管理員視窗中按新增群組鈕, 也可以新增群組。
shadow 檔案的內容格式 • 由於 passwd 檔案並不安全, 因此在安裝 Linux 時, 系統預設會啟動投影密碼的功能。每當我們用 useradd 指令建立使用者帳號, 系統不僅更動 passwd 檔案, 同時還會修改 /etc/shadow 檔案。以下便是 shadow 檔案的部份內容:
shadow 檔案的內容格式 • 每個帳號在 shadow 檔案中都有 9 個欄位, 分別用 8 個冒號 (:) 隔開, 以下依欄位分別說明: • 帳號名稱:此欄位為帳號的名稱。shadow 檔的前面是系統內建或常駐服務使用的帳號, 例如 root、adm。一般使用者的帳號名稱放在後面, 例如 benny。
shadow 檔案的內容格式 • 使用者密碼:此欄位中看起來好像一堆亂碼的字串, 其實這是編碼後的使用者密碼。若該帳號的密碼被取消了, 則此欄為空白。傳統 Linux 系統預設最多只能使用 8 個字元的密碼, 超過的部分沒有作用。但要破解 8 個字元的編碼並非不可能, 因此建議您除了使用投影密碼之外, 同時也應該啟用 MD5 編碼 (此 Linux 發行版預設便會使用)。它讓您可以使用的密碼高達 256 字元, 要破解將難上加難。
shadow 檔案的內容格式 • 密碼最後變動的時間:更改過密碼後, 系統會記錄最後變動的時間。此處的時間是從西元 1970 年 01 月 01 日算起的天數。例如 15305 代表已經過了 15305 天。 • 密碼變動兩次之間, 至少需間隔的日數:系統管理者可以限制使用者更改密碼的頻率。若在此欄輸入 30, 就表示更動後至少需間隔 30 天, 才能再次修改密碼。若為 0 則表示不限制。
shadow 檔案的內容格式 • 密碼變動過後, 距離下次一定要更改密碼的日數:為求安全起見, 管理者也能要求使用者每隔幾天就需要更換密碼。輸入 90 代表距上次更改密碼 90 天後, 使用者就必須換一個新的密碼。預設為 99999 天, 表示可終身不用改密碼。
shadow 檔案的內容格式 • 離下次密碼必須變動日期前多少日, 就開始警告使用者:假設超過必須變換的日期, 而使用者尚未更改密碼, 這就是密碼逾期。管理者可以設定在逾期前幾天, 系統就自動發出警告, 提醒使用者更換密碼。此欄若設為 7, 表示系統在密碼逾期前 7 天會發出警告。空白表示系統不會警告使用者密碼逾期。
shadow 檔案的內容格式 • 超過密碼必須變動日期後多少日, 就將該帳號停權:為避免使用者遲遲不肯更換密碼, 管理者可以設定逾期的期限, 超過期限之後, 系統就自動把該使用者的帳號停權, 不准登入。若設為 15 則表示密碼逾期後再過 15 天, 該帳號將被停止使用。空白表示沒有期限, 即使逾期也不會被停權。
shadow 檔案的內容格式 • 帳號的使用期限:每個帳號都可以設定使用期限, 超過期限後帳號便無法繼續使用。此處的時間也是從西元 1970 年 01 月 01 日起的天數。空白則表示沒有期限。 • 最後一個欄位為保留欄位。
關閉、啟動投影密碼 • 若要關閉投影密碼功能, 可執行 pwunconv指令, 將使用者的密碼從 shadow 檔寫回 passwd 檔。若要再啟動, 則執行 pwconv指令。
加入新的帳號記錄 • 根據前述 passwd 和 shadow 檔案欄位所代表之意義, 我們可用文書編輯器, 將新的使用者帳號加入 passwd 與 shadow 檔案。舉例來說, 新增的帳號名稱為 silent, 我們先在 passwd 檔案後面加上這一行:
加入新的帳號記錄 • 存檔後接著編輯 shadow 檔案 (此檔唯讀, 請參考 14-3 節使用 vim 編輯, 編輯完成後執行 :w!強制存檔): • 這樣就產生一個 silent 的帳號, 該帳號的性質如下: • 帳號名稱為 silent。 • 使用者識別碼為 1100。 • 隸屬於 users 群組, 群組識別碼為 100。
加入新的帳號記錄 • 使用者家目錄位於 /home/silent。 • 採用 bash 做為使用者環境。 • 沒有密碼。 • 最後變動密碼的日期, 距離西元 1970 年 01 月 01 日有 15305 天。 • 隨時可更換密碼。 • 不用更換密碼。
加入新的帳號記錄 • 系統不會警告使用者密碼逾期。 • 就算密碼逾期也不會被停權。 • 帳號沒有期限, 可以永遠使用。
加入新的帳號記錄 • 最後請用 passwd指令更改 silent 帳號的密碼, 並建立 /home/silent 目錄, 然後將設好的密碼通知該使用者即可。不過在建立 /home/silent 目錄時, 若單純用 mkdir/home/silent指令, 則會缺少許多預設的檔案。因此筆者建議最好先以 useradd指令建立一個樣板帳號, 例如 template。 • 如此在 /home/template 目錄中就會有 .bash_profile、.bashrc 等預設的檔案。然後再將樣板目錄複製一份給新帳號即可。請如下操作:
加入新的帳號記錄 • 如果您喜歡以這種方式來建新的使用者, 則可保留 /home/template 目錄, 以後再建新的使用者目錄時就方便多了。
useradd 指令新增帳號時的基本設定 • 當使用 useradd指令新增帳號時, 系統會自動將 /etc/skel 目錄下所有檔案複製到使用者的家目錄內, 所以 /etc/skel 的作用就等於上述 /home/template 樣板目錄。 • 那麼, useradd指令新增新帳號的基本設定值, 例如是否要建立家目錄、密碼的最小長度...等, 是否可以自行修改呢?例如專職做為 Mail 伺服器的主機要建立使用者帳號時, 不想讓這些使用者登入主機也不需要建立使用者家目錄, 該如何設定呢? • 這些設定都紀錄在 /etc/login.defs 檔案中, 其內容如下:
useradd 指令新增帳號時的基本設定 • 在 /etc/default/useradd 檔案中也有家目錄位置、使用者環境、樣板目錄...等預設值的設定: • 只要修改上述兩個檔案中的設定, 便可依需求透過 useradd指令新增帳號了。
18-3 管理者帳號 • 安裝 Linux 之後, 系統預設即建立了 root 帳號。在 18-1 節我們曾說過, 此帳號為系統管理者, 對系統擁有完全的控制權, 可對系統做任何設定和修改(甚至摧毀整個系統), 所以維護 root 帳號的安全便格外重要。
18-3-1 設定 root 帳號之密碼 • 在安裝 Linux 過程中, 即要求安裝者為 root 帳號設定密碼。管理者可於日後更改或甚至取消密碼。不過除非整個 Linux 系統只有自己使用而且不上網, 否則強烈建議替 root 帳號設定一個不易被有心人士猜到的密碼。變更密碼的方法, 可使用 9-8-1 節所介紹的 passwd指令。
設定 root 帳號之密碼 • 擁有 root 帳號的系統管理者除了設定密碼之外, 還要替自己建立一個一般使用者的帳號 (此版 Linux 在安裝時即會要求建立, 且不允許使用 root 帳號登入 X Window), 供日常作業使用, 如此可避免因作業疏失而影響整個系統。最好等到系統需要維護時, 再使用 root 帳號登入, 且應注意旁人窺視, 以免密碼外流。
18-3-2 切換帳號、變換身份 • 在文字模式下, 當管理者使用一般帳號登入系統, 隨後想要轉變成管理者身份, 進行系統的相關設定時, 並不需要重新登入, 只要執行 su指令並輸入 root 帳號的密碼, 則可轉換為 root 帳號。以下假設原本登入的帳號是 tony, 而要切換為 root: