超級用戶
超級用戶(英語: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