Cách Sử Dụng Lệnh Sudo Trên Máy Chủ Cloud

Cách Sử Dụng Lệnh Sudo Trên Máy Chủ Cloud

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

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

  1. Tạo tài khoản người dùng mới bằng lệnh adduser:

    # adduser example_user
  2. Đặ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.
  3. Thêm người dùng vào nhóm wheel bằng lệnh usermod:

    # usermod -aG wheel example_user
  4. Kiểm tra tệp sudoers bằng lệnh visudo:

    # visudo
  5. 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
  6. 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ệnh visudo. 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!)
  7. Chuyển sang người dùng mới:

    # su - example_user
  8. 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ệnh sudo 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:

  1. 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
  2. Tạo 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 bằng lệnh passwd:

    # passwd example_user
  4. Thêm người dùng vào nhóm wheel bằng lệnh usermod:

    # usermod --append --groups wheel example_user
  5. Chỉnh sửa tệp sudoers bằng lệnh visudo:

    # visudo
  6. 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
  7. 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ệnh visudo. 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!)
  8. Chuyển sang người dùng mới:

    # su - example_user
  9. Xác minh bằng lệnh whoami và sau đó kiểm tra quyền sudo bằng lệnh sudo 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:

  1. 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
  2. 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
  3. Thêm người dùng vào nhóm sudo:

    # adduser example_user sudo
  4. 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ệnh sudo 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:

  1. 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
  2. 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.

  3. 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
  4. Chỉnh sửa tệp sudoers bằng lệnh visudo:

    # visudo
  5. 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
  6. 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ụng visudo để đả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!)
  7. Chuyển sang người dùng mới:

    # su - example_user
  8. Xác minh với lệnh whoami, sau đó kiểm tra quyền sudo bằng lệnh sudo 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:

  1. 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
  2. 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:
  3. 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
  4. Kiểm tra tệp sudoers bằng lệnh visudo:

    # visudo
  5. 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
  6. 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ụng visudo để đả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!)
  7. Chuyển sang người dùng mới:

    # su - example_user
  8. Xác minh bằng lệnh whoami, sau đó kiểm tra quyền sudo bằng lệnh sudo 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!

Để 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 *