Почему пользователь без какой-либо записи PASSWD в конфигурации sudo должен аутентифицироваться каждый раз?

Рассмотрим эту конфигурацию sudo для двух пользователей:

 mary ALL = (ALL) NOPASSWD: /bin/ls, /bin/cat bob ALL = (ALL) PASSWD: /bin/sort 

Теперь, когда пользователь mary выполняет любую команду, не mary в список, она должна аутентифицироваться каждый раз.

 $ sudo sort [sudo] password for mary: Sorry, user mary is not allowed to execute '/bin/sort' as root on eagle. 

Если бы mary снова попытался выполнить какую-то другую запрещенную команду, ее попросят ввести пароль. Однако это не относится к bob , которого спрашивают только один раз и до периода ожидания. Почему mary приходится проходить аутентификацию снова и снова, когда она уже успела правильно предоставить свой пароль в недавнем прошлом?

Я нашел хотя бы один подобный вопрос, но ответы / комментарии, похоже, недостаточно проясняют. Там проблема заключалась в вводе пароля на sudo -v и здесь речь идет о командах, которые не разрешены конфигурацией. Да, взаимодействие правил с PASSWD и NOPASSWD является сходством.

  • Почему sudo не перенаправляет stdout в файл / etc / file, но sudo 'nano' или 'cp' могут?
  • Почему sudo не помнит мой пароль?
  • Задержка замораживания терминала возникает при попытке избежать запроса пароля для доступа к последовательному порту с использованием minicom
  • Замена команды: / dev / stdin: Отказано в разрешении
  • Как рабочий стол Linux выполняет действия системы?
  • Добавление содержимого в файл дает отказ в разрешении
  • RHEL 6: отказ от зависимостей для обновления qgis rpm
  • sudo в неинтерактивном скрипте
  • 2 Solutions collect form web for “Почему пользователь без какой-либо записи PASSWD в конфигурации sudo должен аутентифицироваться каждый раз?”

    Короче говоря, это вещь безопасности. Вы сказали, что mary может выполнять определенные команды без предоставления пароля. Это не удается, затем выполняется «действие по умолчанию». Перейдите и спросите пароль, затем запишите неудачную попытку.

    Без привыкания к техническим аспектам это разделение между аутентификацией и авторизацией.

    1. это mary пытается запустить команду – проверьте, что, прося ничего, если это ls или cat, проверьте, что путь по умолчанию, если что-то еще.
    2. Невозможно найти способ авторизации mary. Притворяться. – Ошибка аутентификации, нет способа аутентифицировать mary при попытке запустить foo

    как это предусмотрено

    1. это боб, независимо от того, что проверить, что с паролем
    2. это bob, bob разрешено запускать foo
    3. nope, bob не может запустить foo – аутентификация с помощью пароля была в порядке, кэш-память. Но не разрешайте команду.

    В основном, вы говорите, что

    • с паролем пароля может работать сортировка,
    • без пароля mary может запускать ls
    • если mary пытается запустить foo, то она не может аутентифицироваться (метода нет)
    • если bob пытается запустить foo, он может аутентифицироваться, но не разрешен.

    Причина, по которой mary запрашивается пароль, по той же причине будет вызвана панель пользователя. Так что пользователь не мог сказать, запустив словарь общих команд против sudo, чтобы определить, что не разрешено, проверяя вывод команды.

    Или другой способ взглянуть на него. Поскольку переменная «то, что может быть запущена при аутентификации с помощью пароля», является пустой для mary, то она никогда не может аутентифицироваться с помощью пароля. Поскольку переменная «то, что может быть запущена при аутентификации с помощью пароля», не равна null для bob, он может аутентифицироваться с паролем, но не имеет права запускать некоторые вещи.

    Я загрузил sudo SRPM отсюда , скомпилировал и запустил его изнутри gdb чтобы получить более глубокое понимание. Этот совет по отладке корневых программ setuid был бесценен.

    Дело в том, что sudo создает / обновляет файл timestamp (находится внутри /var/db/sudo/<user> ) только тогда, когда пользователь имеет право запускать команду и также был аутентифицирован. Аутентификация включает в себя ввод пароля и / или вызов модуля PAM . Авторизация заключается в проверке, разрешено ли пользователю выполнять заданную команду. Обратите внимание, что здесь есть два условия.

    Импликация тега NOPASSWD заключается в том, чтобы избежать проверки подлинности для перечисленных команд. Таким образом, если пользователь (например, mary ) не имеет записи PASSWD в config, а для команды, которая выполняется успешно, ему не требуется аутентификация. Файл временной метки не создается, поскольку пользователь не прошел аутентификацию. В противном случае, если такой пользователь выполняет команду, что он не авторизован, аутентификация выполняется. Но снова файл не создается, так как он не прошел авторизацию.

    Из этого следует, что для пользователя с PASSWD файл timestamp создается только тогда, когда он успешно PASSWD хотя бы одну команду из такого списка. Файл не создается при попытке запуска других неавторизованных команд и sudo будет пытаться аутентифицироваться каждый раз.

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