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