Я пишу невелику корисну програму. Я хотів би, щоб спробувати sudoщось запустити, якщо потрібно.
Тобто: якщо дозволи на файл не дозволяють поточному користувачеві працювати з певним файлом (і sudoправила дозволяють це), я хотів би, щоб моя утиліта sudoщось запустила як власника файлу.
Я сподіваюся заздалегідь перевірити цю здатність, тому що я вважаю за краще, щоб журнали системи не заповнювали шум від невдалої sudoспроби. Як sudoсам повідомляє про помилку: "Про цей інцидент буде повідомлено".
Отже, я сподіваюся програмно перевірити: чи можна user <x>запустити command <y>через sudo?.
Ось проблема: хоча воно /etc/sudoersмістить це відображення, воно є кореневою власністю і не читається звичайними користувачами.
Я розглядав нерест для запуску підпроцесу sudo -l(який видає команди, які поточний користувач може запустити). Тоді я б проаналізував вихід цього. Однак це здається трохи крихким. Вихід містить інформацію, яку я хочу, але, схоже, вона була розроблена для того, щоб люди читали (не для програмного споживання). Я не знаю, чи є якась гарантія, що вихід буде дотримуватися того самого формату в майбутньому або на різних платформах.
Чи sudo -lвважається програмним розбір результатів безпечним? Якщо ні, чи є кращі варіанти, щоб заздалегідь визначити, чи вдасться команда sudo?
. не знаю заздалегідь, хто з цих інших користувачів має відповідне правило sudo)