Tôi đang viết một chương trình tiện ích nhỏ. Tôi muốn nó cố gắng vượt qua sudo
một cái gì đó nếu được yêu cầu.
Đó là: nếu quyền của tệp không cho phép người dùng hiện tại hoạt động trên một tệp cụ thể (và sudo
các quy tắc sẽ cho phép nó) Tôi muốn tiện ích của tôi chuyển sang sudo
thứ gì đó với tư cách là chủ sở hữu của tệp.
Tôi hy vọng sẽ kiểm tra khả năng này trước đó, vì tôi thích rằng nhật ký hệ thống không lấp đầy tiếng ồn từ sudo
những lần thử thất bại . Như sudo
chính nó báo cáo khi thất bại: "Sự cố này sẽ được báo cáo".
Vì vậy, tôi hy vọng kiểm tra theo chương trình: có thể user <x>
chạy command <y>
qua sudo
?
Đây là vấn đề: trong khi /etc/sudoers
chứa ánh xạ đó, nó thuộc sở hữu gốc và không thể đọc được bởi người dùng thông thường.
Tôi đã xem xét việc sinh ra một quy trình con để chạy sudo -l
(trong đó đưa ra các lệnh mà người dùng hiện tại có thể chạy sudo). Sau đó tôi sẽ phân tích đầu ra của điều này. Tuy nhiên, điều này có vẻ hơi mong manh. Đầu ra chứa thông tin tôi muốn, nhưng có vẻ như nó được thiết kế để con người đọc (không phải để tiêu thụ theo chương trình). Tôi không biết liệu có đảm bảo rằng đầu ra sẽ theo cùng một định dạng trong tương lai hoặc trên các nền tảng khác nhau hay không.
Là phân tích chương trình sudo -l
đầu ra được coi là an toàn? Nếu không, có lựa chọn nào tốt hơn, để xác định trước liệu lệnh sudo có thành công không?
(nền tảng trên X / Y: Tiện ích này được sử dụng bởi tài khoản vai trò truy cập hạn chế. Tôi hy vọng một số người dùng khác chọn tham gia hiệu quả để cho phép tài khoản truy cập giới hạn hoạt động trên các tệp của họ thông qua quy tắc sudo. Tuy nhiên, tôi đã thắng Không biết trước những người dùng khác có quy tắc sudo phù hợp ở đâu)