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
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.
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:
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.
Write a Comment
You must be logged in to post a comment.