Я пишу небольшую утилиту. Я хотел бы попытаться sudoзапустить что-нибудь, если потребуется.
То есть: если права доступа к файлу не позволяют текущему пользователю работать с конкретным файлом (а sudoправила позволят это сделать), я бы хотел, чтобы моя утилита sudoзапускала что-то как владелец файла.
Я надеюсь проверить эту возможность заранее, потому что предпочел бы, чтобы системные журналы не заполнялись шумом от неудачных sudoпопыток. Как sudoсам сообщает о неудаче: «Об этом инциденте будет сообщено».
Итак, я надеюсь программно проверить: можно user <x>запустить command <y>через sudo?
Вот проблема: хотя оно и /etc/sudoersсодержит это отображение, оно принадлежит пользователю root и не доступно для чтения обычным пользователям.
Я думал о порождении подпроцесса для запуска sudo -l(который выводит команды, которые текущий пользователь может запустить sudo). Я бы тогда проанализировал вывод этого. Тем не менее, это кажется немного хрупким. Вывод содержит информацию, которую я хочу, но похоже, что она предназначена для чтения человеком (не для программного потребления). Я не знаю, есть ли какая-либо гарантия, что выход будет следовать тому же формату в будущем, или на разных платформах.
sudo -lСчитается ли программный анализ вывода безопасным? Если нет, есть ли лучшие варианты, чтобы заранее определить, будет ли команда sudo успешной?
(справочная информация по X / Y: эта утилита предназначена для использования учетной записью роли с ограниченным доступом. Я ожидаю, что некоторые другие пользователи будут использовать эту учетную запись, чтобы разрешить учетной записи с ограниченным доступом работать с файлами по правилам sudo. Однако я выиграл заранее не знаю, у кого из этих пользователей есть соответствующее правило sudo)