Настраиваем доступ к 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

Ваша оценка: Нет Средняя оценка: 4.6 (7 votes)
4
Sunrise

Там, где написано [Tab], надо вводить именно табуляторы соответствующей клавишей, а не пробелы!

Ваша оценка: Нет Средняя оценка: 5 (5 votes)
11
pomodor

Но, в отличие от su, он позволяет определять, какие команды могут выполнять пользователи из-под root.

Как это? А группы для кого запилены? Исполняемому файлу можно дать права на запуск для членов группы, ввести в группу нужного нам юзера, PROFIT!

Ваша оценка: Нет Средняя оценка: 5 (5 votes)
4
Sunrise

У меня так и сделано. Но таким образом можно только либо не разрешить пользователю из-под root ничего, либо разрешить всё. Никак ограничить выполнение команд нельзя. Как быть, если пользователю нужно дать возможность пользоваться программой, требующей root-права? А через sudo можно ограничить доступ, например, одной командой с ключевым словом NOEXEC.

Ваша оценка: Нет Средняя оценка: 5 (1 vote)
11
pomodor

Как быть, если пользователю нужно дать возможность пользоваться программой, требующей root-права?

Никак. Это потенциальная дыра. Но если очень хочется прострелить себе ногу, то для этого есть флаг SUID.

Ваша оценка: Нет Средняя оценка: 5 (1 vote)
a

Думаю,sudo нужно в основном в том случае,если на одном компе работает несколько юзеров,для некоторых из которых нужно ограничить права..

Ваша оценка: Нет Средняя оценка: 3 (1 vote)
11
pomodor

Тем более тут su удобнее. Ограничиваем юзерам права и включаем их только в те группы, привилегии которых нужны для работы. И всё. А так с настройкой прав замордуют.

Ваша оценка: Нет Средняя оценка: 5 (2 votes)
Отправить комментарий
КАПЧА
Вы человек? Подсказка: зарегистрируйтесь, чтобы этот вопрос больше никогда не возникал. Кстати, анонимные ссылки запрещены.
CAPTCHA на основе изображений
Enter the characters shown in the image.
Linux I класса
Linux II класса
Linux III класса
Счетчики
  • Самый популярный сайт о Linux и Windows 10
О Либератуме

Liberatum — это новости мира дистрибутивов Linux, обзоры, сборки, блоги, а также лучший сайт об Ubuntu*.