Chuẩn bị một tập lệnh thực hiện chỉnh sửa mà bạn muốn, ví dụ tập lệnh viết tập tin chính xác bằng IP tĩnh (những gì cần đặt trong tập lệnh này nằm ngoài phạm vi của Hỏi & Đáp này). Hãy gọi kịch bản này /root/set_static_ip
. (1)
Chỉnh sửa /etc/sudoers
(2) ( visudo
tốt hơn, nó kiểm tra sự tỉnh táo, rất khó để khôi phục hệ thống với tệp sudoers không hợp lệ, thậm chí không thể từ xa (3)) và thêm
user_name_to_authorize ALL=NOPASSWD: /root/set_static_ip
Bây giờ người dùng có thể sử dụng sudo /root/set_static_ip
mà không cần bất kỳ mật khẩu nào được yêu cầu và tập lệnh sẽ chạy với tất cả các đặc quyền; không có lệnh khác sẽ được cho phép.
Nếu bạn muốn người dùng chỉ cần thay thế một tệp bằng bất cứ thứ gì họ muốn, tập lệnh có thể chỉ đơn giản là (gọi nó /root/unsafe-overwrite-interface
)
#! /bin/bash -e
#
cp /tmp/temp-iface.txt /etc/network/interfaces
exit 0
... Và bạn bảo người dùng chỉnh sửa /tmp/temp-iface.txt
và sau đó chạy sudo /root/unsafe-overwrite-interface
--- kích hoạt nó trong sudoers như được chỉ định ở trên. Hoặc bạn có thể thêm người dùng vào danh sách ACL và cấp cho họ quyền ghi trên tệp cụ thể .
Nhưng lưu ý rằng nếu bạn không kiểm tra nội dung tệp cho an toàn, sự tàn phá sẽ xảy ra, dù là cố ý hay vô ý.
Chú thích :
(1) kịch bản này phải an toàn nhất có thể. Kiểm tra đầu vào và như vậy. Nó sẽ được thực hiện với sự cho phép đầy đủ.
(2) trong cài đặt sudo hiện đại, bạn có thể thêm một tệp vào /etc/sudoers.d/
thư mục tốt hơn --- sẽ tồn tại các bản cập nhật.
(3) Tôi thường giữ một thiết bị đầu cuối với phiên gốc mở ( sudo -i
) khi tôi sửa đổi cơ chế sudoers và một bản sao lưu tiện dụng.
/var/tmp/foo
=/etc/network/interfaces
? Chưa bao giờ thực sự thấy những gì bạn đang cố gắng nói ở đó, tôi khá mới với Linux.