Cách sử dụng sudo và file sudoers

Lệnh sudo cho phép users không root chạy các lệnh yêu cầu cần quyền super user, trong khi đó, file sudoers hướng dẫn hệ thống cách xử lý lệnh sudo. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn các lệnh sudo cơ bản và cách chỉnh sửa file sudoers để bạn có thể quản lý máy ảo VPS hiệu quả.

Hiểu về Sudo

Trước tiên bạn hãy truy cập VPS thông qua SSH. Nếu bạn gặp rắc rối, hãy xem hướng dẫn PuTTY. Nếu chưa biết VPS là gì, tham khảo bài này.

Mặc định root user không cần sử dụng sudo. Nó đã có tất cả quyền cần có. Nhưng ví dụ như, nếu user không root muốn thêm user khác nếu dùng như sau:

useradd edward

Nó sẽ xuất ra kết quả Permission denied. Vì vậy bạn cần thêm sudo như sau:

sudo useradd edward

Như vậy lệnh mới thực thi thành công

File Sudoers

Lệnh sudo được cấu hình thông qua một file nằm trong /etc/ gọi là sudoers.

Thông qua lệnh sudo, bạn cung cấp các quyền quản trị cho users thông thường. Và thường thì user đầu tiên bạn tạo khi cài đặt Ubuntu có quyền super user. Trong môi trường VPS đó là root user mặc định. Bạn có thể cấu hình users khác để có thể chạy lệnh sudo bằng cách chỉnh sửa sudoers.

Quan trọng: Hãy cẩn thận! Khi chỉnh sửa file sudoers, lỗi hoặc cú pháp sai có thể dẫn đến việc khóa tất cả users trên bản phân phối của bạn.

Cú pháp file Sudoers

Bạn có thể mở file bằng trình soạn thảo text ưa thích của bạn. Chúng ta sẽ sử dụng vi:

vi /etc/sudoers

File trong VPS của chúng ta trông như thế này:

file linux sudoers

Hãy xem một số định dạng và quy tắc cần tuân thủ khi chỉnh sửa sudoers:

  • Tất cả các dòng bắt đầu với # là các nhận xét
  • root ALL=ALL:ALL) ALL – dòng này nghĩa là root user có đặc quyền không giới hạn và có thể chạy bất kỳ lệnh nào trên hệ thống
  • %admin ALL=(ALL) ALL – dấu % chỉ định một nhóm. Bất cứ ai trong nhóm quản trị đều có cùng đặc quyền như của root user
  • %sudo ALL=(ALL:ALL) ALL – tất cả users trong nhóm sudo có đặc quyền để chạy bất kỳ lệnh nào

Một dòng cần quan tâm khác là #includedir /etc/sudoers.d, nghĩa là chúng ta có thể thêm cấu hình vào tệp sudoers.d và liên kết nó ở đây.

Chỉnh sửa file Sudoers

Để chỉnh sửa file /etc/sudoers, hãy sử dụng lệnh sau:

sudo visudo -f /etc/sudoers

Để xem users nào trong nhóm sudo, sử dụng lệnh grep để lọc danh sách tên user.

Để thêm users, gọi là bill vào nhóm sudo, chúng ta sử dụng lệnh adduser trong dòng lệnh như thế này:

Để thêm users, gọi là bill vào nhóm sudo, chúng ta sử dụng lệnh adduser trong dòng lệnh như thế này:

adduser bill sudo

Nếu sử dụng lệnh grep để kiểm tra ai đó trong group, chúng ta nhìn thấy username bill.

Nếu bạn muốn cung cấp cho ai đó quyền root, chỉ cần thêm chúng vào sudo.

Để xóa user khỏi sudo:

deluser bill sudo

Lệnh deluser sẽ xóa bill khỏi nhóm sudo.

Bây giờ user bill không còn có thể thực hiện các hành động yêu cầu đặc quyền sudo nữa.

Sử dụng file Sudoers để cấp quyền cụ thể

Điều gì xảy ra nếu chúng ta muốn bill chỉ chạy các lệnh cụ thể với quyền sudo, như networking?

Để làm được chúng ta sẽ tạo một file cấu hình trong /etc/sudoers.d/ gọi là networking.

Sử dụng lệnh sau để tạo file:

sudo visudo -f /etc/sudoers.d/networking

Thêm đoạn text sau vào file:

Cmnd_Alias     CAPTURE = /usr/sbin/tcdump
Cmnd_Alias     SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd
Cmnd_Alias     NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL

Những gì chúng ta đã làm trong file trên là tạo một nhóm netadmin. Users trong nhóm netadmin có thể chạy các lệnh được cụ thể trong NETALL. NETALL lần lượt bao gồm tất cả các lệnh dưới tên CAPTURE và SERVERS. Lệnh tcpdump nằm dưới tên CAPTURE, tức là /usr/sbin/tcpdump.

Tiếp theo, chúng ta thêm user bill vào nhóm netadmin:

sudo adduser bill netadmin

Bây giờ, user bill sẽ có thể chạy lệnh tcpdump cùng với các lệnh liên quan đến networking khác.

Lời kết

Nếu bạn làm việc với nhiều users, hiểu về lệnh sudo và file sudoers là điều bắt buộc. Trong hướng dẫn này, bạn đã biết sudo là gì, nó hoạt động như thế nào, cũng như biết cách sửa file sudoers để toàn quyền quản trị quyền hệ thống.

Author
Tác giả

Hai G.

Hải G. là chuyên gia quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress và đã dùng nó hơn 5 năm nay. Sở thích của anh là đọc, viết blog, đi du lịch và tư vấn cho các bạn trẻ khởi nghiệp.