Các sudoers
sách hướng dẫn cũng có cả một phần về cách một chính sách phù hợp trong /etc/sudoers
tệp cấu hình (hoặc tất nhiên là các tệp chính sách thả vào đi kèm) có thể cung cấp giới hạn bảo vệ chống thoát vỏ với HẠN CHẾ
và NOEXEC
tùy chọn.
Điều đó có thể chung chung hơn tạo tập lệnh bao bọc cho một tiện ích cụ thể.
hạn chế
Tránh cấp cho người dùng quyền truy cập vào các lệnh cho phép người dùng chạy các lệnh tùy ý. Nhiều trình chỉnh sửa có chế độ hạn chế trong đó các trình bao bị vô hiệu hóa, mặc dù sudoedit là một giải pháp tốt hơn để chạy trình chỉnh sửa thông qua sudo. Do số lượng lớn các chương trình cung cấp khả năng thoát shell, nên việc hạn chế người dùng đối với tập hợp các chương trình không cung cấp khả năng thoát shell thường không khả thi.
và
noexec
Nhiều hệ thống hỗ trợ thư viện dùng chung có khả năng ghi đè các chức năng thư viện mặc định bằng cách trỏ một biến môi trường (thường là LD_PRELOAD) vào một thư viện dùng chung thay thế. Trên các hệ thống như vậy, sudo's noexec
chức năng có thể được sử dụng để ngăn chương trình do Sudo chạy thực thi bất kỳ chương trình nào khác. Ghi chú, ... ...
Để kích hoạt noexec
cho một lệnh, sử dụng NOEXEC
thẻ như được ghi lại trong phần Đặc tả người dùng ở trên. Đây là ví dụ đó một lần nữa:
aaron shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
Điều này cho phép người dùng aaron chạy /usr/bin/thêm
và /usr/bin/vi
với noexec được kích hoạt. Điều này sẽ ngăn hai lệnh đó thực thi các lệnh khác (chẳng hạn như trình bao).
Vì vậy, trong ví dụ của bạn:
john ALL=NOEXEC:NOPASSWD: /usr/bin/apt,/usr/bin/apt-get
phải đủ để vẫn cho phép người dùng John
chạy đúng cách
và apt-get
với các đặc quyền nâng cao, không bị nhắc nhập mật khẩu và không có khả năng sử dụng trình thoát vỏ hoặc thủ thuật khác vượt quá giới hạn quyền hạn của anh ta.
Lưu ý rằng làm như vậy cũng có thể có kết quả ngoài ý muốn. Ví dụ
sau khi cài đặt một dịch vụ mới, apt có thể không khởi động được dịch vụ liên quan.