Установка и настройка sudo в Debian GNU/Linux и Ubuntu Linux

Установка и настройка sudo в Debian GNU/Linux и Ubuntu Linux

Копия статьи с ныне мёртвого проекта debian-ubuntu-linux.ru. Обратите внимание, что я всего лишь скопировал статью сюда — я не правил её, и не имею никакого отношения к её содержимому (более того, с некоторыми моментами я категорически не согласен). С другой стороны, я считаю эти статьи полезными для новичка, и потому копирую их. Все авторские права принадлежат Дмитрию Белоусову.

…По умолчанию в Debian GNU/Linux пакет sudo отсутствует. Установка sudo — это, по глубокому убеждению автора, перовое, что необходимо сделать после завершения установки базовой системы Debian GNU/Linux. У пользователей Ubuntu Linux sudo установлен по умолчанию, однако тоже может потребовать конфигурации.

I.Установка sudo из репозиториев Debian GNU/Linux. II.Базовая настройка sudo.

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

либо при помощи утилиты visudo :

Последний способ откроет файл /etc/sudoers в редакторе пользователя по умолчанию, или если таковой не задан, то в редакторе vi. Преимущество данного способа в том, что при сохранении файл будет проверен на соответствие синтаксису.

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

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

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

которая сохранит переменную TZ для пользователя user.

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

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

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

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

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

где команда прописывается с полным путем. Для группы все аналогично, только добавляется знак “%”.

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

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

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

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

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

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

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

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

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

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

Надеюсь, что данной информации будет достаточно для настройки ограничений прав доступа при помощи sudo .

Comments (migrated from Blogger)

On 2009-03-27T23:07:00.000+02:00, Andrey wrote:

Статья супер. Вот только как сделать так, чтобы гномовские административные приложения, запускающиеся через gksu, просили пароль не рута, а юзера?

On 2009-03-27T23:20:00.000+02:00, Programmaster wrote:

Статья супер. Благодарим Дмитрия Белоусова :)

Вот только как сделать так, чтобы гномовские административные приложения, запускающиеся через gksu, просили пароль не рута, а юзера? Никак. su (консольная утилита) просит пароль того пользователя, права которого ты хочешь получить (по умолчанию — рута), а gksu является GTK+ интерфейсом для /bin/su.

On 2009-03-27T23:29:00.000+02:00, Andrey wrote:

Хмм… может как же тогда в убунту реализована эта возможность, ведь там все гномовские административные приложения кушают пароль юзера и довольны :)

On 2009-03-28T00:34:00.000+02:00, Programmaster wrote:

Хмм… может как же тогда в убунту реализована эта возможность, ведь там все гномовские административные приложения кушают пароль юзера и довольны :) Довели, погуглил :) Оказалось, что помимо gksu существует также gksudo (я, честно говоря, подумал о том, что gksudo должна существовать, но почему-то ожидал увидеть реализацию в виде отдельного пакета; очевидно, обе утилиты лежат в gksu), делающий то же,что sudo, но через GTK+ интерфейс. В Debian всё работает правильно, в Ubuntu root’а по умолчанию нет и потому обе утилиты спрашивают пароль текущего юзера. Всей ветки (ссылки ниже) я не читал, но, судя по всему, тебе придётся вручную заменить gksu на gksudo во всех шорткатах в меню, если ты хочешь вводить пасс юзера, а не рута.

On 2009-03-28T09:58:00.000+02:00, Andrey wrote:

thanks! В выходные озадачусь и прикручу sudo + gksudo :)

On 2009-03-28T10:07:00.000+02:00, Programmaster wrote:

Рад, что смог помочь. Удачи! Кстати, было бы интересно потом почитать в твоём блоге, чем же дело закончилось — мало ли, вдруг самому когда придётся с этим возится :)

On 2009-03-28T12:22:00.000+02:00, Andrey wrote:

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

On 2009-04-21T13:45:00.000+03:00, Анонимный wrote:

Ubuntu 8.04 Почему, несмотря на наличие в /etc/sudoers строки

sudo при выполнении /usr/sbin/hibernate спрашивает пароль user-а?

On 2009-04-21T17:55:00.000+03:00, Programmaster wrote:

Ubuntu 8.04 Почему, несмотря на наличие в /etc/sudoers строки user ALL = NOPASSWD: /usr/sbin/hibernate sudo при выполнении /usr/sbin/hibernate спрашивает пароль user-а? Честно говоря, не знаю. Ubuntu я вообще не юзал, хотя учитывая то, что она основана на используемом мною Debian’е, кажется странным то, что ты наблюдаешь. Всё, что могу сделать — посоветовать обратится на форумы. В частности, мне всегда помогали на linuxforum.ru — сходи туда, авось и тебе помогут.

On 2013-08-11T22:41:46.475+03:00, kaban wrote:

у меня пишет # aptitude install sudo Следующие НОВЫЕ пакеты будут установлены: sudo 0 пакетов обновлено, 1 установлено новых, 0 пакетов отмечено для удаления, и 1 пакетов не обновлено. Необходимо получить 0 B/851 kB архивов. После распаковки 1 885 kB будет занято. Смена носителя: вставьте диск, помеченный как «Debian GNU/Linux 7.1.0 _Wheezy_ - Official i386 CD Binary-1 20130615-21:54» в привод «/media/cdrom/» и нажмите [Enter].

как сд еще ему нужен?

On 2013-08-12T15:47:40.437+03:00, Minoru wrote:

@kaban , там же ясно написано: нужен первый CD. Это тот диск, с которого ты ставил систему. Если диска у тебя больше нет, можно поправить /etc/apt/sources.list, удалив оттуда соответствующую строку и добавив Интернет-репозитории — тогда пакет скачается оттуда. Удачи!

© 2008–2021 Alexander Batischev. Site’s source. Content licensed under CC-BY-NC-SA 4.0; code samples under CC0 1.0 Universal.

📎📎📎📎📎📎📎📎📎📎