Nội dung bài viết
#

Sudo là gì? Cách sử dụng lệnh Sudo và file Sudoers

Nội dung bài viết

    Nếu bạn đang muốn tìm hiểu về lệnh Sudo nhưng chưa biết phải bắt đầu từ đâu thì bài viết này là dành cho bạn. Ok, hãy cùng bắt đầu ngay thôi nào.

    Sudo là gì?

    Sudo la gi

    Sudo (viết tắt của “substitute user do” hoặc “super user do”) là chương trình dành cho hệ điều hành tương tự Unix.

    Nó cho phép một non-root user có thể chạy các chương trình với quyền bảo mật của một user khác (thường là root user).

    Ban đầu, Sudo được hiểu nghĩa là Superuser do. Lý do là vì các phiên bản cũ hơn của nó được tạo ra với mục đích chỉ để chạy các lệnh như Superuser.

    Các phiên bản Sudo về sau được nâng cấp để có thể hỗ trợ chạy cả các lệnh cho người dùng khác (bị hạn chế). Do đó, Sudo được hiểu theo nghĩa rộng hơn là “Substitute user do”.

    Dù vậy, do Sudo thường được sử dụng cho các tác vụ quản trị nên người ta vẫn quen gọi (và hiểu) Sudo nghĩa là “Superuser do” thay vì “Substitute user do”.

    Sudo và Su khác nhau như thế nào?

    Sudo và Su khác nhau như thế nào

    • Với lệnh Su, người dùng có thể khởi động một cửa sổ mới với quyền Root (đăng nhập tài khoản root với account và password của root).
    • Trong khi đó, Sudo yêu cầu người dùng xác thực bằng mật khẩu cá nhân. Người dùng chỉ có thể thực hiện các lệnh được cho phép (được cấu hình sẵn) nằm trong file sudoers.

    Ưu điểm của Sudo là gì?

    ưu điểm của Sudo

    Sudo là giải pháp phân quyền và nâng cấp quyền cho user một cách tốt nhất và an toàn nhất. Cụ thể:

    • Quản trị viên có thể giao quyền và kiểm soát các thao tác can thiệp hệ thống của người dùng với tiêu chí “đúng người đúng việc”.
    • Người dùng có thể thực thi lệnh Sudo từ xa thông qua Telnet/SSH.

    Nói một cách dễ hiểu hơn, với Su, bạn sẽ đăng nhập bằng quyền root, và do đó, thật nguy hiểm nếu có bất kỳ sai sót nào xảy ra (dù là nhỏ nhất, hãy tưởng tượng, nếu xui xẻo, mọi thứ có thể bị mất hết).

    Còn với Sudo, bạn sẽ cần phải nhập vào sudo trước mỗi dòng lệnh. Do đó, bạn sẽ tránh được việc quên quay lại chế độ người dùng thường và sẽ hạn chế được các rủi ro không đáng có.

    Cách cấu hình File Sudoers cho phép user sử dụng lệnh Sudo

    Mặc định, khi bạn cài đặt user đầu tiên cho Ubuntu, đó chính là user có quyền cao nhất (quyền super user). Trên VPS, đó chính là root user.

    Để cho phép một user bất kỳ có thể sử dụng lệnh Sudo, bạn sẽ cần cấu hình file Sudoers (nằm trong /etc/). Khi đó, user sẽ có những đặc quyền nhất định (tùy theo cách bạn cấu hình).

    Lưu ý quan trọng khi chỉnh sửa file Sudoers: Nếu phát sinh lỗi (thường do sai cú pháp lệnh) có thể dẫn đến tình trạng tất cả các user sẽ bị khóa.

    Cú pháp file Sudoers như thế nào?

    File Sudoers có thể được mở và chỉnh sửa bằng trình soạn thảo bất kỳ (như note chẳng hạn).

    Lệnh mở file Sudoers:

    {{EJS0}}

    File Sudoers trong VPS sẽ trông như thế này:

    cú pháp file Sudoers

    Trước khi chỉnh sửa file Sudoers, bạn cần nắm rõ các quy tắc sau:

    • Để viết chú thích, ta sẽ dùng dấu # ở đầu dòng.
    • Dòng lệnh root ALL=(ALL:ALL) ALL nghĩa là root user có đầy đủ mọi đặc quyền trên hệ thống.
    • Để phần quyền cho một nhóm user, ta sẽ dùng dấu %. Cụ thể như sau:
      • Dòng lệnh %admin ALL=(ALL) ALL nghĩa là tất cả user trong nhóm admin đều có full quyền như root user và được phép chạy tất cả các lệnh.
      • Tương tự, dòng lệnh %sudo ALL=(ALL:ALL) ALL nghĩa là bất cứ user nào trong nhóm sudo cũng đều có đặc quyền như root user và cũng được phép chạy bất kỳ lệnh nào.
    • Dòng lệnh #includedir /etc/sudoers.d nghĩa là các file trong thư mục sudoers.d sẽ được tham chiếu. Nói cách khác, lệnh trên các file nằm trong thư mục sudoers.d sẽ có ảnh hưởng đến hệ thống. Tất nhiên, bạn cũng có thể chỉnh sửa các file đó nếu cần.

    Hướng dẫn cấu hình file Sudoers

    Để bắt đầu chỉnh sửa file sudoers, hãy sử dụng lệnh sau:

    {{EJS1}}

    Trong các ví dụ dưới đây, chúng ta sẽ sử dụng lệnh sudo để gán quyền cho user tên là CR7.

    Nếu bạn muốn thêm user CR7 vào nhóm sudo, hãy sử dụng lệnh adduser. Cú pháp như sau:

    {{EJS2}}

    Để xóa một user CR7 khỏi nhóm sudo, hãy sử dụng lệnh deluser. Cú pháp như sau:

    {{EJS3}}

    Cấp quyền cụ thể cho user

    Trong trường hợp bạn muốn user CR7 chỉ có quyền thực thi một vài lệnh cụ thể nào đó thì sao? Ok, lúc này bạn sẽ cần tạo file bên trong /etc/sudoers.d/ và cấu hình cho file đó.

    Ví dụ, để tạo một file tên là netpermit, hãy sử dụng cú pháp lệnh sẽ như sau:

    {{EJS4}}

    Bây giờ, giả sử bạn muốn cho phép user CR7 có thể chạy các lệnh:

    • /usr/sbin/tcpdump
    • /usr/sbin apache2ctl
    • /usr/bin/htpasswd

    Đầu tiên, trong file Sudo, hãy thêm CR7 vào nhóm netadmin:

    {{EJS5}}

    Tiếp theo, thêm đoạn mã sau vào file netpermit:

    {{EJS6}}

    *Giải thích: Đoạn mã trên nghĩa là tất cả user trong nhóm netadmin có thể chạy các lệnh NETALL, bao gồm: /usr/sbin/tcpdump, /usr/sbin apache2ctl và /usr/bin/htpasswd.

    Tổng kết về Sudo

    Hy vọng những nội dung mà BKHOST đã chia sẻ trên đây sẽ giúp bạn hiểu hơn về lệnh Sudo cũng như cách để có thể sử dụng nó một cách hiệu quả.

    Nếu bạn có bất cứ thắc mắc nào, hãy để lại comment ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

    Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm những bài viết chia sẻ kinh nghiệp quản trị vps, hosting, server, domain, website, email… Chúc bạn thành công.

    Thuê Server Vật Lý tại BKHOST

    Giảm giá cực sâu, chất lượng hàng đầu. Đăng ký ngay hôm nay:

    thuê server giá rẻ

    Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
    Bình luận
    Trượt lên đầu trang
    Miễn phí cước gọi
    Bạn đã hài lòng với trải nghiệm trên Bkhost.vn?
    Cảm ơn lượt bình chọn của bạn, Chúc bạn 1 ngày tốt lành !