Можно проверить способность 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)

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 или ничего, в зависимости от ваших потребностей.

  • странный же вывод при использовании команды sudo
  • почему «sudo -u xxx cmd» не удается, но «sudo -u xxx / path / to / cmd» преуспевает?
  • Расширение переменной в файле sudoers
  • Добавление sudo в команду find: что это значит?
  • Как отключить requiretty для одной команды в sudoers?
  • Введите пароль в команде sudo
  • Как правильно проверить, будет ли добавление файла в sudoers.d конфликтующим с другими файлами?
  • Что означает «ВСЕ ВСЕ = (ВСЕ) ВСЕ» означает в судерах?
  • Где настроить пароль для sudo
  • Сделать sudo запрос пароля
  • Разрешить пользователю использовать sudo без пароля
  • Как добавить группу "sudo"
  • Interesting Posts

    Как включить параметр двойной загрузки на экране загрузки?

    Самый простой способ для песочницы пользователя

    tripwire report – номер inode

    Как файл хоста фактически используется в сетях unix / linux?

    Как изменить размер и дополнение значков на верхней панели Gnome 3 в Linux Mint 12?

    Как найти количество неупорядоченных пар из списка

    Есть ли более простой способ манипулировать данными GRUB 2?

    NGINX не загружает файлы PHP

    Соединение ssh с сервером закрывается после аутентификации сразу

    Закройте все дескрипторы файлов в bash

    Разделить многопараметрированную оболочку на несколько переменных

    Как удалить все между двумя символами с помощью sed?

    Не удается удалить файлы даже с помощью root, lsattr также не отвечает

    Как я могу перенаправить соответствующие строки в файл, а не совпадающие строки с другим файлом?

    Обмен нечетными и четными страницами в pdf-файле?

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