
Пока что я нашел четыре разных способа добавить пользователя в группу sudoers, и не все методы работают во всех системах. Почему так много разных реализаций? Какая лучшая? Что является стандартом (т. е. работает в большинстве систем)?
Различные реализации:
- Добавление пользователя в группу «колесо».
- Добавление пользователя в группу «sudo».
- Редактирование файла /etc/sudoers
- Редактирование файла /etc/sudoers с помощью visudo
решение1
Существует два (основных) способа разрешить пользователю запускать команды от имени root через sudo:
- заявляют, что «Алиса может запускать команды как root»;
- заявить, что «Алиса — системный администратор» и что «системные администраторы могут запускать команды от имени root».
Способ объявить «Алиса — системный администратор» — сделать ее членом группы системных администраторов, но для группы системных администраторов нет стандартного имени (и нет никаких обязательств, что группа системных администраторов существует). В некоторых традиционных системах Unix есть группа с именемwheel
, но часто нахождение в группе wheel является лишь предпосылкой для получения прав root, и пользователь также должен знать пароль root и run su
(именно так его использует BSD, в частности). Некоторые дистрибутивы, такие как Ubuntu и Debian, включают в свою конфигурацию по умолчанию группу с именем sudo
и правило «члены группы sudo
могут запускать команду как root».
Если /etc/sudoers
(или файл в /etc/sudoers.d
) содержит строку типа %sudo ALL=(ALL:ALL) ALL
, то вы можете сделать пользователя sudoer, добавив его в sudo
группу ( adduser alice sudo
). Имя sudo
не магическое, вам просто нужно сопоставить запись в /etc/sudoers
.
Никогда не редактируйте /etc/sudoers
(или файл в /etc/sudoers.d
) напрямую: если вы сделаете синтаксическую ошибку, вы заблокируете себе доступ root. Всегда используйте visudo
для редактирования этого файла. Чтобы выбрать редактор, который visudo
будет запущен, установите VISUAL
переменную окружения (или EDITOR
, если VISUAL
она не установлена). На многопользовательской машине использование visudo
имеет дополнительное преимущество, заключающееся в том, что оно заботится о блокировке в случае, если два администратора одновременно редактируют файл.
решение2
adduser username sudo
У меня работает, но я использую Debian, в котором есть sudoers
файл, который по умолчанию предоставляет всем членам sudo
группы доступ sudo.
решение3
Я Ubuntu
добавил <somefile>
в /etc/sudoers.d/
строку:
<user> ALL=(ALL:ALL) ALL
Используя команду:
visudo -f /etc/sudoers.d/<somefile>
Это рекомендуется, поскольку файл остается /etc/suoders
нетронутым и, таким образом, исключается конфликт (и необходимое последующее ручное разрешение) между обновлениями. Смотрите:Почему /etc/sodoers.d/
решение4
Методы 2 и 4 будут работать практически на всех Linux. Даже не пытайтесь использовать 3 на рабочей системе! Это может повредить систему. Метод 1 может работать, но не обязательно.
Почему следует использовать visudo вместо ручного редактирования /etc/sudoers?
Получив права root, я использовал visudo для исправления файла sudoers. Почему visudo? Потому что это программа, которую ВЫ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ. Да, я немного зол, потому что тот, кто сломал этот сервер, должен был знать лучше. Visudo — это прекрасная маленькая программа, которая проверяет синтаксис файла sudoers перед тем, как вы его сохраните, так что если вы сделаете что-то совершенно глупое, вы узнаете об этом до того, как это станет проблемой и не позволит вам вернуться в систему как root.
http://lickthesalt.com/2009/07/06/fail-why-you-should-always-use-visudo/