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

Комментарии

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

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

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

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

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

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

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

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

Комментировать

Filtered HTML

  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <strike> <code> <h2> <h3> <h4> <h5> <del> <img>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.