Настраиваем доступ к sudo
sudo — это инструмент для делегирования полномочий суперпользователя обычным пользователям. Но, в отличие от su, он позволяет определять, какие команды могут выполнять пользователи из-под root. Настройки хранятся в файле /etc/sudoers.
Предупреждение
Внимание! Перед каждым запуском sudo файл /etc/sudoers (а также права на него и кому он принадлежит!) проверяются. Если /etc/sudoers содержит синтаксические ошибки, имеет права доступа, отличные от 0440 (нет специальных битов, читать может только владелец и группа-владелец, записывать и исполнять запрещено всем) или принадлежит обычному пользователю, доступ к команде sudo блокируется полностью для всех пользователей, пока файл этот файл не будет исправлен!
В связи с этим рекомендуется рекомендует редактировать его через утилиту visudo. Эта утилита создаёт копию /etc/sudoers, открывает его в редакторе, а после закрытия редактора проверяет файл. Если файл содержит ошибки, пользователю предлагается либо вернуться к редактированию для исправления ошибок, либо отказаться от изменений, либо сохранить как есть (однако учтите, что после этого использование sudo может стать невозможным).
Defaults
Строки, начинающиеся с Defaults, содержат настройки sudo. Синтаксис этих строк выглядит так:
Defaults[Tab]name
либо так:
Defaults[Tab]name=value
Некоторые параметры Defaults:
- authenticate (on/off) — требуется ли пароль для использования sudo
- targetpw — спрашивать пароль целевого пользователя, а не того, кто выполняет команду (как в su)
- badpass_message — сообщение, выводящееся при вводе неправильного пароля
- lecture (always,once,never) — вывод предупреждения о безопасности
- lecture_file — если установлен, используется предупреждение о безопасности из указанного файла вместо стандартного
- env_reset — сбрасывает переменные окружения для программ, запущенных через sudo
- secure_path — значение $PATH для программ, запущенных через sudo
Полномочия
Строки с указанием прав пользователей выглядят так:
user[Tab]host=(user1:group) keywords=command
где:
user — имя пользователя, которому можно выполнять команду. Префикс % указывает, что полномочи выдаются группе, # — что пользовател задаётся по UID, %# — что группа задаётся по GID.
host — с какого хоста разрешено выполнять команду
user1 — от имени какого пользователя разрешено выполнять команду (через ключ -u)
group — от имени какой группы разрешено выполнять команду (через ключ -g)
keywords (необязательно) — ключевые слова, например:
NOPASSWD — для ввода команды не требуется вводить пароль
PASSWD — для ввода команды через sudo требуется ввести пароль
NOEXEC — запущенной программе запрещается запускать другие програмы
EXEC — запущенной программе разрешается запускать другие программы
command — собственно, команда. Требуется указывать полный путь. В слуае с редактированием файлов через sudoedit указывается sudoedit (путь к файлу)
Слово ALL означает, что параметр может принимать любое значение, а префикс ! — что параметр данное значение принимать не может, например:
user1[Tab]ALL=(root) !/bin/bash
запрещает пользователю user1 запускать bash от root.
Это далеко не всё, что можно сделать с помощью /etc/sudoers
Подробную справку можно прочитать здесь:
man sudoers
Комментарии
Sunrise
15 октября, 2015 - 20:29
Там, где написано [Tab], надо вводить именно табуляторы соответствующей клавишей, а не пробелы!
pomodor
16 октября, 2015 - 18:18
Как это? А группы для кого запилены? Исполняемому файлу можно дать права на запуск для членов группы, ввести в группу нужного нам юзера, PROFIT!
Sunrise
16 октября, 2015 - 20:07
У меня так и сделано. Но таким образом можно только либо не разрешить пользователю из-под root ничего, либо разрешить всё. Никак ограничить выполнение команд нельзя. Как быть, если пользователю нужно дать возможность пользоваться программой, требующей root-права? А через sudo можно ограничить доступ, например, одной командой с ключевым словом NOEXEC.
pomodor
16 октября, 2015 - 23:55
Никак. Это потенциальная дыра. Но если очень хочется прострелить себе ногу, то для этого есть флаг SUID.
Чингачгук
16 октября, 2015 - 18:27
Думаю,sudo нужно в основном в том случае,если на одном компе работает несколько юзеров,для некоторых из которых нужно ограничить права..
pomodor
16 октября, 2015 - 18:40
Тем более тут su удобнее. Ограничиваем юзерам права и включаем их только в те группы, привилегии которых нужны для работы. И всё. А так с настройкой прав замордуют.
Комментировать