Tôi có một ứng dụng GUI cần gọi một daemon (được viết bằng Python) với các đặc quyền siêu người dùng. Tôi muốn làm điều này mà không cần nhắc người dùng nhập mật khẩu.
Vì daemon là một tập lệnh, tôi không thể đặt bit SUID trực tiếp. Tôi có thể viết một trình bao bọc C cho việc này, nhưng tôi không muốn phát minh lại bánh xe, đặc biệt là khi lỗi của tôi có thể dẫn đến bảo mật hệ thống bị xâm phạm nghiêm trọng.
Những gì tôi thường làm trong tình huống này là thêm một dòng trong /etc/sudoers
đó cho phép người dùng thực thi daemon với quyền root mà không cần mật khẩu, sử dụng chỉ thị NOPASSWD. Điều này hoạt động tốt từ dòng lệnh. Tuy nhiên, khi tôi làm điều này từ GUI, một pkexec
hộp thoại bật lên hỏi mật khẩu của người dùng. Có vẻ như trên Ubuntu, các cuộc gọi đến sudo
từ GUI bằng cách nào đó đang bị chặn bởi pkexec
.
Có một cách sạch sẽ xung quanh này? Tôi thực sự không phải đối phó với những rắc rối của một kịch bản setuid.
sudo somecommand
, hộp thoại bật lên là pkexec
hộp thoại mật khẩu, bất kể có chính sách sudoers nào cho phép thực thi chương trình hay không.