Недавно я изменил файл sudoers и имя хоста через / etc / hostname. После изменения этих файлов моя команда sudo отнимает много времени. Кроме того, он говорит, что sudo не может разрешить хост kaagini (имя хоста моей машины).
Почему sudo должен знать имя хоста для предоставления разрешения на что-то ??
В моем файле sudoers есть команда "По умолчанию env_reset". Я видел несколько похожих вопросов, но контекст здесь не удаленный вход. Ошибка отображается на локальном хосте.
Первоначальное прибегание к решению проблемы говорит, что файл / etc / hosts должен иметь фактическое имя хоста для 127.0.0.1. Это исправило мою проблему. Но мой актуальный вопрос: зачем нам это нужно для sudo ?? Должно ли sudo работать независимо от места входа в систему.
Ответы:
/etc/sudoers
Файл предназначен , чтобы иметь возможность быть распределены между несколькими серверами. Для этого каждое разрешение в файле имеет хост-часть.Обычно
ALL=
это значение означает, что разрешение действительно для любого сервера, однако оно может быть установлено для определенных хостов:Чтобы sudo знал, следует ли применять это правило, ему нужно найти хост, на котором он работает. Он использует вызов, который полагается на
/etc/hosts
правильность, поэтому он терпит неудачу, если он не прав.Можно утверждать, что
sudo
не нужно беспокоиться о поиске имени, если для части хоста задано значениеALL=
для всех разрешений, но это просто не работает таким образом - кажется, что он работает там, где работает до обработки правил ,Это действительно для простоты обслуживания, поскольку sudo читает только / etc / sudoers, чтобы увидеть, что пользователь может сделать на текущем компьютере. Но для администратора с 100 серверами для этого может потребоваться 100 различных файлов / etc / sudoers. Поскольку у sudoers есть часть хоста в разрешениях, вы можете поддерживать один файл sudoers и распространять его на все машины, но при этом иметь детализацию того, что пользователи могут делать на каждой машине.
источник
Благодаря связанному отчету об ошибке, поданному Матиасом Урлихсом в другом комментарии, следующая команда решила эту проблему для меня:
Поместите эту строку в
/etc/sudoers
файлисточник
Puppet - это программное обеспечение для управления конфигурацией, которое способно автоматически конфигурировать парк серверов, читая файлы манифестов Puppet. Такой файл может содержать определение вашего файла / etc / sudoers, который затем может быть передан всем вашим кукольным «агентам» из вашего кукольного «хозяина». Тогда все хосты получат одну и ту же копию вашего файла / etc / sudoers, которая может (и должна) включать определения HOST, поэтому вы можете предоставить некоторым пользователям некоторые команды на некоторых хостах (но не на других).
источник