Настройка sudo под Linux
Добавлено: 01 мар 2016, 22:13
Источники:
http://www.michurin.net/tools/sudo.html
Настройка sudo под Linux
Этот текст не является переводом полного руководства. Если вы администрируете систему с большим количеством пользователей и сложным распределением полномочий, то очень советую почитать документацию. Но, если вам просто надо выдать определённому пользователю определённые права, то в этой заметке в скорее всего найдёте готовый рецепт.
Где взять?
например в debian:
Как редактировать sudoers (visudo)
Редактировать файл sudoers «вручную» — плохая практика. Для редактирования есть специальная команда visudo. Она сама знает, где расположен файл sudoers, и отследит, чтобы вы редактировали копия, файл всегда был целостным, а копия была удалена.
visudo позволяет использовать любой редактор. Например, вы можете использовать mcedit:
Если вы допустите ошибку, то, при выходе из редактора получите сообщение вида:
В этом случае, лучше ввести букву «e» и продолжить редактирование.
Настройка прав доступа sudo
Файл sudoers, обычно, содержит много комментариев. В каждой системе/дистрибутиве они различны. Имеет смысл ознакомиться с ними и, возможно, внести какие-то правки глобальных настроек.
Особое внимание следует обратить на директивы
за ними скрывается ещё куча всего интересного.
Но нас интересуют пользовательские настройки. Обычно для них есть отдельная часть в sudoers, которая может начинаться таким комментарием:
Дальше полномочия описываются строчками вида:
[пользователь] [хост]=([кем может стать]) [что может сделать]
Простой пример
Это означает, что пользователь alex, может выполнить с правами root команду /bin/mount /media/n78.
Обратите внимание, путь к команде mount указан полностью. Это важно! Если этого не сделать, то sudo работать не будет.
Теперь пользователь alex может выполнить команду
У него будет спрошен пароль (его, а не root).
Продвинутые правила sudo
Можно написать более сложные правила:
Пользователь alex может выполнить монтирование от пользователя root без пароля. И может выполнить любую команду от любого пользователя, если укажет пароль.
Флаги
Более полный пример с использованием флагов:
Флагов существует великое множество, смотрите документацию.
Приоритет правил
Опции применяются в том порядке в каком они указаны в файле конфигурации. Поэтому более общие правила должны идти вначале, а боле частные уточнения должны располагаться ближе к концу.
Проверка конфигурации
После того, как вы всё настроили, вы можете проверить, как sudo интерпретирует ваши настройки. Это очень удобно.
Используйте команды:
С их помощью вы можете легко найти ошибки или убедиться, что всё настроено правильно.
http://www.michurin.net/tools/sudo.html
Настройка sudo под Linux
Этот текст не является переводом полного руководства. Если вы администрируете систему с большим количеством пользователей и сложным распределением полномочий, то очень советую почитать документацию. Но, если вам просто надо выдать определённому пользователю определённые права, то в этой заметке в скорее всего найдёте готовый рецепт.
Где взять?
например в debian:
Код: Выделить всё
apt-get install sudo
Редактировать файл sudoers «вручную» — плохая практика. Для редактирования есть специальная команда visudo. Она сама знает, где расположен файл sudoers, и отследит, чтобы вы редактировали копия, файл всегда был целостным, а копия была удалена.
visudo позволяет использовать любой редактор. Например, вы можете использовать mcedit:
Код: Выделить всё
# EDITOR=mcedit visudo
Код: Выделить всё
visudo: >>> /etc/sudoers: syntax error near line 73 <<<
What now?
Настройка прав доступа sudo
Файл sudoers, обычно, содержит много комментариев. В каждой системе/дистрибутиве они различны. Имеет смысл ознакомиться с ними и, возможно, внести какие-то правки глобальных настроек.
Особое внимание следует обратить на директивы
Код: Выделить всё
#include ...
#includedir ...
Но нас интересуют пользовательские настройки. Обычно для них есть отдельная часть в sudoers, которая может начинаться таким комментарием:
Код: Выделить всё
##
## User privilege specification
##
[пользователь] [хост]=([кем может стать]) [что может сделать]
Простой пример
Код: Выделить всё
alex ALL=(root) /bin/mount /media/n78
Обратите внимание, путь к команде mount указан полностью. Это важно! Если этого не сделать, то sudo работать не будет.
Теперь пользователь alex может выполнить команду
Код: Выделить всё
$ sudo mount /media/n78
Продвинутые правила sudo
Можно написать более сложные правила:
Код: Выделить всё
alex ALL=(ALL) ALL alex ALL=(root) NOPASSWD: /bin/mount /media/n78 alex ALL=(root) NOPASSWD: /bin/umount /media/n78
Флаги
Более полный пример с использованием флагов:
Код: Выделить всё
# пользователь root может всё без ограничений
root ALL=(ALL) ALL
# пользователь alex может становиться пользователем
# operator, без указания пароля, и пользователем root
# с указанием пароля
alex ALL=(operator) NOPASSWD: ALL, (root) ALL
# пользователь temp должен всегда указывать не свой пароль,
# а пароль того, кем он хочет стать; он может становиться
# только пользователем alex и выполнять только одну команду
Defaults:temp targetpw
temp ALL=(alex) /bin/bash
# (этот пользователь предназначен только для удалённого
# входа в систему с использованием временного пароля,
# отсюда и название)
Приоритет правил
Опции применяются в том порядке в каком они указаны в файле конфигурации. Поэтому более общие правила должны идти вначале, а боле частные уточнения должны располагаться ближе к концу.
Проверка конфигурации
После того, как вы всё настроили, вы можете проверить, как sudo интерпретирует ваши настройки. Это очень удобно.
Используйте команды:
Код: Выделить всё
$ sudo -l
$ sudo -ll
$ sudo -lU user_name