Trong bài hướng dẫn này, bạn sẽ được khám phá chi tiết về quyền truy cập root, lệnh sudo và cách thực thi lệnh với sudo, đồng thời nắm bắt được những khác biệt cơ bản giữa quyền sudo và tài khoản root. Ngoài ra, bài viết còn cung cấp các chỉ dẫn cụ thể giúp bạn thêm người dùng vào file sudoers trên Arch Linux cũng như tạo tài khoản sudo cho các hệ điều hành phổ biến, đáp ứng tối đa nhu cầu quản trị hệ thống một cách chuyên nghiệp và hiệu quả.
Mục lục nội dung
ToggleRoot là gì?
root ám chỉ tài khoản superuser trong các hệ thống kiểu Unix như Linux. Đây là tài khoản có đặc quyền với quyền truy cập cao nhất trên hệ thống dùng cho việc quản trị hệ thống. Tài khoản root/superuser luôn có mã định danh người dùng (UID) là số không, bất kể tên tài khoản là gì.
Bạn đang tìm hiểu cách sử dụng lệnh sudo để quản lý máy chủ cloud? Trước tiên, hãy đảm bảo bạn có một VPS đáng tin cậy. Khám phá ngay danh mục VPS giá rẻ tại DataOnline, nơi cung cấp các gói VPS hiệu năng cao, phù hợp cho mọi nhu cầu!
Người dùng root có toàn bộ quyền (quyền root) trên toàn bộ hệ thống. Nó có thể thực hiện các thao tác như chỉnh sửa các phần lõi của hệ thống, nâng cấp hệ thống, thay đổi cấu hình hệ thống, và khởi động, dừng, cũng như khởi động lại tất cả các dịch vụ hệ thống đang chạy.
Khi đăng nhập với tư cách root, biểu tượng lệnh trên terminal thay đổi từ $
thành #
. Ví dụ:
$ echo 'This is a normal user shell' # echo 'This is a root shell'
Sudo là gì?
Lệnh sudo
(viết tắt của superuser do) là một tiện ích dòng lệnh cho phép một người dùng thực thi các lệnh dưới quyền của root hoặc một người dùng khác. Nó cung cấp cách hiệu quả để cấp cho một số người dùng quyền thích hợp nhằm sử dụng các lệnh hệ thống cụ thể hoặc chạy các script với quyền của người dùng root.
Mặc dù có phần tương đồng với lệnh su
, sudo
yêu cầu mật khẩu của người dùng đã đăng nhập để xác thực, thay vì mật khẩu của người dùng đích như su
yêu cầu. Ngoài ra, sudo không tạo ra một shell của root như su
; thay vào đó, nó chỉ chạy chương trình hoặc lệnh với các quyền được nâng cao.
Với sudo
, quản trị viên hệ thống có thể thực hiện các hành động sau:
-
Cấp cho người dùng hoặc nhóm người dùng khả năng chạy các lệnh nhất định với quyền nâng cao hoặc quyền root.
-
Xem nhật ký (log) của mã người dùng của mỗi người dùng sử dụng
sudo
. -
Kiểm soát lệnh nào một người dùng có thể sử dụng trên một hệ thống máy chủ.
Sudo lưu lại nhật ký của tất cả các lệnh và tham số được thực thi trong tệp /var/log/auth.log
, tệp này có thể được phân tích khi xảy ra sự cố.
Chạy lệnh với Sudo
Để chạy lệnh với sudo, hãy thêm từ sudo
vào trước lệnh cần thực thi:
$ sudo command
Hệ thống sẽ yêu cầu bạn nhập mật khẩu, nhập mật khẩu tài khoản của bạn và nhấn ENTER:
$ sudo command [sudo] password for user:
Giờ đây, lệnh sẽ được chạy với quyền được nâng cao.
Sudo với Root
Nguyên tắc “quyền tối thiểu” (principle of least privilege) là một khái niệm trong bảo mật thông tin và máy tính, nhấn mạnh việc chỉ cấp cho chương trình và người dùng những quyền hạn tối thiểu cần thiết để thực hiện một tác vụ.
Khi đăng nhập với tư cách root, mọi lệnh nhập vào terminal đều chạy với quyền cao nhất trên hệ thống, điều này vi phạm nguyên tắc quyền tối thiểu. Một lệnh đơn giản như rm có thể bị lạm dụng để xóa các thư mục hoặc tệp quan trọng của root mà không có cảnh báo nếu không cẩn thận. Ví dụ, nếu bạn cố gắng xóa một thư mục gốc như /etc bằng lệnh:
$ rm -rf /etc
Bạn sẽ bị từ chối quyền vì bạn đang đăng nhập như một người dùng bình thường. Nhưng nếu bạn đang đăng nhập với tư cách root, không có cảnh báo nào được hiển thị và toàn bộ thư mục sẽ bị xóa – điều này có thể làm hỏng hệ thống của bạn do các tệp cấu hình đặc biệt cần thiết để chạy hệ thống được lưu trữ trong thư mục /etc. Bạn cũng có thể vô tình format sai một ổ đĩa mà hệ thống sẽ không báo trước.
Lỗ hổng này cũng ảnh hưởng đến việc chạy các ứng dụng hay chương trình dưới quyền root; một lỗi nhỏ trong ứng dụng có thể xóa mất một số tệp hệ thống vì ứng dụng đó đang chạy với quyền cao nhất.
Sudo cung cấp khả năng kiểm soát truy cập rất chi tiết. Nó chỉ nâng quyền cho một chương trình cụ thể cần quyền đó. Bạn luôn biết được chương trình nào đang chạy với quyền nâng cao, thay vì làm việc trong một shell của root (nơi mọi lệnh đều chạy với quyền root). Sudo cũng có thể được cấu hình để chạy lệnh dưới quyền của người dùng khác, chỉ định người dùng và nhóm nào được phép chạy lệnh bằng sudo, hoặc đặt thời gian hết hạn cho các chương trình chạy với quyền root thông qua việc chỉnh sửa tệp sudoers.
Do đó, việc chạy lệnh trong shell của root không được khuyến khích vì khả năng gây hỏng hệ thống của bạn sẽ cao hơn rất nhiều. Nếu bạn cần quyền cao hơn hoặc quyền root để chạy một lệnh, hãy sử dụng sudo để đảm bảo chỉ lệnh đó chạy với quyền root. Để biết thêm thông tin, hãy xem trang man của sudo.
Tạo tài khoản Sudo trên AlmaLinux, CentOS, Fedora, Rocky Linux và VzLinux
Phạm vi áp dụng cho:
-
AlmaLinux
-
CentOS 7 trở lên
-
Fedora 31 trở lên
-
Rocky Linux
-
VzLinux
Quy trình:
-
Tạo tài khoản người dùng mới bằng lệnh
adduser
:# adduser example_user
-
Đặt mật khẩu mạnh cho người dùng mới bằng lệnh
passwd
:# passwd example_user Changing password for user example_user. New password: Retype new password: passwd: all authentication tokens updated successfully.
-
Thêm người dùng vào nhóm wheel bằng lệnh
usermod
:# usermod -aG wheel example_user
-
Kiểm tra tệp sudoers bằng lệnh
visudo
:# visudo
-
Tìm nhóm wheel. Nếu dòng bị comment, hãy bỏ comment. Khi hoàn thành, nó sẽ có dạng như sau:
## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
-
Lưu và thoát vi: Nhấn Esc, sau đó gõ
:WQ
và nhấn Enter.Lưu ý: Không bao giờ chỉnh sửa trực tiếp tệp
/etc/sudoers
, luôn sử dụng lệnhvisudo
. Tiện ích visudo sẽ kiểm tra cú pháp trước khi lưu thay đổi, vì một tệp sudoers bị lỗi cú pháp có thể làm hỏng hệ thống. Nếu bạn mắc lỗi, bạn sẽ thấy thông báo khi thoát visudo:visudo: >>> /etc/sudoers: syntax error near line 64 <<< What now? Options are: (e)dit sudoers file again e(x)it without saving changes to sudoers file (Q)uit and save changes to sudoers file (DANGER!)
-
Chuyển sang người dùng mới:
# su - example_user
- Xác minh bạn đã đăng nhập đúng người dùng với lệnh
whoami
, sau đó kiểm tra quyền sudo bằng lệnhsudo whoami
, lệnh này sẽ trả về root.$ whoami example_user $ sudo whoami [sudo] password for example_user: root
Tạo và thêm tài khoản Sudo trên Arch Linux
Để cấp quyền quản trị cho một người dùng trên Arch Linux, bạn cần thêm người dùng vào nhóm sudoers một cách an toàn. Phần này hướng dẫn cách thêm người dùng vào sudoers trên Arch, đảm bảo cấu hình chính xác với Visudo để tránh lỗi hệ thống.
Quy trình:
-
Cài đặt
sudo
, vì sudo không được bao gồm trong cài đặt cơ bản. Nếu bạn chưa cập nhật, hãy nhớ cập nhật cơ sở dữ liệu kho lưu trữ địa phương trước:# pacman --sync sudo
-
Tạo tài khoản người dùng mới với lệnh
useradd
:# useradd --create-home example_user
-
Đặt mật khẩu mạnh cho người dùng mới bằng lệnh
passwd
:# passwd example_user
-
Thêm người dùng vào nhóm wheel bằng lệnh
usermod
:# usermod --append --groups wheel example_user
-
Chỉnh sửa tệp sudoers bằng lệnh
visudo
:# visudo
-
Tìm nhóm wheel trong phần “User privilege specification” ở cuối tệp. Bỏ comment khỏi dòng bắt đầu với dấu
%
, để dòng đó trở nên như sau:## Uncomment to allow members of group wheel to execute any command %wheel ALL=(ALL) ALL
-
Lưu và thoát visudo: Nhấn Esc, sau đó gõ
:wq
(chữ thường) và nhấn Enter.Lưu ý: Không bao giờ chỉnh sửa trực tiếp tệp
/etc/sudoers
, luôn sử dụng lệnhvisudo
. Tiện ích visudo sẽ kiểm tra cú pháp trước khi lưu thay đổi. Nếu bạn mắc lỗi, bạn sẽ nhận được thông báo lỗi, ví dụ:visudo: >>> /etc/sudoers: syntax error near line 64 <<< What now? Options are: (e)dit sudoers file again e(x)it without saving changes to sudoers file (Q)uit and save changes to sudoers file (DANGER!)
-
Chuyển sang người dùng mới:
# su - example_user
-
Xác minh bằng lệnh
whoami
và sau đó kiểm tra quyền sudo bằng lệnhsudo whoami
:$ whoami example_user $ sudo whoami We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for example_user: root
Tạo tài khoản Sudo trên Debian và Ubuntu
Phạm vi áp dụng cho:
-
Debian 9 “Stretch” trở lên
-
Ubuntu 16.04 trở lên
Quy trình:
-
Cài đặt sudo. Một số cài đặt có thể không có sudo sẵn. Nếu không có, cài đặt sudo bằng apt:
# apt install sudo
-
Tạo tài khoản người dùng mới với lệnh
adduser
và đặt mật khẩu mạnh cho người dùng đó. Bạn có thể nhập các giá trị thông tin người dùng, hoặc nhấn Enter để bỏ qua các trường thông tin:# adduser example_user Adding user `example_user' ... Adding new group `example_user' (1001) ... Adding new user `example_user' (1001) with group `example_user' ... Creating home directory `/home/example_user' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for example_user Enter the new value, or press ENTER for the default Full Name []: Example User Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
-
Thêm người dùng vào nhóm sudo:
# adduser example_user sudo
-
Kiểm tra bằng cách chuyển sang người dùng mới:
# su - example_user
Xác minh với lệnh
whoami
và sau đó kiểm tra quyền sudo bằng lệnhsudo whoami
:$ whoami example_user $ sudo whoami [sudo] password for example_user: root
Tạo Tài Khoản Sudo trên FreeBSD
Phạm vi áp dụng cho: FreeBSD 11 trở lên
Quy trình:
-
Cài đặt sudo từ ports collection nếu chưa có. Để cài đặt sudo từ ports:
# cd /usr/ports/security/sudo/ # make install clean
Bạn cũng có thể cài đặt gói sudo nhị phân sử dụng pkg:
# pkg install sudo
-
Tạo tài khoản người dùng mới dùng cho sudo:
# adduser
Trả lời các câu hỏi trong dialog để tạo người dùng; ví dụ sử dụng
example_user
. -
Thêm người dùng vào nhóm wheel, nhằm giới hạn ai có thể dùng su để trở thành root:
# pw group mod wheel -m example_user
-
Chỉnh sửa tệp sudoers bằng lệnh
visudo
:# visudo
-
Tìm nhóm wheel. Nếu dòng bị comment, hãy bỏ comment. Sau khi chỉnh sửa, nó sẽ có dạng như sau:
## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
-
Lưu và thoát vi: Nhấn Esc, sau đó gõ
:WQ
và nhấn Enter.Lưu ý: Không chỉnh sửa trực tiếp tệp
/etc/sudoers
; luôn sử dụngvisudo
để đảm bảo cú pháp.visudo: >>> /etc/sudoers: syntax error near line 64 <<< What now? Options are: (e)dit sudoers file again e(x)it without saving changes to sudoers file (Q)uit and save changes to sudoers file (DANGER!)
-
Chuyển sang người dùng mới:
# su - example_user
-
Xác minh với lệnh
whoami
, sau đó kiểm tra quyền sudo bằng lệnhsudo whoami
:$ whoami example_user $ sudo whoami [sudo] password for example_user: root
Tạo tài khoản Sudo trên OpenBSD
Phạm vi áp dụng cho: OpenBSD 6.6 trở lên
Quy trình:
-
Cài đặt gói sudo nhị phân. Chọn tùy chọn 1 trừ khi bạn biết rõ lý do cần gói khác:
# pkg_add sudo quirks-3.187 signed on 2020-05-19T14:41:48Z Ambiguous: choose package for sudo a 0: <None> 1: sudo-1.8.31 2: sudo-1.8.31-gettext 3: sudo-1.8.31-gettext-ldap Your choice: 1 sudo-1.8.31: ok
-
Tạo tài khoản người dùng mới dùng cho sudo và đặt mật khẩu:
# useradd -m example_user # passwd example_user Changing password for example_user. New password: Retype new password:
-
Thêm người dùng vào nhóm wheel, nhóm này giới hạn ai có thể dùng
su
để trở thành root:# user mod -G wheel example_user
-
Kiểm tra tệp sudoers bằng lệnh
visudo
:# visudo
-
Tìm nhóm wheel và bỏ comment nếu cần. Sau khi chỉnh sửa, nó sẽ có dạng:
# Uncomment to allow people in group wheel to run all commands # and set environment variables. %wheel ALL=(ALL) SETENV: ALL
-
Lưu và thoát vi: Nhấn Esc, sau đó gõ
:WQ
và nhấn Enter.Lưu ý: Không chỉnh sửa trực tiếp tệp
/etc/sudoers
; luôn sử dụngvisudo
để đảm bảo cú pháp. Nếu xảy ra lỗi, bạn sẽ thấy thông báo như:visudo: >>> /etc/sudoers: syntax error near line 64 <<< What now? Options are: (e)dit sudoers file again e(x)it without saving changes to sudoers file (Q)uit and save changes to sudoers file (DANGER!)
-
Chuyển sang người dùng mới:
# su - example_user
-
Xác minh bằng lệnh
whoami
, sau đó kiểm tra quyền sudo bằng lệnhsudo whoami
, kết quả trả về sẽ là:$ whoami example_user $ sudo whoami [sudo] password for example_user: root
Thông tin thêm về tệp sudoers
Sudo sử dụng chính sách bảo mật sudoers mặc định và lưu trữ trong một tệp cấu hình đặc biệt là /etc/sudoers
. Tệp này được sử dụng để kiểm soát quyền truy cập và thời gian chờ của lời nhắc mật khẩu.
Lưu ý: Bạn phải có quyền nâng cao để xem tệp sudoers.
Mở tệp /etc/sudoers
; nó sẽ có nội dung như sau:
# This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/ sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "@include" directives: @includedir /etc/sudoers.d
Dòng:
root ALL=(ALL:ALL)ALL
có nghĩa là người dùng root có quyền không giới hạn và có khả năng chạy bất kỳ lệnh nào trên hệ thống.
%sudo ALL=(ALL:ALL)ALL
Cho phép tất cả thành viên của nhóm sudo thực thi bất kỳ lệnh nào.
Lưu ý: Dấu
%
trong tệp sudoers đại diện cho nhóm.
Như bạn có thể thấy từ dòng đầu tiên của tệp /etc/sudoers
:
# This file MUST be edited with the 'visudo' command as root
Đừng cố gắng chỉnh sửa trực tiếp tệp sudoers, hãy sử dụng lệnh visudo
với quyền root.
Việc sử dụng sudo giúp bạn quản lý máy chủ cloud an toàn và hiệu quả. Nếu bạn chưa có VPS, hãy xem qua danh mục thuê VPS của DataOnline. Với dịch vụ thuê VPS linh hoạt, uptime 99,9% và hỗ trợ 24/7, bạn sẽ dễ dàng triển khai dự án của mình!