Как работать с sudo в Linux

visudo2

Временами требуется получить некоторые возможности администратора системы (root), но при этом нет возможности узнать пароль самого root. Например, нам для какой-нибудь необходимости нужно сделать так, чтобы определенный пользователь мог использовать привилегии root’а в ограниченном объеме.

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

Простой пример – завершение работы. Заведем обычного пользователя и выполним команду shutdown:

Sudo в Linux
Sudo в Linux

Видим, что система не позволяет это сделать обычному пользователю. Ай-ай-ай, как нехорошо. Переключимся на рута и дадим пользователю привилегии на то, чтобы сделать перезагрузку.

Итак, входим в сеанс как root (это нужно сделать, чтобы был доступ к файлу /etc/sudoers, а вообще этот файл открывается командой visudo:

# visudo

visudo
visudo

Файл открывается в редакторе по-умолчанию.. У меня это, похоже на nano.

Здесь обратите внимание на четыре секции:

  1. Host alias specification: задает алиасы для узлов. Можем создать как бы подгруппу для различных хостов. Перечисление через символ запятой. Например, создадим строку в этом разделе:
    Host_Alias LOCAL = localhost
  2. User alias specification: задает алиасы для пользователей. Например, создадим подгруппу пользователей:
    User_Alias SHUTDOWN_USERS = dmitry
  3. Cmnd alias specification: задает алиасы для команд. Создадим набор команд для выключения компьютера:
    Cmnd_Alias POWEROFF = /sbin/shutdown, /sbin/halt
  4. User privilege specification: задает непосредственно права пользователей. Вот тут и удобно использовать алиасы, созданные ранее. Все это создается исключительно для удобства. Например, создадим здесь:
    SHUTDOWN_USERS LOCAL = POWEROFF

В конфигурации использованы все три созданные ранее алиаса. Фактический формат записи “Кто где = что делать”. У нас эта строка будет означать, что все пользователи, перечисленные в алиасе SHUTDOWN_USERS (а туда относятся: dmitry, но можно добавить и других, через запятую) на узле LOCAL (localhost, т.е. этот самый компьютер) могут выполнять команды из набора POWEROFF (/sbin/shutdown и /sbin/halt) с правами суперпользователя, но указывая не его пароль, а свой.

Проверяем файл:

/etc/sudoers
/etc/sudoers

Сохраняем и выходим.

Узнать свои права можно выполнив команду sudo -l:

$ sudo -l

sudo
sudo

Ну чтож, теперь попробуем выключить компьютер. Система нам это позволит, спросив наш пароль, пароль root для этого уже не нужен.

Полезные фишки:

  • Если в описании привилегий после символа “=” вписать опцию “NOPASSWD:”, то пароль запрашиваться не будет;
  • Defaults:user timestamp_timeout=0 эта опция не позволяет паролю запоминаться (будет спрашивать каждый раз), по умолчанию равно 5 минутам
Интересно? Поделись с другом
Litl-Admin.ru

Comments:

Comments: 4
  1. толстопард

    > Файл открывается в редакторе по-умолчанию.. У меня это, похоже на nano.
    Повезло :) А в старой шляпе это будет vi, у которого, как известно, два режима — бибикать и всё портить. Тогда
    VISUAL=nano visudo

    1. litladmin (author)

      Да VI в общем-то не такой уж плохой редактор. К нему просто нужно привыкать. Nano – ближе к классическим редакторам. Мне по душе все-таки ee (freebsd). На самый крайний случай mcedit

  2. valentino

    Спасибо! Всё получилось! А обязательно нужно быть членом группы судоерс?

    1. litladmin (author)

      Нет, не только не обязательно, но и не желательно! В этом файле есть строка – позволяет делать ВСЁ членам этой группы. (см ниже). Поэтому всё будет работать! Но не только те команды, что прописаны, а вообще все. Если это вам надо – добавьте себя в группу. Тогда и привилегии описывать больше не надо, все уже позволено.

Leave a Reply