Bạn muốn đảm bảo rằng người dùng của bạn không thể thay đổi những gì được phép chạy. Ví dụ: bằng cách cố gắng thêm tập lệnh do người dùng của bạn sở hữu (~/.bash_aliases/shutdown2h
) để được chạy với quyền root thông qua sudo
không có mật khẩu, bạn sẽ cho phép chạy bất kỳ lệnh tùy ý nào. Đơn giản chỉ cần chỉnh sửa tập tin đó và chạy nó. Nó sẽ giống như việc cho phép người dùng chạy bất kỳ lệnh nào thông qua sudoers
. Ví dụ: người dùng sẽ chỉnh sửa tệp để đọc hiện nay
thay vì -h +120
và tắt máy ngay lập tức.
Thay vào đó, sẽ tốt hơn nếu thêm một tập lệnh do người dùng root sở hữu vào hệ thống, có thể là trong /usr/local/bin/
. Ví dụ, /usr/local/bin/shutdown2h
, mọi người đều có thể thực thi được, nhưng chỉ có thể ghi được bằng root. Bằng cách này, bạn đảm bảo rằng người dùng chỉ có thể chạy tập lệnh cụ thể và họ không thể thay đổi tập lệnh đó để chạy tập lệnh khác. Đường dẫn bạn đặt tập lệnh phải nằm trong $PATH
, cái mà /usr/local/bin
nên ở trong theo mặc định.
- Tạo kịch bản
Sudo vim /usr/local/bin/shutdown2h
#!/bin/bash
tắt máy -h +120
- Cho phép thực thi tập lệnh
Sudo chmod +x /usr/local/bin/shutdown2h
- Cho phép NGƯỜI DÙNG chạy tập lệnh cụ thể
sudo visudo
# Thêm mục này
NGƯỜI DÙNG TẤT CẢ=(TẤT CẢ) NOPASSWD: /usr/local/bin/shutdown2h
Bây giờ, người dùng của bạn có thể chạy sudo shutdown2h
mà không bị hỏi mật khẩu và chắc chắn rằng người dùng đó sẽ chỉ có thể chạy tắt máy -h +120
không có mật khẩu.
Ngoài ra, khi làm sudoers
các mục nhập, hãy đảm bảo cung cấp đường dẫn đầy đủ đến tập lệnh/tập lệnh thực thi và không sử dụng bất kỳ lối tắt nào như ~/
hoặc $HOME
.