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ùngroot
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ómsudo
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 CAPTURE
và SERVERS
. 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.