Можно проверить способность sudo до sudo'ing?

Я пишу небольшую служебную программу. Я бы хотел, чтобы он попытался что-то сделать, если потребуется.

То есть: если разрешения на доступ к файлам не позволяют текущему пользователю работать с определенным файлом (и это разрешат правила sudo ), я хотел бы, чтобы моя утилита sudo -run что-то использовала в качестве владельца файла.

Я надеюсь проверить эту возможность заранее, потому что я бы предпочел, чтобы системные журналы не заполняли шум от неудачных попыток sudo . Как sudo сам сообщает о неудаче: «Этот инцидент будет сообщен».

Итак, я надеюсь программно проверить: может ли user <x> выполнить command <y> через sudo ?.

Вот проблема: в то время как /etc/sudoers содержит это сопоставление, оно принадлежит root и не читается обычными пользователями.

Я рассматривал возможность создания подпроцесса для запуска sudo -l (который выводит команды, которые текущий пользователь может выполнить sudo-run). Затем я проанализирую вывод этого. Однако это кажется немного хрупким. Результат содержит информацию, которую я хочу, но, похоже, она была предназначена для людей, чтобы читать (не для программного потребления). Я не знаю, есть ли какая-либо гарантия, что вывод будет следовать в том же формате в будущем или на разных платформах.

Является ли программный синтаксический анализ sudo -l считается безопасным? Если нет, есть ли лучшие варианты, чтобы заранее определить, удастся ли выполнить команду sudo?


(справочная информация по X / Y: эта утилита предназначена для использования учетной записью роли с ограниченным доступом. Я ожидаю, что некоторые другие пользователи смогут эффективно разрешить учетной записи с ограниченным доступом работать с файлами по правилам sudo. Однако я выиграл заранее не знаю, какой из этих других пользователей имеет соответствующее правило sudo)

  • Каков правильный синтаксис sudoers для добавления пользователя?
  • Почему файл sudoers содержит IP-адреса?
  • Почему пользователю root требуется разрешение sudo?
  • Я не могу использовать команду «sudo» на моем сервере
  • У пользователя все еще есть привилегии sudo, несмотря на то, что они удалены из всех групп
  • Как запустить определенную программу как root без подсказки пароля?
  • Как я могу исправить ошибку sudo-sudo: parse в файле /etc/sudoers.d/ADSM рядом с строкой 5?
  • Каков наилучший способ добавить пользователя в группу sudoer?
  • One Solution collect form web for “Можно проверить способность sudo до sudo'ing?”

    Согласно странице sudo man:

      -l, --list If no command is specified, list the allowed (and forbidden) commands for the invoking user (or the user specified by the -U option) on the current host. A longer list format is used if this option is specified multiple times and the security policy supports a verbose output format. If a command is specified and is permitted by the security policy, the fully-qualified path to the command is displayed along with any command line arguments. If command is specified but not allowed, sudo will exit with a status value of 1. 

    так что это будет

     if sudo -l -U $USER shutdown > /dev/null then ## $USER can else ## $USER cannot fi 

    Как указано Муру, используйте либо -U $USER либо -U $USERTOTEST или ничего, в зависимости от ваших потребностей.

    Interesting Posts

    Как установить переменную равную выходу из команды в GRUB2?

    Почему имя хоста –fqdn возвращает только имя домена?

    Xlib: Протокол не указан

    Команда tput + как найти диалоговое окно в верхней части экрана

    Linux fedora – пакет httpd и маршрутизатор, как заставить его работать?

    Найти изображения с одинаковой временной отметкой exif

    Сервер RNDIS для создания компьютера как периферийного

    Блокировка Caps Lock для каждой сессии

    При резервном копировании, когда будут иметь значение номера inode файловых систем?

    Ограничить использование памяти для одного процесса Linux

    Проблема прозрачности расширения hangouts Google в Linux Mint?

    Какие хранилища пакетов linux distro являются безопасными, а какие нет?

    Linux – LXC; развертывание изображений с мельчайшим возможным X11

    Linux Mint Rebecca – Пакеты 404 не найдены

    Как установить разрешение в текстовых консолях (устранение неполадок при сбое каких-либо `vga = …`)

    Linux и Unix - лучшая ОС в мире.