Quyền truy cập root và sudo đóng vai trò quan trọng trong việc quản trị hệ thống Linux, cho phép người dùng thực hiện các thao tác có đặc quyền cao mà tài khoản thông thường không thể làm được. DataOnline sẽ hướng dẫn bạn tìm hiểu về quyền root, lệnh sudo, cách chạy lệnh với sudo, cũng như sự khác biệt giữa quyền sudo và quyền root.
Để quản trị hệ thống Linux hiệu quả, việc sử dụng lệnh sudo là không thể thiếu. Nếu bạn đang tìm kiếm giải pháp vận hành máy chủ mạnh mẽ, hãy khám phá VPS hosting tại DataOnline. Dịch vụ này cung cấp tài nguyên vượt trội, đảm bảo hiệu suất tối ưu cho mọi dự án của bạn.
Ngoài ra, DataOnline cũng cung cấp các bước chi tiết để thêm người dùng vào danh sách sudoers trên Arch Linux, cùng với cách tạo người dùng sudo trên các hệ điều hành Linux phổ biến. Việc sử dụng sudo thay vì đăng nhập trực tiếp vào tài khoản root giúp tăng cường bảo mật, hạn chế rủi ro khi vận hành hệ thống.
Root là gì?
root ám chỉ tài khoản siêu người dùng (superuser) trong các hệ thống giống Unix như Linux. Đây là một tài khoản đặc quyền với quyền truy cập cao nhất trên hệ thống, được dùng cho việc quản trị hệ thống. Tài khoản root/superuser có mã định danh người dùng (UID) bằng số 0, bất kể tên tài khoản là gì.
Người dùng root có toàn quyền (root privileges) đối với toàn bộ hệ thống. Họ có thể thực hiện các tác vụ như chỉnh sửa các thành 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, cũng như khởi động, dừng hoặc 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, dấu nhắc lệnh trên terminal thay đổi từ $
thành #
. Ví dụ:
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 người dùng thực thi các lệnh với quyền của root hoặc của một người dùng khác. Nó cung cấp cách hiệu quả để cấp cho người dùng hoặc nhóm người dùng quyền sử dụng các lệnh hệ thống cụ thể hoặc chạy các script với quyền root.
Mặc dù có phần tương đồng với lệnh su, nhưng sudo yêu cầu nhập mật khẩu của người dùng hiện tại để xác thực, thay vì mật khẩu của người dùng mục tiêu mà lệnh su yêu cầu. Sudo cũng không khởi tạo 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ể:
- 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 cao hoặc quyền root.
- Xem nhật ký (log) chứa ID của từng người dùng đã sử dụng sudo.
- Kiểm soát lệnh nào mà người dùng có thể thực hiện trên hệ thống.
Sudo ghi lại nhật ký tất cả các lệnh và tham số được thực thi vào tập tin /var/log/auth.log
, có thể được phân tích khi có sự cố xảy ra.
Chạy lệnh với Sudo
Để chạy lệnh với sudo, hãy thêm tiền tố sudo
vào trước lệnh:
Hệ thống sẽ yêu cầu bạn nhập mật khẩu, hãy nhập mật khẩu tài khoản của bạn và nhấn ENTER:
Bây giờ, lệnh đó sẽ được thực thi với quyền nâng cao.
Sudo so với Root
Nguyên tắc least privilege (tối thiểu quyền hạn) là một khái niệm trong an ninh thông tin và máy tính, cho rằng chương trình và người dùng chỉ được cấp các quyền tối thiểu cần thiết để thực hiện công việc.
Khi đăng nhập với tư cách root, mọi lệnh bạn 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 tối thiểu quyền hạn. Một lệnh đơn giản như rm
có thể được sử dụng để xóa các thư mục hoặc tệp hệ thống quan trọng mà không có bất kỳ cảnh báo nào nếu không cẩn thận. Ví dụ, nếu bạn cố gắng xóa thư mục root như /etc
bằng lệnh:
Bạn sẽ bị từ chối quyền nếu đăng nhập với tư cách người dùng thường. Tuy nhiên, khi đăng nhập với tư cách root, không có cảnh báo nào xuất hiện và toàn bộ thư mục sẽ bị xóa – điều này rất có thể làm hỏng hệ thống vì các tệp cấu hình quan trọng cần thiết cho hoạt động của hệ thống được lưu trữ trong thư mục /etc
. Bạn cũng có thể vô tình format nhầm ổ đĩa mà hệ thống sẽ không nhắc nhở.
Nhược điểm này cũng áp dụng khi chạy mã hoặc ứng dụng với quyền root; một lỗi nhỏ trong ứng dụng có thể xóa nhầm một số tệp hệ thống vì ứng dụng đang chạy dưới quyền cao nhất.
Sudo cung cấp khả năng kiểm soát truy cập một cách chi tiết. Nó chỉ nâng cao quyền cho một chương trình cụ thể cần thiết, giúp bạn biết chính xác chương trình nào đang chạy với quyền cao, thay vì làm việc trong một shell của root (nơi mọi lệnh đều có quyền root). Sudo cũng có thể được cấu hình để chạy lệnh với tư cách người dùng khác, xác định người dùng và nhóm nào được phép chạy lệnh với 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 bằng cách chỉnh sửa tập tin sudoers.
Do đó, việc chạy các lệnh trong shell của root không được khuyến khích vì nguy cơ gây hỏng hệ thống sẽ cao hơn rất nhiều. Nếu bạn cần quyền cao hoặc quyền root để thực hiện lệnh, hãy dùng sudo để đảm bảo chỉ lệnh đó được thực thi với quyền root. Để biết thêm thông tin, hãy xem trang man của sudo.
Tạo người dùng 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 một tài khoản người dùng mới với lệnh
adduser
.# adduser example_user
- Sau đó, đặt mật khẩu mạnh cho người dùng mới với 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 mới vào nhóm
wheel
với lệnhusermod
.# usermod -aG wheel example_user
- Kiểm tra tập tin sudoers với lệnh
visudo
.# visudo
- Tìm nhóm
wheel
. Bỏ comment nếu dòng đó đang bị vô hiệu hóa. Nó nên trông như sau khi bạn sẵn sàng lưu tập tin:## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
- Lưu và thoát khỏi trình soạn thảo vi: nhấn
Esc
, sau đó gõ:wq
rồi nhấn Enter.
Lưu ý: Không bao giờ chỉnh sửa trực tiếp tập tin/etc/sudoers
, luôn luôn sử dụng lệnhvisudo
. Công cụvisudo
sẽ kiểm tra cú pháp trước khi lưu thay đổi, vì một tập tin sudoers sai cú pháp có thể làm hỏng hệ thống. Nếu bạn mắc lỗi, sẽ có thông báo như sau khi thoátvisudo
: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
- Kiểm tra bạn đang là người dùng mới bằng lệnh
whoami
, sau đó thử quyền sudo với lệnhsudo whoami
, kết quả phải trả vềroot
.$ whoami example_user $ sudo whoami [sudo] password for example_user: root
Tạo và thêm người dùng Sudo trên Arch Linux
Để cấp quyền quản trị cho 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 Linux, đảm bảo cấu hình đúng với visudo
để tránh lỗi hệ thống.
Quy trình:
- Cài đặt sudo (nếu chưa được cài đặt sẵn trong quá trình cài đặt cơ bản). Nếu bạn chưa cập nhật trong thời gian dài, nhớ cập nhật cơ sở dữ liệu repository trước.
2. Tạo một tài khoản người dùng mới với lệnh useradd
.
3. Đặt mật khẩu mạnh cho người dùng mới với lệnh passwd
.
4. Thêm người dùng mới vào nhóm wheel
với lệnh usermod
.
5. Chỉnh sửa tập tin sudoers với lệnh visudo
.
7. Lưu và thoát khỏi visudo
(nhấn Esc
, gõ :wq
rồi nhấn Enter).
Lưu ý: Không bao giờ chỉnh sửa trực tiếp /etc/sudoers
, luôn sử dụng visudo
. Nếu có lỗi cú pháp, bạn sẽ nhận được thông báo tương tự như sau:
8. Chuyển sang người dùng mới:
9. Kiểm tra bằng lệnh whoami
, sau đó thử quyền sudo với lệnh sudo whoami
, kết quả phải trả về root
.
$ 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
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 (nếu hệ thống của bạn chưa có sudo).
Tạo một tài khoản người dùng mới với lệnh adduser
. Sử dụng mật khẩu mạnh cho người dùng mới. Bạn có thể nhập thông tin cho người dùng hoặc nhấn Enter để bỏ qua các trường thông tin.
Thêm người dùng mới vào nhóm sudo
.
Kiểm tra bằng cách chuyển sang người dùng mới.
Xác minh bạn đang là người dùng mới với lệnh whoami
, sau đó thử quyền sudo với lệnh sudo whoami
, kết quả phải trả về root
.
Tạo người dùng 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 trên hệ thống. Để cài đặt sudo từ ports:
Bạn cũng có thể cài đặt gói sudo nhị phân bằng cách sử dụng pkg:
Tạo một tài khoản người dùng mới để sử dụng với sudo:
# adduser
Trả lời các câu hỏi trong dialog để tạo người dùng. Trong hướng dẫn này, chúng ta sử dụng example_user
.
Thêm người dùng vào nhóm wheel
, nhóm này giới hạn quyền sử dụng lệnh su
để chuyển thành root.
Chỉnh sửa tập tin sudoers với lệnh visudo
.
Tìm nhóm wheel
và bỏ comment nếu dòng đó đang bị vô hiệu hóa. Nó sẽ trông như sau khi bạn sẵn sàng lưu tập tin:
Lưu và thoát khỏi vi (nhấn Esc
, sau đó gõ :wq
rồi nhấn Enter).
Lưu ý: Không bao giờ chỉnh sửa trực tiếp tập tin /etc/sudoers, luôn luôn sử dụng lệnh visudo. Công cụ visudo sẽ kiểm tra cú pháp trước khi lưu các chỉnh sửa của bạn vào tập tin, vì một tập tin sudoers không đúng cú pháp có thể làm hỏng hệ thống của bạn. Nếu bạn mắc lỗi, bạn sẽ thấy thông báo này khi thoát khỏi 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!)Các tùy chọn khi gặp lỗi:
(e)dit
để chỉnh sửa lại.
e(x)it
để thoát mà không lưu.
(Q)uit
để thoát và lưu thay đổi (CHÚ Ý: RỦI RO!).
Chuyển sang người dùng mới.
# su - example_user
Kiểm tra bằng lệnh whoami
, sau đó thử quyền sudo với lệnh sudo whoami
, kết quả phải trả về root
.
Tạo người dùng Sudo trên OpenBSD
Phạm vi áp dụng cho OpenBSD 6.6 trở lên.
Nếu bạn thích sử dụng doas thay vì sudo, vui lòng tham khảo “Giới thiệu về doas trên OpenBSD”.
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.
Tạo tài khoản người dùng mới để sử dụng với sudo và đặt mật khẩu.
Thêm người dùng vào nhóm wheel
(nhóm giới hạn quyền sử dụng su
để trở thành root).
Kiểm tra tập tin sudoers với lệnh visudo
.
Tìm nhóm wheel
trong phần cấu hình. Bỏ comment nếu dòng đó bị vô hiệu hóa, để tập tin trông như sau khi bạn sẵn sàng lưu:
Lưu và thoát khỏi vi (nhấn Esc
, sau đó gõ :wq
rồi nhấn Enter).
Ghi chú: Không bao giờ chỉnh sửa trực tiếp tệp /etc/sudoers, hãy luôn sử dụng visudo. Công cụ visudo sẽ kiểm tra cú pháp trước khi lưu các chỉnh sửa của bạn vào tệp, vì một tệp sudoers bị lỗi cú pháp có thể làm hỏng hệ thống của bạn. Nếu bạn mắc lỗi, bạn sẽ thấy thông báo khi thoát khỏi visudo.
Các tùy chọn khi lỗi:
(e)dit
để chỉnh sửa lại.
e(x)it
để thoát mà không lưu.
(Q)uit
để thoát và lưu thay đổi (CHÚ Ý: RỦI RO!).
Chuyển sang người dùng mới.
Xác minh bạn đang là người dùng mới bằng lệnh whoami
, sau đó thử quyền sudo với lệnh sudo whoami
, kết quả phải trả về root
.
Thêm về tập tin sudoers
Sudo sử dụng chính sách bảo mật mặc định của sudoers và lưu cấu hình trong tập tin đặc biệt /etc/sudoers
. Tập tin 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 cần có quyền cao để xem tập tin sudoers.
Mở tập tin /etc/sudoers
; nó sẽ trông như sau:
Dòng:
nghĩa là người dùng root có toàn quyền và có thể chạy bất kỳ lệnh nào trên hệ thống.
Và dòng:
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 tin sudoers biểu thị một nhóm.
Như bạn có thể thấy từ dòng đầu tiên trong tập tin /etc/sudoers
:
Đừng bao giờ cố chỉnh sửa trực tiếp tập tin sudoers, hãy sử dụng lệnh visudo
với quyền root.
Hiểu rõ lệnh sudo giúp bạn quản lý máy chủ dễ dàng hơn. Nếu bạn cần một giải pháp tiết kiệm chi phí, hãy cân nhắc mua VPS giá rẻ tại DataOnline. Với cấu hình linh hoạt và giá cả cạnh tranh, bạn có thể sở hữu máy chủ chất lượng để thực hành và triển khai dự án.