Trong tin học, siêu người dùng (tiếng Anh: superuser) 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;[1] 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 sửa

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 BeOSavatar trong một số biến thể Unix.[2] 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.[3] 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,[4] 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.[5] 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,[6][7] 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,[8] adm,[9] 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.[10]

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[6]), 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.[6] Trên những hệ điều hành di động như Apple iOSAndroid, 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ả.[11]

Microsoft Windows sửa

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).[12] 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.[13] 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.[13] Đ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).[13] 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.[14]

Xem thêm sửa

Tham khảo sửa

  1. ^ “getpwuid”. opengroup.org. Truy cập ngày 12 tháng 1 năm 2019.
  2. ^ The Jargon File (version 4.4.7), catb.org
  3. ^ "What is this UID 0 toor account?", freebsd.org
  4. ^ “What is root? - definition by The Linux Information Project”. LINFO. Truy cập ngày 7 tháng 8 năm 2012.
  5. ^ “/root: Home directory for the root user (optional)”.
  6. ^ a b c “RootSudo”. ubuntu.com. Truy cập ngày 16 tháng 9 năm 2015.
  7. ^ “4.4. Administrative Controls”. redhat.com. Truy cập ngày 16 tháng 9 năm 2015.
  8. ^ “2.3. Configuring sudo Access”. redhat.com. Truy cập ngày 16 tháng 9 năm 2015.
  9. ^ “difference adm - root”. Truy cập ngày 1 tháng 8 năm 2016.
  10. ^ Brian Wotring (2005). Host Integrity Monitoring Using Osiris and Samhain. Elsevier. tr. 32. ISBN 978-0-08-048894-3.
  11. ^ "Security in Plan 9" Lưu trữ 2007-03-02 tại Wayback Machine, Bell Labs
  12. ^ “Microsoft Corporation”. Microsoft.com. Truy cập ngày 7 tháng 8 năm 2012.
  13. ^ a b c “Enable and Disable the Built-in Administrator Account”. microsoft.com. Truy cập ngày 26 tháng 2 năm 2014.
  14. ^ “The LocalSystem Account”. microsoft.com. Microsoft. Truy cập ngày 16 tháng 9 năm 2015.

Liên kết ngoài sửa