Siêu người dùng

Trong tin học, **siêu người dùng** () là một tài khoản người dùng đặc biệt được sử dụng để quản lý hệ thống. Tùy vào hệ điều hành mà tài khoản này còn được gọi là **root**,  **quản trị viên**, **admin** hay **supervisor**. Trong một số trường hợp, tên của tài khoản không phải là yếu tố quyết định; trong các hệ điều hành giống Unix, tài khoản với mã định danh người dùng (UID) 0 là siêu người dùng, bất kể tên tài khoản; và trong những hệ thống theo mô hình bảo mật bằng vai trò, bất kỳ người dùng nào có vai trò của siêu người dùng có thể thực hiện tất cả tác vụ của tài khoản siêu người dùng.

Nguyên tắc đặc quyền thấp nhất khuyến khích phần lớn người dùng và ứng dụng chạy trong tài khoản bình thường để thực hiện tác vụ, bởi tài khoản siêu người dùng có khả năng thực hiện những thay đổi không giới hạn, tác động xấu đến toàn hệ thống.

## Unix và Unix-like
Trong những hệ điều hành máy tính giống Unix (như là Linux), *root* là tên gọi thông thường của người dùng với tất cả quyền hạn (với tất cả file và chương trình) trong mọi mode (một hoặc nhiều người dùng). Những tên gọi khác bao gồm *baron* trong BeOS và *avatar* trong một số biến thể Unix. BSD thường cung cấp một tài khoản *toor* ("root" viết ngược) ngoài tài khoản root. Bất kể tên gọi, siêu người dùng luôn có ID người dùng bằng 0. Người dùng root có thể làm nhiều thứ mà người dùng bình thường không thể, ví dụ như thay đổi quyền sở hữu của file và theo dõi các cổng thấp hơn 1024.

Cái tên *root* có thể xuất phát từ việc *root* là tài khoản duy nhất có quyền chỉnh sửa thư mục gốc hay root directory của một hệ thống Unix. Thư mục này ban đầu được coi là thư mục nhà của tài khoản root, nhưng Tiêu chuẩn phân cấp hệ thống tệp của UNIX khuyến cáo nhà của root tại /root.** Quá trình đầu tiên tự khởi động trong một hệ thống giống Unix, thường được gọi là init, chạy với quyền của root. Quá trình này khởi động tất cả những quá trình khác trực tiếp hoặc gián tiếp, và các quá trình con thừa hưởng đặc quyền của quá trình mẹ. Chỉ có quá trình chạy dưới tài khoản root được quyền thay đổi ID người dùng của nó sang mã của người dùng khác, và khi đã thực hiện điều đó, không thể quay trở lại làm root. Việc này đôi khi được gọi là *bỏ đặc quyền root* và thường được dùng làm biện pháp bảo mật để giới hạn tác động từ quá trình đó trong trường hợp bị tấn công. Một trường hợp khác là đăng nhập, các chương trình hỏi người dùng thông tin chứng thực và nếu xác thực thành công sẽ cho phép người dùng chạy chương trình với đặc quyền của tài khoản của họ.

Người dùng thường được khuyên không sử dụng *root* làm tài khoản thông thường, bởi ngay cả lỗi chính tả trong việc nhập dòng lệnh có thể gây thiệt hại lớn đến hệ thống. Việc sử dụng tài khoản thông thường, và dùng su hoặc sudo khi cần thiết sẽ giúp giảm thiểu việc này. Sử dụng *su* yêu cầu người dùng biết mật khẩu root, trong khi *sudo* yêu cầu người dùng được cài đặt với khả năng chạy với vai trò là root trong file */etc/sudoers*, thường là gián tiếp thông qua việc trở thành thành viên của nhóm người dùng *wheel*, *adm*, *admin*, hay *sudo*.

Vì nhiều lý do, sử dụng *sudo* là phương thức được khuyến cáo hiện nay – ví dụ nó để lại một biên bản kiểm tra (audit trail) của những người đã dùng dòng lệnh và tác vụ quản trị họ đã thực hiện.

Một số hệ điều hành, bao gồm macOS và một số bản phân phối Linux như Ubuntu), tự động cho người dùng được tạo đầu tiên khả năng chạy như root bằng *[[sudo]]* – nhưng được cài đặt để hỏi họ mật khẩu trước khi thực hiện tác vụ đó. Trong một số trường hợp, tài khoản root bị vô hiệu hóa theo mặc định và không thể được dùng trực tiếp. Trên những hệ điều hành di động như Apple iOS và Android, quyền truy cập siêu người dùng bị khóa theo thiết kế, tuy nhiên thông thường hệ thống bảo mật có thể bị khai thác để truy cập nó. Trong một số hệ thống, như là Plan 9, không có siêu người dùng nào cả.

## Microsoft Windows
Trong Windows NT và những hệ thống sau này dựa vào nó như Windows 2000, Windows XP, Windows Server 2003, và Windows Vista/7/8/10), có ít nhất một tài khoản quản trị viên (Windows XP về trước) hoặc một tài khoản có thể nâng đặc quyền của mình lên siêu người dùng (Windows Vista/7/8/10 thông qua User Account Control). Trong Windows XP và những hệ điều hành trước đó, có một tài khoản quản trị viên có sẵn được giấu đi khi người dùng có một tài khoản tương đương với quản trị viên. Tài khoản quản trị viên có sẵn này được tạo với mật khẩu để trống. Điều này dẫn đến nguy cơ bảo mật bởi người dùng có thể truy cập máy tính với tài khoản quản trị viên có sẵn nếu để trống ô mật khẩu, do đó nó bị vô hiệu hóa theo mặc định trong Windows Vista trở về sau và thay thế bằng User Account Control (UAC). Người dùng từ xa không thể truy cập tài khoản quản trị viên có sẵn này.

Một tài khoản quản trị viên Windows không hoàn toàn tương đương với tài khoản root của Unix – quản trị viên, tài khoản quản trị viên có sẵn, và tài khoản quản trị viên của người dùng có đặc quyền như nhau. Tài khoản người dùng mặc định trong một hệ thống Windows là một tài khoản quản trị viên. Không như tài khoản quản trị viên trong macOS, Linux, và Windows Vista/7/8/10, tài khoản quản trị viên trong những phiên bản Windows không có UAC không cách ly hệ thống khỏi những vấn đề của truy cập bằng root, bao gồm khả năng chống nhiễm mã độc suy giảm.

Trong các tài khoản quản trị viên của Windows Vista/7/8/10, một cửa sổ sẽ hiện lên để xác thực chạy quá trình với quyền cao hơn. Thông thường, người dùng không cần nhập thông tin chứng nhận để xác thực cửa sổ hỏi UAC trong tài khoản quản trị viên nhưng phải nhập tên và mật khẩu của một quản trị viên trong tài khoản thông thường. Trong Windows XP trở về trước, khi sử dụng tài khoản quản trị viên, không yêu cầu xác thực để chạy một quá trình với quyền được nâng cấp. Người dùng có thể đặt một quá trình chạy với đặc quyền cấp cao từ tài khoản thông thường bằng cách chọn "Run as administrator" hoặc dùng lệnh "runas" và xác nhận cửa sổ hỏi với thông tin (tên và mật khẩu) của một tài khoản quản trị viên.

Trong Windows NT, 2000 và trở về sau, người dùng root là tài khoản quản trị viên.

## Xem thêm
* passwd
* Người dùng chuyên năng
* Nguyên tắc đặc quyền thấp nhất
* Root (Android)
* Rootkit
* Leo thang đặc quyền
* sudo
* Jailbreak iOS

## Tham khảo

## Liên kết ngoài

* Định nghĩa root - bởi Dự án Thông tin Linux (LINFO)
* Giới thiệu về Bảo mật Mac OS X