Linux 伺服器系統管理第五章 帳戶管理  上一頁    下一頁

5-3 帳戶類別

內容:

5-3-1 帳戶與使用者身份

就單純的角度來看,『多使用者』(Multi-user)系統當然允許多使用者可同時登入,並操作使用系統。若從宏觀的觀點來看,整部系統的運作是由多人共同努力,並承擔各種工作所達成。前者是系統表面上的服務導向,後者才是真正建構系統的因素。由此可見,一部系統不僅只是使用資源的使用者而已,還有更多使用者默默的為系統運作而努力;這種觀念就好像『遊樂區』一樣,使用者並不單指遊客而已,許多工作人員也是屬於使用者之一。

因此一部 Unix/Linux 系統除了管理者所建立的使用者帳戶,還有許多從事於某一特定工作的內部使用者(又稱系統操作者,System operator)。基本上,系統操作者也需要一個帳戶來規劃它的執行權限,只不過這類使用者不需要登入程序,也沒有 Login script Home directory。簡單的說,Unix/Linux 上的使用者大致上可區分為『一般使用者』與『系統操作者』二類,此二類使用者都需要帳戶來規範操作權限,一般使用者需要經過登入程序才可以啟動;而系統操作者則不需經過登入程序,只要系統需要時,透過呼叫來啟動它即可。以下分別說明這兩類使用者的屬性。

初學者多半認為『使用者』(Users)是經過登入程序後,再使用系統資源,其實不然,系統中有許多無需登入程序就已存在的使用者,而這些使用者大多從事於某一特定的工作。之前本書曾經介紹過,一套運作中的作業系統就宛如一座工廠一般,裡面有許多工作人員隨時從事自己某一特定的工作。如果給予這個工廠某一特定管理程序及製作工具,它就可以生產出各種不同的產品。作業系統也是一樣,植入不同運作程序及軟體套件,便可提供不同的服務。譬如,一套 Unix/Linux 系統可能從事於生產管理系統、銷售管理系統、網頁伺服系統、郵件系統、甚至 CAD/CAM 等等。也就是說,系統會依照某種特殊需求,植入不同的軟體,同時也產生一個特殊操作者來執行該軟體,這類操作者會使用到系統資源,也是另一類的使用者。

由此可見,系統內可能存在許多不同性質的使用者,在此我們大略可將一部 Unix/Linux 系統的使用者屬性,區分為以下三大類型:

5-3-2 系統管理者

在系統安裝的同時,就會自動建立一個『系統管理者』(System administrator),其帳戶名稱及所屬群組名稱皆固定為 root,屬於此群組的使用者皆享有最高權限,可以任意刪除或增加系統執行程序。為了安全起見,一般系統並不允許 root 使用者從遠端登入,僅允許在主控台(Consol)登入,但有時為了方便操作,或一部系統有多個系統管理者時,並不希望每一個人都以 root 帳戶登入系統,如此將很難記錄哪些命令是由何人所執行。因此,都會將某些具有管理責任的帳戶加入 root 群組上,這些帳戶可以遠端登入,也可以管理系統,而且可由記錄檔(Log file)上觀察出,所有帳戶所下達的命令,順便可觀察是否有越權或違規的事件發生。

既然帳戶名稱都固定為 root,密碼的保護就顯得格外重要,甚至可以說,只要知道 root 的密碼就相當於有 root 的權限了。Unix/Linux 就依照這個觀點,讓知道 root 密碼的使用者可以立即升級成管理者身份。任何帳戶執行 susubstitute user)命令,並輸入 root 密碼,即可立即升級成為 root 身份;恢復原來身份可執行 exit 命令或直接鍵入 Ctrl+D 即可,操作範例如下:

[tsnien@linux-1 ~]$ su

Password:######                   【輸入 root 密碼】

[root@linux-1 tsnien]#               【取代成 root 身份】

[root@linux-1 tsnien]# cd             【切換到 root 家目錄】

[root@linux-1 root]# exit             【輸入 exit 命令】

exit

[tsnien@linux-1 tsnien]$              【恢復原來身份並回原家目錄】

值得注意的是,雖然可以利用 su 命令,取得 root 身份,但未真正執行 root 的登入命令稿(Login script)的話,也就沒有真正進入 root 的外殼環境(Shell environment),因此許多環境變數並沒有改成 root 的環境變數,譬如 PATH 變數還是保留原來使用者的內容。

5-3-3 一般使用者

經由系統管理者所建立的帳號,稱為『一般使用者』(General Users)。系統管理者建立帳戶時,必須指定該帳戶屬於哪一群組、家目錄、以及登入外殼程式等等。使用者若需要使用某一系統資源,或在該系統上從事工作之前,都必須向系統管理者提出申請。待系統管理者評估申請者的身份後,再開啟申請者帳戶,並通知他使用系統。

值得注意的是,使用者登入系統之後,系統會針對使用者帳戶建立一個執行程序(Process),並給予一個程序號碼(Process ID, PID),爾後所有處理動作僅針對此 PID 運作。因此,同一個帳戶可供多人同時登入,系統會針對每一個登入(同一帳戶)給予一個獨一無二的 PID 號碼。系統是依據 PID 識別運作,多人使用同一帳戶登入後,雖然在同一家目錄下工作,但之間運作也不至於發生衝突。又有某些使用者登入系統後,僅瀏覽或參觀系統資源並不真正執行某些特定工作,此類使用者一般稱之為『訪客』(Guest),一般系統都會建立一個Guest 帳戶,供這些客戶登入使用。

5-3-4 系統操作者

此類使用者大多是建立系統或安裝某種軟體時,系統依其需求自動建立的帳戶。基本上,這些帳戶是無法登入的,僅於需要它執行時,系統才會去啟動它,因此稱之為『系統操作者』(System operators)。每一系統使用者大多背負著某一特殊的任務,並隨時等待執行此工作。譬如,一般系統上都有一個 lpLine printer)使用者,專門負責列印的功能。當某一線上使用者需要列印資料時,只要將資料交付給 lp 使用者,它就會幫它印出來,該使用者根本不用理會印表機安裝的位置(近端或遠端)與印表機驅動程式等問題;如果需要郵遞信件時,只要將信件交給 mail 操作者,它就幫您傳遞郵件,您根本不用知道郵件伺服器在哪裡;甚至,當您想要關閉主機時,只要通知 shutdown 操作者,何時關機或關機之前應傳送哪些訊息給線上使用者, shutdown 都會依照指示程序,按時關閉主機。由此可見,這類的使用者就好像工廠裡的作業員一樣,隨時等待執行某特定的工作,如果工廠裡有許多這類型的操作者,然而這些操作員都依循著某一生產程序,便可以製造出各型各類的產品。

每一個系統操作者都有一個獨立的帳戶,某些工作性質相同者也會被歸納在同一群組,並規劃其群組的權限範圍,如 bindaemonsyslp 等等群組。常見系統工作者的範例如下:

  • lp:列印工作者,專門負責列印的工作。

  • shutdown:關機工作者,專門負責執行關機程序者。

  • daemon:監督工作者,專門執行某一特殊功能的監督程式。

  • named:名稱工作者,專門負責執行 DNS 名稱查詢工作者。

  • apache:網頁工作者,專門負責執行 Apache 網頁伺服工作者。

  • uucp UUCP 工作者;專門負責執行 UUCPUnix to Unix Copy)伺服工作者。

任何一部 Unix/Linux 系統安裝越多軟體套件,就將會建立越多系統工作者,也就是說,系統會針對每一個軟體套件開啟一個以上的帳戶。當需要執行某一套件時,只要呼叫它的系統操作者,再由它負責執行;操作者執行軟體套件所得到的某些結果,會傳遞給呼叫它的程序。至於目前系統有哪些系統工作者正在執行任務中,可利用 ps –ef 顯示所有程序,除了一般使用者(或 root 系統管理者)登入外,其餘皆是系統操作者;操作範例如下:

$ ps -ef |more

UID        PID  PPID  C STIME TTY          TIME CMD

root         1     0  0 Jul20 ?        00:00:07 init [5]

root         2     1  0 Jul20 ?        00:00:00 [ksoftirqd/0]

….

rpc       1854     1  0 Jul20 ?        00:00:00 portmap

rpcuser   1874     1  0 Jul20 ?        00:00:00 rpc.statd

xfs       2434     1  0 Jul20 ?        00:00:00 xfs -droppriv -daemon

daemon    2453     1  0 Jul20 ?        00:00:00 /usr/sbin/atd

……

其中 rpcrpcuserxfsdaemon 即是系統操作者。

翻轉工作室:粘添壽

 

Linux 伺服器系統管理 - CentOS:

 

 

 

翻轉電子書系列: