Bài tập

Cách sử dụng sudo và file sudoers để quản lý máy ảo VPS hiệu quả

Huy Erick

Lệnh sudo được sử dụng để cho phép người dùng không phải là root chạy các lệnh yêu cầu quyền super user. Còn file sudoers hướng dẫn hệ thống về cách xử lý lệnh sudo....

Lệnh sudo được sử dụng để cho phép người dùng không phải là root chạy các lệnh yêu cầu quyền super user. Còn file sudoers hướng dẫn hệ thống về cách xử lý lệnh sudo. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách sử dụng 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 một cách hiệu quả.

Hiểu về Sudo

Trước tiê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 sử dụng PuTTY. Nếu bạn chưa biết VPS là gì, bạn có thể tham khảo bài viết này.

Mặc định, người dùng root không cần sử dụng sudo vì đã có đủ quyền hạn. Tuy nhiên, ví dụ như nếu người dùng không phải root muốn thêm một người dùng khác, bạn sẽ gặp thông báo lỗi "Permission denied". Để khắc phục điều này, bạn cần sử dụng sudo như sau:

sudo useradd edward

Với lệnh trên, bạn sẽ thực thi lệnh 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 có thể cung cấp quyền quản trị cho người dùng thông thường. Thông thường, người dùng đầu tiên mà bạn tạo khi cài đặt Ubuntu sẽ có quyền super user. Trên môi trường VPS, người dùng đó là root mặc định. Bạn có thể cấu hình người dùng khác để có thể chạy lệnh sudo bằng cách chỉnh sửa file sudoers.

Cú pháp file Sudoers

Bạn có thể mở file bằng trình soạn thảo văn bản yêu thích của bạn. Trong ví dụ này, chúng tôi sử dụng vi:

vi /etc/sudoers

File trong VPS của chúng ta sẽ có giao diện như hình dưới đây:

Dưới đây là một số định dạng và quy tắc cần tuân thủ khi chỉnh sửa file sudoers:

  • Tất cả các dòng bắt đầu bằng # là các nhận xét
  • root ALL=ALL:ALL) ALL - dòng này cho phép người dùng root có quyền hạ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 - ký hiệu % chỉ định một nhóm. Tất cả thành viên trong nhóm quản trị sẽ có cùng quyền hạn như root
  • %sudo ALL=(ALL:ALL) ALL - tất cả người dùng trong nhóm sudo có quyền hạn để chạy bất kỳ lệnh nào

Một dòng quan trọng khác cần lưu ý 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 người dùng nào thuộc nhóm sudo, sử dụng lệnh grep để lọc danh sách tên người dùng:

grep '^sudo:' /etc/group | cut -d: -f4

Để thêm người dùng có tên là bill vào nhóm sudo, chúng ta sử dụng lệnh adduser như sau:

sudo adduser bill sudo

Sau đó, bạn có thể sử dụng lệnh grep để kiểm tra xem bill hiện đang là thành viên của nhóm sudo.

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

sudo adduser  sudo

Để xóa người dùng khỏi nhóm sudo, sử dụng lệnh deluser:

deluser bill sudo

Lệnh deluser sẽ xóa bill khỏi nhóm sudo. Bây giờ, người dùng bill không còn có quyền chạy các lệnh yêu cầu quyền sudo nữa.

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

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

Để làm điều này, 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

Sau đó, thêm đoạn văn bản sau vào file:

Cmnd_Alias CAPTURE = /usr/sbin/tcpdump
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. Người dùng trong nhóm netadmin có thể chạy các lệnh được chỉ định trong NETALL. NETALL lại bao gồm tất cả các lệnh được liệt kê dưới CAPTURESERVERS. Ví dụ: /usr/sbin/tcpdump.

Tiếp theo, chúng ta thêm người dùng bill vào nhóm netadmin:

sudo adduser bill netadmin

Sau đó, người dùng bill có thể chạy lệnh tcpdump cùng với các lệnh khác liên quan đến networking.

Lời kết

Nếu bạn đang làm việc với nhiều người dùng, việc hiểu và sử dụng lệnh sudo và file sudoers là điều cần thiết. Trong bài viết này, bạn đã biết cách sử dụng sudo, cách nó hoạt động, và cách chỉnh sửa file sudoers để có quyền hạn quản trị đầy đủ trên hệ thống.

1