Счетчик

Яндекс.Метрика
Cервер и сайт запущен 2011.02.01 на Debian

Всем доброго времени суток! Сегодня я расскажу как установить и настроить sudo в debian

Установка sudo из репозиториев Debian GNU/Linux.

# aptitude install sudo



Настройка sudo.
Sudo — очень гибкий инструмент, позволяющий настроить права на выполнения административных действий для каждого пользователя отдельно. Например одному разрешить перезагружать какой-либо сервер, а другому дать возможность менять права доступа к файлам и папкам. Откройте файл /etc/sudoers. Это можно сделать либо отдав команду на открытие файла в вашем любимом текстовом редакторе, например так:

# nano /etc/sudoers


Простейшая конфигурация выглядит так:

Defaults env_reset
# User privilege specification
root ALL=(ALL) ALL
user ALL=(ALL) ALL


Такая конфигурация дает пользователю user все права пользователя root при выполнении команды sudo. Defaults env_reset полностью запрещает все пользовательские переменные при исполнении команд от имени root. Это хорошо с точки зрения безопасности, однако иногда вызывает проблемы. Можно разрешить использование личных переменных какой-либо группе или отдельному пользователю, добавив подобную этой строку:

Defaults:%admin !env_reset


которая будет сохранять переменные окружения для всех пользователей группы admin, или:

Defaults:user env_keep=TZ


которая сохранит переменную TZ для пользователя user.
Если сервер администрируется группой людей, то имеет смысл поступить таким образом:

%admin ALL=(ALL) ALL


Как можно догадаться, эта запись дает доступ к root-привилегиям всем членам группы admin.

Можно настроить для каждого конкретного пользователя доступ только к конкретным командам. Например:

user ALL = /bin/mount, /bin/kill


даст пользователю user права на выполнение команд mount и kill с любой машины, а:

user2 mydebiancomp = /sbin/modprobe


даст пользователю user2 права на выполнение modprobe с машины mydebiancomp. Я думаю, что синтаксис понятен:
пользователь хост = команда
где команда прописывается с полным путем. Для группы все аналогично, только добавляется знак "%".

Продвинутые настройки sudo.

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

Cmnd_Alias command_alias = command1, command2, ... // алиасы команд
Host_Alias host_alias = hostname1, hostname2, ... // алиасы хостов
User_Alias user_alias = user1, user2, ... // алиасы пользователей


Далее именами алиасов можно оперировать точно также, как командами, машинами и пользователями, задавая правила.

Исполнение команды от имени другого пользователя тоже возможно. Например при такой записи:

user ALL = (user2, user3) /usr/bin/ark


пользователь user может выполнить команду ark от имени user2 или user3, при помощи ключа u, например так:

$ sudo -u user2 ark



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

Defaults:user timestamp_timeout=0


пароль полдьзователя user не будет запоминаться вообще, а при:

Defaults:user timestamp_timeout=-1


будет запоминаться на все время аптайма.

Sudo без паролей также возможно. Для этого существует подобная конструкция:

user myubuntucomp = NOPASSWD: /bin/kill


которая даст возможность пользователю user с хоста myubuntucomp использовать kill без запроса пароля. Вставьте свои значения, например ALL вместо имени хоста и команды, чтобы пользователь user мог вообще никогда не вводить пароль для выполнения команд от имени root с любого хоста, однако помните, что это делает систему очень уязвимой.

Вот примерно как то так должго быть. Только будьте внимательны при разлаче таких прав. Пиши если есть вопросы!