Saya sedang menulis program utilitas kecil. Saya ingin mencoba- sudomenjalankan sesuatu jika diperlukan.
Itu adalah: jika izin file tidak memungkinkan pengguna saat ini beroperasi pada file tertentu (dan sudoaturan akan mengizinkannya) Saya ingin utilitas saya sudomenjalankan -l sesuatu sebagai pemilik file.
Saya berharap untuk memeriksa kemampuan ini sebelumnya, karena saya lebih suka log sistem tidak mengisi dengan kebisingan dari sudoupaya yang gagal . Seperti sudoitu sendiri melaporkan kegagalan: "Insiden ini akan dilaporkan".
Jadi, saya berharap untuk memeriksa secara program: dapat user <x>dijalankan command <y>melalui sudo?
Inilah masalahnya: sementara /etc/sudoersberisi pemetaan itu, itu dimiliki oleh root dan tidak dapat dibaca oleh pengguna biasa.
Saya sedang mempertimbangkan memunculkan subproses untuk dijalankan sudo -l(yang menampilkan perintah yang dapat dijalankan oleh pengguna saat ini). Saya kemudian akan menguraikan output ini. Namun, ini agak rapuh. Outputnya berisi informasi yang saya inginkan, tetapi sepertinya dirancang untuk dibaca manusia (bukan untuk konsumsi terprogram). Saya tidak tahu apakah ada jaminan bahwa output akan mengikuti format yang sama di masa depan, atau di berbagai platform.
Apakah parsing sudo -loutput terprogram dianggap aman? Jika tidak, apakah ada opsi yang lebih baik, untuk menentukan sebelumnya apakah perintah sudo akan berhasil?
(latar belakang pada X / Y: Utilitas ini untuk digunakan oleh akun peran akses terbatas. Saya berharap beberapa pengguna lain secara efektif memilih untuk memungkinkan akun akses terbatas untuk beroperasi pada file mereka melalui aturan sudo. Namun, saya menang tahu sebelumnya siapa pengguna lain yang memiliki aturan sudo yang relevan)