Материал просмотрен 1,744 раз(а)

Временами требуется получить некоторые возможности администратора системы (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 минутам