- Установка и настройка sudo в Debian GNU/Linux и Ubuntu Linux
- I.Установка sudo из репозиториев Debian GNU/Linux.
- II.Базовая настройка sudo.
- III.Продвинутые настройки sudo.
- Comments (migrated from Blogger)
- ru sudo
- Sudo не включён по умолчанию в Debian
- Почему sudo
- Обзор настроек
- Проблемы и решения
- Извините, пользователь jdoe не может выполнять .
- sudoers только для чтения
- CVE-2005-4158
- Опция PASSWD не работает
- Неправильное поведение HOME (и настроек профиля)
- Права суперпользователя Debian (sudo, visudo)
- Установка и настройка
- Тонкая настройка
- Полезное
Установка и настройка 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.
Источник
- ru
- sudo
?Обсуждения
Sudo — программа, дающая возможность системным администраторам позволять пользователям выполнять команды как root (или другой пользователь). Основная философия — позволить людям выполнить свою задачу, используя как можно меньше привилегий. Также sudo — эффективный способ для записи деятельности root: кто использует sudo,какую команду и когда.
Sudo не включён по умолчанию в Debian
Грубо говоря, sudo установлен и включён (если во время установки были выбраны компоненты рабочего стола). Но в Debian права не предоставляются по умолчанию (в отличие от некоторых других дистрибутивов).
Выполнить команду от имени root: (по умолчанию в Debian)
Пароль учётной записи root выбирается при установке системы.
Gnome запрашивает пароль (для учетной записи администратора) при запуске программ, которые настраивают систему.
Для выполнения команды от root, откройте Root Terminal (Приложения > Стандартные > Root Terminal), или запустите su в любом терминале.
(Примечание для DebianSqueeze: введён аналогичный инструмент PolicyKit, ориентированные на потребности настольных компьютеров и ноутбуков).
Почему sudo
Использование sudo лучше (безопаснее) открытия сессии root, по следующим причинам:
- Нет необходимости в пароле root (sudo запрашивает пароль текущего пользователя).
По умолчанию команды выполняются от имени обычного пользователя (не привилегированного), что позволяет избежать ошибок. От имени root выполняются только команды с префиксом sudo.
По этим причинам, переключение на root с помощью «sudo -i» (или sudo su) считается устаревшим, поскольку отменяет вышеперечисленные особенности.
Обзор настроек
Небольшой пример для того чтобы разрешить определённым пользователям запускать некоторые программы (для получения дополнительной информации, см. документацию).
Проблемы и решения
Извините, пользователь jdoe не может выполнять .
Типичный сеанс выглядит следующим образом:
Это сообщение обычно означает, что пользователю не разрешено выполнять этого действие.
sudoers только для чтения
Файл /etc/sudoers только для чтения, даже для root!
Нужно использовать команду visudo для редактирования /etc/sudoers.
CVE-2005-4158
With the fix for CVE-2005-4158: Insecure handling of PERLLIB PERL5LIB PERL5OPT environment vars, the default behaviour of handling environment variables was switched to protect against malicious local users with sudo privileges getting sudo to do more than the malcontent was given privileges to do.
- sudo (1.6.8p7-1.3) stable-security; urgency=high
- Non-maintainer upload by the Security Team
Reverse the environment semantic by forcing users to maintain a whitelist [env.c, Bug 342948, CVE-2005-4158]
As a result, unless you modify your sudoers file to contain Defaults env_reset, you may experience problems using sudo like the following:
- E138: Can’t write viminfo file $HOME/.viminfo!
- dircolors: no SHELL environment variable, and no shell type option given
- squidview: can’t get your home directory, exiting
If you had more complex setups where you meant to pass through environment variables, your work around may be more complex or no longer possible.
Опция PASSWD не работает
sudo has a flag called exempt_group which contains a list of groups for which always NOPASSWD is true and setting PASSWD has no effect. On Debian Systems this list consists of the group sudo.
Неправильное поведение HOME (и настроек профиля)
If you are having problems when you sudo to your shell and your HOME (and profile settings) doesn’t work as expected because your new HOME is root’s homedir you must know that sudo since upstream version 1.7.4 (Debian Squeeze/Sid after Sep/2010) resets all environmental variables in it’s new default configuration, to restore the old behavior of reading the users HOME dir you may preserve the HOME environment variable by adding this to your /etc/sudoers configuration file:
Для получения дополнительной информации см. список изменений для версии 1.7.4
Источник
Права суперпользователя Debian (sudo, visudo)
В операционных системах семейства Linux реализован принцип разграничения пользовательских привилегий, то есть у разных учетных записей разный объем прав доступа к каталогам, файлам и программам. Максимальными правами наделена встроенная учетная запись root. Вновь создаваемые пользовательские аккаунты обычно существенно ограничены в доступе к системным конфигурационным файлам, управлении сервисами, установке и удалении программных пакетов. При этом работа в операционной системе под учетной записью root настоятельно не рекомендуется, прежде всего в целях безопасности. В этом случае на помощь приходит утилита командной строки sudo.
Команда sudo позволяет запускать отдельные команды с повышением привилегий (по умолчанию с правами root) пользуясь непривилегированной учетной записью. Давайте разберемся, что же требуется для работы этой утилиты.
Установка и настройка
В ОС Ubuntu sudo включена по умолчанию, а в Debian, если в процессе установки не был выбран соответствующий пакет, скорее всего будет следующая картина:
# sudo
-bash: sudo: command not found
Значит, требуется установить недостающий пакет. Обновляем информацию о репозиториях и устанавливаем sudo:
apt-get update
apt-get install sudo
Дожидаемся окончания процесса:
После успешной установки потребуется сконфигурировать sudo, определив, какие пользователи или группы смогут использовать повышение привилегий и в каком объеме. Все эти настройки хранятся в конфигурационном файле /etc/sudoers, однако вносить в него изменения напрямую настоятельно не рекомендуется. Для этих целей используется специальная команда:
которая запускает текстовый редактор с конфигурационным файлом:
За предоставление прав здесь отвечают две строки:
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Первая строка назначает права для учетной записи root, вторая устанавливает права для членов группы sudo, которая была создана при установке пакета (знак % перед названием означает, что имя относится к группе пользователей). Соответственно, у нас есть два основных способа предоставить пользовательской учетной записи право использовать sudo:
Добавить учетную запись пользователя (например, user) в группу sudo на сервере:
usermod –a –G sudo user
После изменения членства в группе, потребуется заново авторизоваться в этой учетной записи для применения новой конфигурации. Данный метод рекомендуется в тех случаях, когда пользователю необходимо предоставить полные права.
Создать в файле новую запись, например, для учетной записи user. Мы добавляем строку по аналогии с root:
user ALL=(ALL:ALL) ALL
Добавлять новую запись рекомендуется в тех случаях, когда список привилегий будет корректироваться (об этом чуть позднее). Если мы внесли изменения в файл, нужно их сохранить нажатием сочетания клавиш Ctrl-O и выйти из редактора — Ctrl-X.
Теперь можно проверить корректность работы:
$ sudo cat /etc/sudoers
[sudo] password for user:
Команда sudo запрашивает пароль текущего пользователя (в данном случае это user) — вводим его, и, если все сделано правильно, мы увидим содержание системного конфигурационного файла.
Тонкая настройка
Таким образом, обычный пользователь может запускать команды с правами учетной записи root не зная ее пароль. Это очень удобно, но может быть небезопасно — есть ли возможность ограничить круг команд, которые можно исполнять посредством sudo? Да, и поможет нам в этом тот же самый конфигурационный файл. Снова запускаем visudo и разбираемся дальше. Нас интересуют параметры, указанные после имени пользователя:
Разберем их подробнее:
- ALL=(ALL:ALL) ALL — первый параметр определяет к какому хосту применяется конфигурация. При использовании выделенного сервера параметр можно оставить без изменений;
- ALL=(ALL:ALL) ALL — параметры в скобках определяют с полномочиями какого пользователя (первый параметр) и/или группы (второй параметр) будет выполняться команда. По умолчанию sudo выполняет команду от имени root, однако при запуске с ключом –u можно указать другую учетную запись, а с ключом –g другую группу, чьи полномочия будут использованы при запуске;
- ALL=(ALL:ALL) ALL — третий параметр определяет к каким файлам и командам относятся данные настройки.
Исходя из вышесказанного, при необходимости определить перечень разрешенных команд заменяем последний параметр ALL тем, что нам требуется, перечисляя команды через запятую. Например, строка:
user ALL=(ALL:ALL) /sbin/shutdown –r, /bin/cat
дает право пользователю user с помощью sudo осуществлять перезагрузку сервера командой sudo /sbin/shutdown –r и просматривать файлы с помощью sudo /bin/cat. Другие команды через sudo выполняться не будут. Например, при попытке выключить сервер командой sudo /sbin/shutdown –h, получим ответ:
Sorry, user user is not allowed to execute ‘/sbin/shutdown -h’ as root on debian10.
Полезное
Увидеть список привилегий можно, запустив sudo –l (будет отображен список для текущего пользователя), либо sudo –l –U user (будет отображен список привилегий пользователя user):
В состав sudo входит команда sudoedit, которая запускает текстовый редактор с указанным файлом сразу с повышенными привилегиями, то есть вместо команды:
sudo nano /etc/network/interfaces
Если требуется длительная работа в режиме повышенных привилегий и вводить sudo для каждой команды неудобно, можно запустить через sudo экземпляр командного интерпретатора:
и продолжить работу в нем — все команды будут запускаться с повышенными правами. По завершении работы выходим из интерпретатора командой exit.
Источник