超級使用者
超級使用者(英語:Superuser)也被稱為管理員帳戶,是電腦作業系統領域中的一種用於進行系統管理的特殊使用者,其在系統中的實際名稱也因系統而異,如root、administrator與supervisor。
為了使病毒、惡意軟體與普通的使用者錯誤不對整個系統產生不利的影響,在系統裡日常任務都是由無法進行全系統變更的普通使用者帳號所完成。在組織機構中,管理權限一般都預留給經驗豐富的授權人士使用,並通過即時紀錄檔等方式進行監管記錄。
Unix與類Unix系統
[編輯]在Unix與類Unix系統中,root是在所有模式(單/多使用者)下對所有檔案與程式擁有一切權限的使用者(也即超級使用者)的約定俗成的通名。但也有例外,如在BeOS中超級使用者的實名是baron,在其他一些Unix衍生版里則以avatar作為超級使用者的實名[1],而BSD中一般也提供「toor」帳號(即「root」的反寫)作為root帳號的副本[2]。無論實名為何,超級使用者的使用者ID(UID)一般都為0。root使用者可以進行許多普通使用者無法做的操作,如更改檔案所有者或繫結編號於1024之下的網路埠。之所以將「root」設定為超級使用者之名,可能是因為root是唯一擁有修改UNIX系統根目錄(root directory)權限的使用者,而根目錄最初就被認為是root的家目錄。[3]
在類Unix系統引導過程中引導的第一個程式(常被稱為init)就是以root權限執行的,其他所有行程都由其直接或間接衍生而出,並且這些行程都繼承了各自的父行程的權限。只有以root權限執行的行程才能將自己的UID修改為其他使用者對應的UID,且對應UID在修改完成之後無法改回,這種行為有時也被稱為丟棄root權限,其目的主要是為了安全考慮——(在行程出錯等情況下)降低行程污染所造成的損失。另一種情況是,使用者登入後,有些程式會向使用者請求認證提升權限,當認證成功後使用者就能以其帳號所對應的權限來執行程式。
對任何人(也包括系統管理員自己)來說,將root當作一般使用者帳號使用都絕不是一個好習慣,因為即使是輸入命令時的微小錯誤都可能對系統造成嚴重破壞,因而相較之下較為明智的做法是建立一個普通使用者帳號用作日常使用,需要root權限時再用su切換到root使用者。sudo工具也是個暫時性取得root權限的替代方法。
在Mac OS X與一些Linux發行版中則允許管理員帳號(注意,這與root這樣的全權帳號有別)擁有更多的權限,同時也封鎖掉大部分容易(因誤操作)造成損害的root權限。某些情況下,root帳號是被預設禁用的,需要時必須另外啟用。另外在極少數系統(如Plan 9)中,系統中根本沒有超級使用者。
某些軟體缺陷能使使用者獲得root權限(即提升權限來以root權限執行使用者提供的代碼),這會造成嚴重的電腦安全問題,相對應的修復這些軟體則是系統安全維護的重要組成部分。讓某個正以超級使用者權限執行的程式的緩衝區溢位(某些情況下亦稱緩衝區攻擊)是一種常見的(非法)獲得root權限的方式,在現代的作業系統中則一般採取將關鍵程式(如網路伺服器程式)執行於一個特別的限權使用者之下的方式來預防這種情況的發生。
Windows NT
[編輯]在Windows NT及其衍生的後繼系統(如Windows 2000、Windows XP、Windows Server 2003及Windows Vista/7),系統裡要麼至少有一個管理員帳號(Windows XP及更早的系統),要麼可以使用使用者帳號控制(User Account Control,簡稱UAC)機制提升到超級使用者權限(Windows Vista/7)[4]。在Windows XP及更早的系統中有內建一個初始密碼為空的管理帳號(實名為「Administrator」)[5],此帳號在存在其他有系統管理權限的使用者帳號時是預設隱藏的,但該使用者實際上未被禁用[5];顯而易見的,這種做法會帶來安全問題,所以在Windows Vista與其後繼系統中預設禁止了內建的Administrator帳號,並引入UAC機製取而代之[5]。
Windows的Administrator與Unix的root帳號不盡相同,Windows將部分權限分配給了「本地系統帳號」,Administrator帳號的目的只是為了允許在電腦上進行全系統範圍(包括本地系統帳號權限所不能及之範圍)的更改[4]。
Windows內建的Administrator帳號與一般的管理員使用者享有同等的權限,Windows系統中預設建立的使用者帳號也擁有管理權限,而與Mac OS X,Linux與Windows Vista/7的管理員帳號不同的是,Windows中無UAC限制的Administrator帳號無法將系統與超級使用者權限容易造成的損害(如降低對惡意軟體的抗力)相隔離。在Windows 2000,Windows XP專業版與Windows Server 2003中,管理員可用在帳號屬性中將帳號所屬組由管理員組更改為權力使用者(Power User)組的方式來解決這一問題[6],但這一解決方法不如使用帶有UAC機制的新版Windows系統有效。
對於Windows XP(及早期的系統)的管理員帳號來說,提升權限執行程式並不需認證;這種做法有相當的安全隱患,解決這一問題也是開發UAC的目的之一。與之相對的,在Windows Vista/7中,管理員帳號提升權限執行行程的時候會有確認提示,但不需要進行使用者資格認證,而普通使用者帳號則需在提示框內輸入任一管理員帳號的使用者名稱和密碼才能通過認證;具體來說,使用者可以以將行程設定為「以管理員權限執行」或使用「runas」命令並用任一管理員帳號的使用者名稱和密碼進行資格認證的方式在普通使用者下提升權限執行行程,但如若提權執行認證時所使用的管理員帳號對應的密碼為空(就像XP及早期系統內建的Administrator帳號一樣)時,認證機制的意義就大減了。
Novell NetWare
[編輯]在Novell NetWare中,超級使用者的實名是「Supervisor」,後來更改為「admin」。
早期的個人系統
[編輯]許多早期的針對個人/家庭應用而設計的作業系統(如MS-DOS與Windows 9x)上並沒有多使用者的概念,因而也沒有單獨的管理帳號,所有使用系統的人都有所有管理特權,這種沒有分隔權限的情況也被認為是這些系統的重要安全隱患之一。[7]
參見
[編輯]參考文獻
[編輯]- ^ The Jargon File (version 4.4.7) (頁面存檔備份,存於網際網路檔案館), catb.org
- ^ "What is this UID 0 toor account?" (頁面存檔備份,存於網際網路檔案館), freebsd.org
- ^ What is root? -- definition by The Linux Information Project (LINFO). [2011-11-06]. (原始內容存檔於2021-05-08).
- ^ 4.0 4.1 存档副本. [2011-11-21]. (原始內容存檔於2012-07-11).
- ^ 5.0 5.1 5.2 存档副本. [2011-11-21]. (原始內容存檔於2017-08-26).
- ^ 存档副本. [2011-11-21]. (原始內容存檔於2017-09-18).
- ^ Security soapbox - a humorous and brief explanation of Windows insecurity. [2011-11-07]. (原始內容存檔於2019-07-23).
外部連結
[編輯]- root的定義 (頁面存檔備份,存於網際網路檔案館)(英文), Linux Information Project
- Mac OS X安全機制介紹 (頁面存檔備份,存於網際網路檔案館)(英文)
- 關於FreeBSD的"Charlie Root"起源的討論 (頁面存檔備份,存於網際網路檔案館)(英文), FreeBSD Pipermail