超級用戶

超級用戶(英語:Superuser)也被稱為管理員帳戶,是計算機操作系統領域中的一種用於進行系統管理的特殊用戶,其在系統中的實際名稱也因系統而異,如rootadministratorsupervisor

為了使病毒惡意軟件與普通的用戶錯誤不對整個系統產生不利的影響,在系統裡日常任務都是由無法進行全系統變更的普通用戶賬戶所完成。在組織機構中,管理權限一般都預留給經驗豐富的授權人士使用,並通過即時日誌等方式進行監管記錄。

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權限(即提升權限英語Privilege escalation來以root權限執行用戶提供的代碼),這會造成嚴重的計算機安全問題,相對應的修復這些軟件則是系統安全維護的重要組成部分。讓某個正以超級用戶權限運行的程序的緩衝區溢出(某些情況下亦稱緩衝區攻擊)是一種常見的(非法)獲得root權限的方式,在現代的操作系統中則一般採取將關鍵程序(如網絡服務器程序)運行於一個特別的限權用戶之下的方式來預防這種情況的發生。

Windows NT

Windows NT及其衍生的後繼系統(如Windows 2000Windows XPWindows Server 2003Windows 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-DOSWindows 9x)上並沒有多用戶的概念,因而也沒有單獨的管理賬戶,所有使用系統的人都有所有管理特權,這種沒有分隔權限的情況也被認為是這些系統的重要安全隱患之一。[7]

參見

參考文獻

  1. ^ The Jargon File (version 4.4.7)頁面存檔備份,存於網際網路檔案館), catb.org
  2. ^ "What is this UID 0 toor account?"頁面存檔備份,存於網際網路檔案館), freebsd.org
  3. ^ What is root? -- definition by The Linux Information Project (LINFO). [2011-11-06]. (原始內容存檔於2021-05-08). 
  4. ^ 4.0 4.1 存档副本. [2011-11-21]. (原始內容存檔於2012-07-11). 
  5. ^ 5.0 5.1 5.2 存档副本. [2011-11-21]. (原始內容存檔於2017-08-26). 
  6. ^ 存档副本. [2011-11-21]. (原始內容存檔於2017-09-18). 
  7. ^ Security soapbox - a humorous and brief explanation of Windows insecurity. [2011-11-07]. (原始內容存檔於2019-07-23). 

外部連結