6.3. Red Hat Enterprise Linux 的特定資訊

发表于:2007-05-25来源:作者:点击数: 标签:
6.3. Red Hat Enterprise Linux 的特定資訊 底下章節描述了多種 Red Hat Enterprise Linux 的特定功能,能幫助管理者管理使用者帳號與相關資源。 6.3. Red Hat Enterprise Linux 的特定資訊 底下章節描述了多種 Red Hat Enterprise Linux 的特定功能,能幫助

6.3. Red Hat Enterprise Linux 的特定資訊

底下章節描述了多種 Red Hat Enterprise Linux 的特定功能,能幫助管理者管理使用者帳號與相關資源。

6.3. Red Hat Enterprise Linux 的特定資訊

底下章節描述了多種 Red Hat Enterprise Linux 的特定功能,能幫助管理者管理使用者帳號與相關資源。

CCTSGRPS-BASICS">6.3.1. 使用者帳號、群組、以及存取權限

在 Red Hat Enterprise Linux 中,只要建立了使用者帳號,使用者就可以登入系統、執行任何系統允許存取的應用程式或檔案。Red Hat Enterprise Linux 會根據為使用者或群組設定的存取權限,決定是不是讓他們存取資源。

不管是檔案、目錄、或是應用程式,都有三種不同的存取權限,用來允許或禁止某種存取方式。在檔案列表時,每個獨立字元都代表一種存取權限。以下是這些字元的意義:

  • r — 表示某個特定的使用者群組可以讀取檔案。

  • w — 表示某個特定的使用者群組可以寫入檔案。

  • x — 表示某個特定的使用者群組可以執行檔案。

第四種字元(-)表示不允許存取。

而這三種存取權限,又分別及於三種使用者,分別為:

  • 擁有者(owner) — 擁有這檔案或應用程式的人。

  • 群組(group) — 擁有這檔案或應用程式的群組。

  • 所有人(everyone) — 所有能接觸系統的使用者。

如先前所述,您可以用 ls -l 指令,列出檔案的詳細資料,看出其存取權限。舉例來說,如果使用者 juan 建立了名為 foo 的可執行檔,輸入 ls -l foo 指令可能會顯示如下:

-rwxrwxr-x    1 juan     juan            0 Sep 26 12:25 foo

這檔案的存取權限列在最前面,以一組 rwx 開始。第一組表示的是檔案擁有者的權限 — 以本例來說,使用者 juan 有完整的存取權限,他可以讀、寫、執行檔案。第二組 rwx 則定義了他所屬群組的存取權限(一樣是完整的存取權限);而最後一組則記述了所有其他使用者的存取權限:其他使用者可以讀取、執行檔案,但不能以任何形式修改檔案。

有一點很重要,是您必須牢記在心的:不管 Red Hat Enterprise Linux 上每個應用程式的存取權限與使用者帳號為何,每個使用者執行同一支程式時,都是互不相關的。這意思是說,如果使用者 juan 執行了一個應用程式,那麼這程式只會在他的工作環境中運行。不過有些應用程式需要特別的存取等級,以完成特定任務;包括編輯系統設定或紀錄使用者行為的程式。為了這理由,我們就需要建立特別的存取權限。

Red Hat Enterprise Linux 中共有三種特別的存取權限,分別是:

  • setuid — 這權限只用在應用程式上,表示應用程式會以檔案擁有者的身份運行,而非執行該應用程式的使用者身份。它會以小寫 s 取代擁有者一欄的 x。如果檔案擁有者並沒有執行權限,那麼系統會以大寫 S 顯現,以反映這項事實。

  • setgid — 主要供應用程式使用。這權限表示應用程式會以擁有這檔案的群組身份來執行,而非執行這檔案的群組身份。

    如果套用到目錄上,那麼在這目錄中建立的所有檔案,其所有權會屬於擁有這目錄的群組,而非建立這檔案的群組。setgid 權限會以小寫 s 取代群組欄位中的 x。如果擁有這檔案或目錄的群組沒有執行權限,那麼系統會以大寫 S 反映出來。

  • sticky bit — 這位元主要用在目錄上,表示在這目錄中建立的檔案,只能由建立這檔案的人刪除。這權限會以小寫 t 取代所有人欄位中的 x。如果所有人並沒有執行權限,那麼系統會以大寫 T 反映這狀況。

    也因為這個原因,Red Hat Enterprise Linux 預設上會把 /tmp/ 目錄設上 sticky bit。

6.3.1.1. 使用者名稱與 UID;群組與 GID

在 Red Hat Enterprise Linux 中,使用者帳號跟群組名稱都是給人方便使用的;在系統內部使用的是數字型態的辨識方式。以使用者帳號來說,這數字稱為「UID」;而對群組來說,這數字稱為「GID」。要讓使用者存取使用者或群組資訊,系統有專門的程式將 UID / GID 翻譯成人類讀得懂的相對格式。

ANT">
重要重要
 

如果您打算在公司網路上分享檔案與資源,那麼千萬不能讓任何 UID 與 GID 重複。否則的話,不管您用了什麼存取控制的方法,最後都可能無法正常運作,因為這些方法都以 UID 與 GID 為基礎,而非使用者名稱與群組名稱。

更明確的說,如果檔案伺服器與使用者電腦上的 /etc/passwd/etc/group 檔案中,分別包含了不同 UID 與 GID,那麼設定不良的存取權限就會導致安全性漏洞。

舉例來說,如果使用者 juan 在桌上型電腦的 UID 是500,那麼 juan 在檔案伺服器上建立的檔案,其擁有者的 UID 就會紀錄為 500。但如果另一個使用者 bob 直接從檔案伺服器上登入(甚至是從其他電腦上登入),同時 bob 帳號的 UID 恰巧也是 500,那麼 bobjuan 的檔案,就有完整的存取權限,反之亦然。

因此,您一定要不盡任何代價的,避免 UID 與 GID 相衝突。

UID 與 GID 的數字,有兩個非常特別的意義。當 UID 與 GID 為零(0)的時候,那表示是 root 使用者,Red Hat Enterprise Linux 會給予特別待遇 — 自動授予所有權限。

第 二個特殊的意義在於:小於 500 的 UID 與 GID 是保留給系統使用的。但跟為零(0)時的 UID / GID 不同,Red Hat Enterprise Linux 不會給予小於 500 的 UID / GID 任何特別待遇。然而,這些號碼是絕對不會分派給一般使用者的;因為這些數字如果不是已經指定給一些系統元件,就是會留待將來指定用。欲知更多關於標準使用 者與群組的相關資訊,請參閱《Red Hat Enterprise Linux 參考手冊》中 使用者與群組 一章。

當您使用 Red Hat Enterprise Linux 的標準工具新增使用者時,使用者帳號的 UID 與 GID 會從 500 開始設定,下一個使用者的 UID/GID 則是 501,再下一個是 502,餘此類推。

我們將在本章稍後的地方,為您介紹 Red Hat Enterprise Linux 中多種建立使用者帳號的工具。但在看這些工具之前,下一節將為您介紹 Red Hat Enterprise Linux 用來定義系統帳號與群組的檔案。

6.3.2. 控制使用者帳號與群組的檔案

在 Red Hat Enterprise Linux 中,使用者帳號與群組的資訊,都儲存在 /etc/ 目錄中。當系統管理者建立新帳號時,必須一併手動編輯這些檔案,或交由應用程式代勞,做適當的變更。

底下記述了 Red Hat Enterprise Linux 的 /etc/ 目錄中,儲存使用者與群組資訊的幾個檔案。

6.3.2.1. /etc/passwd

/etc/passwd 是個所有人都讀得到的檔案,每一行都記載了一位使用者的資訊,每項資訊都由冒號隔開,包含以下資訊:

  • 使用者名稱(Username) — 當使用者登入系統時,需要輸入的名稱。

  • 密碼(Password) — 包含了加密過的密碼(如果系統採用了 shadow password,那會以 x 代替 — 我們待會兒就會跟您討論這點)。

  • 使用者 ID(UID,User ID) — 這數字相當於該使用者,當系統與應用程式要決定存取權限時,就會用到這號碼。

  • 群組 ID(GID,Group ID) — 這數字相當於群組,當系統與應用程式要決定存取權限時,就會用到這號碼。

  • GECOS — GECOSclearcase/" target="_blank" >cctsgrps-rhlspec.html#FTN.AEN6503" name="AEN6503">[1] 以某些歷史原因而命名,是選用的欄位,可以用來儲存額外的訊息(例如使用者的全名)。您可以在這欄位中儲存多種訊息,以逗號隔開。一些工具程式,例如 finger 就會讀取這個欄位,以獲得使用者的額外資訊。

  • 家目錄(Home directory) — 這絕對路徑指向使用者的家目錄,例如 /home/juan/

  • Shell — 當使用者登入時,會自動執行的程式。這程式通常是命令列解譯器(通常稱為 shell)。在 Red Hat Enterprise Linux 下,預設值為 /bin/bash。如果這欄位是空白的,那麼系統會採用 /bin/sh。如果這欄位指向一個不存在的檔案,那麼使用者就無法登入系統。

底下是 /etc/passwd 的一筆範例:

root:x:0:0:root:/root:/bin/bash

這行文字顯示了 root 使用了 shadow password,UID 與 GID 都是 0。root使用者的家目錄為/root/,並採用 /bin/bash為 shell。

欲知更多 /etc/passwd 的資訊,請參閱 passwd(5) 的 man page。

6.3.2.2. /etc/shadow

因為 /etc/passwd 檔案必須讓所有人讀到(這是為了將 UID 轉譯成使用者名稱),所以把所有人的密碼都存在 /etc/passwd中,會有潛在的危險。沒錯,雖然所有密碼都是加密過的;但有了加密過的密碼,就有可能將原有的密碼破解出來。

如果攻擊者拿到一份 /etc/passwd 檔案,那他就可以用某些方法,讓秘密不再是秘密。攻擊者不用冒著一直登入系統,用破解程式不斷嘗試密碼的風險;他只要用以下步驟,執行破解程式即可:

  • 用密碼破解程式產生可能的密碼

  • 用與系統相同的演算法則,為可能的密碼加密

  • 把加密過後的結果,跟 /etc/passwd 中的加密密碼相比對

這種攻擊最危險的地方,是攻擊者可以在您的公司以外破解密碼。他也可以使用高效能的硬體,用最快的破解速度找出密碼。

因此,包含了密碼(可能還包括密碼過期資訊)的/etc/shadow 檔案就只能由 root 使用者讀取。跟 /etc/passwd 檔案一樣,每個使用者的資訊各佔一行,每行的所有欄位都以冒號隔開,包括以下資訊:

  • 使用者名稱(Username) — 這是使用者登入系統時,需要輸入的名稱。這可以讓 login(登入)程式讀取使用者的密碼(與相關資訊)。

  • 加密過後的密碼(Encrypted password) — 13 到 24 個字元的密碼。密碼會用 crypt(3) 函式庫或 md5 雜湊演算法加密。這欄位可能會儲存正確格式的密碼、或雜湊以外的文字,以控制使用者登入,並顯示密碼狀態。例如 !* 表示該帳號已經被鎖定,使用者不能登入。如果其中的值為 !!,那表示之前從來沒有設定過密碼(也因此該使用者不能登入)。

  • 最後變更密碼的日期 — 這是自 1970 年 1 月 1 日(也稱為「epoch(新紀元時間;UNIX 標準時))」算起,最後一次變更密碼的日數。這欄位會跟下幾個欄位相結合,組成密碼過期政策。

  • 下次可變更密碼前的經過天數 — 要改變密碼前,至少得經過的天數。

  • 距離下次變更密碼的天數 — 這欄位記載距離下次變更密碼前,所經過的天數。

  • 距離下次變更密碼前,提示使用者的天數 — 在密碼過期前幾天,系統會通知使用者最後期限。這欄位記載了這個天數。

  • 距離帳號停用前的天數 — 在密碼過期後、帳號停用前的天數。

  • 帳號被停用的日子 — 這日期(以 epoch 格式紀錄)記載了使用者帳號被停用的日子。

  • 保留欄位 — Red Hat Enterprise Linux 會忽略這個欄位。

底下這行文字是 /etc/shadow 的範例:

juan:$.QKDPc5E$SWlkjRWexrXYgc98F.:12825:0:90:5:30:13096:

這行文字顯示了使用者 juan 的資訊:

  • 最後一次變更密碼的日子是 2005 年 2 月 11 日

  • 使用者可以隨時變更密碼,不需要先等待一段時間

  • 使用者每 90 天得變更一次密碼

  • 在必須變更密碼前五天,使用者會收到警告訊息

  • 在密碼過期後 30 天,如果使用者依舊沒登入,那麼帳號會被停用

  • 這帳號將在 2005 年 11 月 9 日過期

欲知更多 /etc/shadow 的相關訊息,請參閱 shadow(5) man page。

6.3.2.3. /etc/group

/etc/group 是個所有人都讀得到的檔案,包含了群組清單,每一行都記載了一筆群組資訊,每項資訊都由冒號隔開,包含以下資訊:

  • 群組名稱(Group name) — 群組的名稱,多種工具程式會使用這清晰易懂的名稱來辨識群組。

  • 群組密碼(Group password) — 如果您設定這個值的話,那麼非本群組的使用者就可以用 newgrp 指令,輸入此處記載的密碼,以加入群組。如果這個欄位顯示的是 x,那就表示使用了 shadow group password。

  • 群組 ID(GID,Group ID) — 這數值等同於群組名稱。作業系統與應用程式會使用這個欄位,決定存取權限。

  • 使用者清單(Member list) — 這欄位用逗號分隔所有屬於這群組的使用者。

底下一行是 /etc/group 的部份範例:

general:x:502:juan,shelley,bob

這一行顯示 general 群組使用了 shadow password,GID 為 502,同時使用者 juanshelley、以及 bob 都屬於這個群組。

欲知關於 /etc/group 的更多資訊,請參閱 group(5) man page。

6.3.2.4. /etc/gshadow

/etc/gshadow 只能由 root 使用者讀取,其中紀錄了每個群組加密過後的密碼,以及使用者與管理者資訊。跟 /etc/group 檔案一樣,每筆群組資訊都除存在同一行裡,每一行的欄位都以冒號隔開,包括以下資訊:

  • 群組名稱(Group name) — 群組的名稱,多種工具程式會使用這清晰易懂的名稱來辨識群組。

  • 加密過後的密碼(Encrypted password) — 這個群組加密過後的密碼。如果您設定了這個值,那麼不是這個群組的使用者可以利用 newgrp 指令,輸入這個密碼,加入這個群組。如果這個欄位的值是 !,那麼使用者就不能以 newgrp 指令加入本群組。!! 的作用跟 ! 相同 — 不過這表示之前沒有設定過群組密碼。如果這是個空值,那表示只有這個群組的使用者可以登入群組。

  • 群組管理者(Group administrators) — 列在這欄位的使用者(多使用者則用逗號隔開)可以使用 gpasswd 指令,新增或移除群組使用者。

  • 群組使用者(Group members) — 這欄位列出了屬於這群組的一般使用者(以逗號隔開),群組管理者不在其中。

底下一行是 /etc/gshadow 的部份範例:

general:!!:shelley:juan,bob

這一行表示 general 並沒有密碼,但也不允許其他使用者利用 newgrp 指令加入本群組。除此之外,使用者 shelley 是群組管理者,而 juanbob 是一般使用者,與管理工作無關。

由於手動修改這檔案可能會因為人為疏失而引起錯誤,所以我們建議您使用 Red Hat Enterprise Linux 提供的應用程式來修改這檔案。接下來的章節將為您介紹這些工作。

6.3.3. 使用者帳號與群組應用程式

在 Red Hat Enterprise Linux 系統中,有兩種基本的應用程式可以用來管理使用者帳號與群組:

  • 圖形化的 使用者管理員 應用程式

  • 一系列的命令列工具

欲了解使用 使用者管理員 的更多詳細指引,請參閱《Red Hat Enterprise Linux 系統管理手冊》中,使用者與群組設定(User and Group Configuration)章節。

雖然 使用者管理員 應用程式與命令列的工具組作用相同;但後者可以寫進 script 檔案中,更容易當作系統自動化的依據。

底下的表格描述了用來建立、管理使用者帳號與群組的基本命令列工具:

應用程式功能
/usr/sbin/useradd新增使用者帳號。這工具也可以用來設定使用者所屬的首要與次要的群組。
/usr/sbin/userdel刪除使用者帳號。
/usr/sbin/usermod編輯帳號的屬性,包括修改密碼過期政策等等。如果您要使用更細部的設定,請使用 passwd 指令。usermod 也可以用來設定使用者所屬的首要與次要的群組。
passwd設定密碼。雖然這工具主要用來變更使用者密碼,但它也用來控制有關密碼過期問題的所有選項。
/usr/sbin/chpasswd這工具會讀入包含使用者名稱與密碼組合的檔案,然後更新每個使用者的密碼。
chage改變使用者的密碼過期政策。passwd 也能達到相同的目的。
chfn改變使用者的 GECOS 資訊。
chsh改變使用者的預設 shell。

表格 6-2. 管理使用者帳號的命令列工具

底下的表格描述了用來建立、管理群組的基本命令列工具:

應用程式功能
/usr/sbin/groupadd新增群組,但不把任何使用者加入其中。您接下來該使用 useraddusermod 指令,將使用者加入群組。
/usr/sbin/groupdel刪除群組。
/usr/sbin/groupmod修改群組名稱或 GID;但不變更群組內的使用者。您接下來該使用 useraddusermod 指令,將使用者加入群組。
gpasswd改變群組的會員資料並設定密碼,好讓知道群組密碼的非群組使用者加入群組。這工具也可以用來指定群組管理者。
/usr/sbin/grpck檢查 /etc/group/etc/gshadow 檔案的完整性。

表格 6-3. 管理群組的命令列工具

這裡列出的工具提供系統管理者更多的彈性,控制所有使用者帳號與群組的相關事宜。要了解更多詳細內容,請參閱這些檔案的 man page。

不過,這些應用程式並不能決定使用者與群組能控制哪些資源。要達到這目的,系統管理者必須使用檔案權限應用程式。

6.3.3.1. 檔案權限應用程式

在企業中,檔案權限是管理資源的一部分。底下的表格描述了用來管理檔案權限的基本命令列工具:

應用程式功能
chgrp將檔案的所有權轉移到另一個群組。
chmod改變某個檔案的存取權限。這程式也可以用來指定特殊的權限。
chown改變檔案的所有權(也可以用來變更群組)。

表格 6-4. 權限管理的命令列工具

在 GNOME 與 KDE 圖形環境中,您可以很輕易地改變這些屬性。只要在檔案的圖示上(例如在桌面上或檔案管理員中的圖示)按右鍵,選擇屬性(Properties)即可。

[1]

GECOS 是奇異泛用作業管理者(General Electric Comprehensive Operating Supervisor)的縮寫,用在貝爾實驗室(Bell Labs)的最原始 UNIX 版本中。當時在實驗室裡有多種不同的電腦,其中一台執行了 GECOS,儲存的訊息可以讓 UNIX 作業系統發送批次作業與列印工作的資訊。

原文转自:http://www.ltesting.net