Hướng Dẫn Sử Dụng Lệnh Sudo Trên DataOnline Cloud VPS

Hướng Dẫn Sử Dụng Lệnh Sudo Trên DataOnline Cloud VPS

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ụ:

$ 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 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:

$ sudo command

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:

$ sudo command
[sudo] password for user:

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:

$ rm -rf /etc

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:

  1. Tạo một tài khoản người dùng mới với lệnh adduser.
    # adduser example_user
  2. 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.
  3. Thêm người dùng mới vào nhóm wheel với lệnh usermod.
    # usermod -aG wheel example_user
  4. Kiểm tra tập tin sudoers với lệnh visudo.
    # visudo
  5. 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
  6. 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ệnh visudo. 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á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!)
  7. Chuyển sang người dùng mới.
    # su - example_user
  8. 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ệnh sudo 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:

  1. 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.
# pacman --sync sudo

2. Tạo một tài khoản người dùng mới với lệnh useradd.

# useradd --create-home example_user

3. Đặt mật khẩu mạnh cho người dùng mới với lệnh passwd.

# passwd example_user

4. Thêm người dùng mới vào nhóm wheel với lệnh usermod.

# usermod --append --groups wheel example_user

5. Chỉnh sửa tập tin sudoers với lệnh visudo.

# visudo
6. Tìm dòng chứa nhóm wheel trong phần User privilege specification ở cuối tập tin. Bỏ comment ở đầu dòng để dòng đó trông như sau:
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL

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:

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!)

8. Chuyển sang người dùng mới:

# su - example_user

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
Tạo người dùng Sudo trên Debian & 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 (nếu hệ thống của bạn chưa có sudo).

# apt install 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.

# 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 mới 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 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.

$ whoami
example_user
$ sudo whoami
[sudo] password for example_user:
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:

# cd /usr/ports/security/sudo/
# make install clean

Bạn cũng có thể cài đặt gói sudo nhị phân bằng cách sử dụng pkg:

# pkg install sudo

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.

# pw group mod wheel -m example_user

Chỉnh sửa tập tin sudoers với lệnh visudo.

# 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:

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

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.

$ whoami
example_user

$ sudo whoami
[sudo] password for example_user:
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.

# 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 để sử dụng với 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 giới hạn quyền sử dụng su để trở thành root).

# user mod -G wheel example_user

Kiểm tra tập tin sudoers với lệnh visudo.

# 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:

# 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 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.

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 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

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.

$ whoami example_user

$ sudo whoami [sudo] password for example_user: 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:

# 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

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:

%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 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:

# This file MUST be edited with the 'visudo' command as root

Đừ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.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *