- Содержание
- Что такое sudo
- Где используется sudo
- Запуск графических программ с правами администратора
- Запуск программ с правами администратора в терминале
- Получение прав суперпользователя для выполнения нескольких команд
- Использование традиционного root аккаунта и команды su
- Ubuntu 11.04 и младше
- Ubuntu 11.10 и старше
- Настройка sudo и прав доступа на выполнение различных команд
- Разрешение пользователю выполнять команду без ввода пароля
- Создание синонимов (alias`ов)
- Время действия введённого пароля
- Sudo не спрашивает пароль
- Ссылки
- Предназначение root-прав в Linux
- Безопасность использования прав суперпользователя
- Команда sudo и примеры ее использования
- Переключение на суперпользователя
- Предоставление и отзыв прав суперпользователя
- Создание нового пользователя с root
- Для существующей учетной записи
- Откат прав суперпользователя
- Заметки
- Преимущества использования sudo
- Минусы использования sudo
- Заблуждения
- Возврат к традиционной учетной записи root
- Drag & Drop Sudo
- Об этой статье
- Вход под суперпользователем
- Переключение на суперпользователя в терминале
- Получение прав root без переключения
- Графически приложения от имени суперпользователя
- Выводы
- Использование su для получения прав root
- Использование sudo для запуска команд от root
- Присвоение пользователю привилегий sudo
- Проверка прав при использовании sudo
- Файл конфигурации /etc/sudoers для sudo
- Строки по умолчанию Defaults
- Строки пользовательских привилегий
- Строки привилегий для групп
- Строка @includedir /etc/sudoers.d
- Настройка персонализированных правил
- Создание псевдонимов
- Прочая информация по команде sudo
- Как стать пользователем root?
- Получение временного доступа root с помощью команды sudo
- Разблокировка/блокировка учетной записи root
- Как изменить пароль root (альтернативный подход)?
- Использование команды sudo в Linux
- Файл конфигурации /etc/sudoers
Содержание
В любой Linux-системе обязательно есть один привилегированный пользователь — root. Этот пользователь имеет права на выполнение любых действий, удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны, все остальные пользователи системы обычно не имеют большинства необходимых прав, например, прав на установку программ, поскольку это является административной операцией, права на которую есть только у root. Ещё одной распространённой операцией, доступной только суперпользователю, является копирование и изменение файлов в системных папках, куда обычный пользователь доступа не имеет.
Раньше данная проблема решалась достаточно просто: при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду su
. Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе, такая схема работает неплохо, однако у неё есть много существенных недостатков, в частности, невозможно никак (точнее, очень сложно) ограничивать административные привилегии только определённым кругом задач.
Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo
.
В Ubuntu по умолчанию root аккаунт вообще отключён, т.е. вы никаким способом не сможете попасть под root, не включив его. root именно что отключён, т.е. он присутствует в системе, под него всего лишь нельзя зайти. Если вы хотите вернуть возможность использовать root, смотрите ниже пункт о включении root аккаунта.
Что такое sudo
sudo — это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.
Где используется sudo
sudo используется всегда, когда вы запускаете что-то из меню Администрирования системы. Например, при запуске Synaptic вас попросят ввести свой пароль. Synaptic — это программа управления установленным ПО, поэтому для её запуска нужны права администратора, которые вы и получаете через sudo вводя свой пароль.
Однако не все программы, требующие административных привилегий, автоматически запускаются через sudo. Обычно запускать программы с правами администратора приходится вручную.
Запуск графических программ с правами администратора
Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt+F2.
Допустим, нам необходимо запустить файловый менеджер Nautilus с правами администратора, чтобы через графический интерфейс как-то изменить содержимое системных папок. Для этого необходимо ввести в диалог запуска приложений команду
gksudo nautilus
Вместо gksudo
можно подставить gksu
, кроме того, пользователи KDE должны вместо gksudo
писать kdesu
. У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска
gksudo <имя_команды>
Будьте предельно внимательны при работе в приложениях, запущенных с правами администратора. Вы безо всяких предупреждений со стороны системы сможете выполнить любую операцию, в частности, удалить системные файлы, сделав при этом систему неработоспособной.
Запуск программ с правами администратора в терминале
Для запуска в терминале команды с правами администратора просто наберите перед ней sudo
:
sudo <команда>
У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter. После ввода пароля указанная команда исполнится от имени root.
Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале
sudo -K
Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды
sudo cat test.txt | grep text > result.txt
с правами root исполнится только cat
, поэтому файл result.txt может не записаться. Нужно либо писать sudo
перед каждой командой, либо временно переходить под суперпользователя.
Получение прав суперпользователя для выполнения нескольких команд
Иногда возникает необходимость выполнить подряд несколько команд с правами администратора. В этом случае можно временно стать суперпользователем одной из следующих команд:
sudo -s sudo -i
После этого вы перейдёте в режим суперпользователя (с ограничениями, наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данные команды по действию похожа на su
, однако:
— sudo -s — не меняет домашний каталог на /root, домашним остается домашний каталог пользователя вызвавшего sudo -s, что обычно очень удобно.
— sudo -i — сменит так же и домашний каталог на /root.
Для выхода обратно в режим обычного пользователя наберите exit
или просто нажмите Ctrl+D.
Использование традиционного root аккаунта и команды su
Разблокировка учетной записи root приводит неоправданным рискам (работая постоянно под рутом вы имеете 100500 способов «отстрелить себе ногу»), а также упрощает получение доступа к вашему компьютеру злоумышленником.
Ubuntu 11.04 и младше
Для входа под root достаточно задать ему пароль:
sudo passwd root
Ubuntu 11.10 и старше
Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.
1. Устанавливаем root пароль.
Введите в терминал:
sudo passwd root
gksu gedit /etc/lightdm/lightdm.conf
В конце файла допишите:
greeter-show-manual-login=true
3. Перезагружаем lightdm.
Введите в терминал:
sudo service lightdm restart
Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:
sudo passwd -l root
Настройка sudo и прав доступа на выполнение различных команд
sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers
. Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду
sudo visudo
%admin ALL=(ALL) ALL
Подробнее о синтаксисе и возможностях настройки этого файла можно почитать выполнив
man sudoers
Если вы допустите ошибку при редактировании этого файла, то вполне возможно полностью лишитесь доступа к административным функциям. Если такое случилось, то необходимо загрузиться в recovery mode, при этом вы автоматически получите права администратора и сможете всё исправить. Кроме того, отредактировать этот файл можно с LiveCD.
Разрешение пользователю выполнять команду без ввода пароля
Для того, что бы система не запрашивала пароль при определенных командах необходимо в sudoers после строки # Cmnd alias specification добавить строку, где через запятую перечислить желаемые команды с полным путём(путь команды можно узнать, выполнив which имя_команды:
# Cmnd alias specification Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot
И в конец файла дописать строку
имя_пользователя ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS
Внимание! Вышеописанные действия не отменяют необходимости ввода команды sudo перед вашей командой
Создание синонимов (alias`ов)
Для того, чтобы не только не вводить пароль для sudo, но и вообще не вводить sudo, сделайте следующее:
откройте файл .bashrc, находящейся в вашем домашнем каталоге
~bashrc
и добавьте в конец файла строки
= = pm-hibernate= = =
Время действия введённого пароля
Возможно, вы хотите изменить промежуток времени, в течение которого sudo
действует без ввода пароля. Этого легко добиться добавив в /etc/sudoers (visudo)
примерно следующее:
Defaults:foo timestamp_timeout=20
Здесь sudo
для пользователя foo действует без необходимости ввода пароля в течение 20 минут.
Если вы хотите, чтобы sudo
всегда требовал ввода пароля, сделайте timestamp_timeout
равным 0.
Sudo не спрашивает пароль
sudo
без пароля — чудовищная дыра в безопасности, кому попало разрешено делать что угодно. Если вы разрешили это намеренно — срочно верните обратно как было.
Однако, в некоторых случаях sudo
внезапно перестаёт требовать пароль само по себе. Если сделать visudo
, то можно увидеть примерно такую строку, которую пользователь вроде бы не добавлял:
ALL ALL=(ALL) NOPASSWD:ALL
Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root
запускать только этот Connect Manager, примерно так:
юзернейм ALL= NOPASSWD: /путь/к/программе
Есть и другие варианты решения проблемы, небольшое обсуждение здесь.
Ссылки
Настройка sudo — топик на форуме о времени действия пароля
В дистрибутивах Linux пользовательские привилегии предоставляются путем открытия доступа к root. Наличие таких прав позволяет использовать функциональность операционной системы более широко и выполнять необходимые действия в корневом каталоге.
Давайте детально обсудим, что может суперпользователь в Linux, как настроить root и для чего нужна команда
Предназначение root-прав в Linux
Права обычного пользователя в Linux крайне ограничены. Он может управлять только своим каталогом и открывать для чтения определенные файлы из корня. Доступ для их изменения или установки программ отсутствует, что делает привилегии суперпользователя крайне важными при настройке ОС и решении разных проблем. Обычный пользователь ограничивается следующим набором прав:
- чтение, запись и изменение любых атрибутов пользовательской папки;
- то же самое и для каталога
- выполнение программ в любом месте, где нет ограничений;
- чтение файлов с соответствующим атрибутом для всех пользователей.
При наличии рут-прав у юзера появляется гораздо больше возможностей и расширяются границы взаимодействия с операционной системой. Становятся доступными любые действия со всеми папками и файлами.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Безопасность использования прав суперпользователя
Если с предназначением root-прав в Linux все понятно, то вот к безопасности их использования есть вопросы. В основном, относится это к серверным машинам, поскольку риск взлома домашнего компьютера очень мал, да и кому нужны файлы обычного пользователя, чтобы ради этого затевать процедуру взлома. Если вы используете Linux как обычную операционную систему, работаете с документами и стандартными программами, используйте root для установки приложений и защиты системы от случайных изменений, которые могут внести другие пользователи компьютера.
С серверной частью все гораздо сложнее, поскольку рут как таковой не предоставляет полной защиты. Часто используемые пароли взламываются путем перебора или поиском бэкдора. Поэтому не стоит полагаться исключительно на защиту паролем, если вы владеете файлами сайтов или используете сервер для других целей. Займитесь настройкой файрвола, если это повысит уровень защиты.
Команда sudo и примеры ее использования
тесно связана с root в Linux, поскольку отвечает за передачу прав суперпользователя и позволяет от его имени выполнять команды в Терминале. Существует несколько ее вариаций, использующихся при разных обстоятельствах. Подходит эта команда как для выполнения всего одного действия, так и для передачи прав на всю текущую сессию.
Самый простой пример использования – запуск программы от имени суперпользователя. Для этого вводится:
sudo program \\ program – название приложения, которое вы хотите запустить
применяется для установки софта, команда в таком случае обретает вид:
sudo apt install program
В следующем разделе статьи речь пойдет о передаче прав суперпользователя, что тоже реализуемо при помощи . Я рассмотрю два полезных аргумента. Советую ознакомиться с ними, если хотите упростить выполнение действий через Терминал.
Переключение на суперпользователя
Еще раз уточню, что команда идеально подходит для получения необходимых привилегий без переключения учетной записи. Ее можно использовать как для выполнения одного действия, так и нескольких. Если вы желаете временно получить рут-права через эту команду, введите . В первом случае домашний каталог остается текущим, а во втором меняется на /root.
Примерно так же работает и команда , но она обладает дополнительными аргументами, которые следует уточнить:
- -c – позволяет выполнить команду;
- -g – устанавливает группу для пользователя;
- -G – дополнительные группы для юзера;
- — -l —login – один из режимов входа, при котором происходит переключение домашнего каталога;
- -p – сохранение переменных окружения;
- -s – выбор оболочки для выхода.
Вы уже сами решайте, какой вариант хотите использовать, и готовы ли смириться со всеми ограничениями и недостатками, которые накладывает каждый из них.
Предоставление и отзыв прав суперпользователя
Каждому пользователю в Linux можно предоставить root-права, добавив его в соответствующую группу. Точно так же их можно и отнять, если вдруг это понадобится. Рассмотрю три варианта действий.
Создание нового пользователя с root
Допустим, что вы, единственный юзер в Linux, хотите создать еще одну учетную запись с правами суперпользователя. В таком случае алгоритм действий обретет следующий вид:
- Откройте Терминал и введите команду
- В консоли появятся инструкции по созданию нового пользователя. Присвойте пароль и подтвердите действие, чтобы завершить создание.
- Добавьте новую учетную запись в группу sudo, введя user здесь тоже понадобится заменить).
- Проверьте выполненные действия, переключившись на новую учетную запись через . Для подтверждения введите пароль (при вводе символы не отображаются на экране).
- Выполните любую команду с и убедитесь, что все прошло успешно.
Для существующей учетной записи
Если учетная запись уже добавлена, в консоли остается ввести только одну команду, чтобы добавить пользователя в группу sudo и разрешить ему получение рут-прав. Сама команда представлена ниже, вам остается только скопировать ее и поменять имя юзера.
Используйте предыдущую инструкцию для проверки внесенных изменений.
Откат прав суперпользователя
Если вдруг вы решили, что одна из учетных записей больше не должна состоять в группе sudo, отзовите права, введя команду:
Это была вся основная информация о правах суперпользователя в Linux. Вы знаете, что дают такие привилегии, как их правильно использовать и управлять пользователями. В качестве рекомендации скажу, что всегда нужно читать текст ошибок, появляющихся в Терминале, если что-то пошло не так. Это позволит вам быстрее решить проблему без траты времени на поиски в Google.
- Доступ такого уровня к ресурсам компьютера необходим далеко не всегда.
- Доступ на уровне суперпользователя— это, скорее, большая ответственность, нежели благодать. При обычном доступе вы работаете только с ресурсами своей учетной записи. Если же вы находитесь в системе в качестве суперпользователя, вы можете случайно сделать ошибку и удалить все — да-да, все файлы всей системы Linux!
Думаете, с вами такого не случится? Даже опытные администраторы Linux рассказывают жуткие истории о том дне, когда они сделали роковую опечатку или не задумывались над тем, что они делают, работая под именем суперпользователя.
По умолчанию учетная запись суперпользователя отключена в Ubuntu. Это означает, что вы не сможете зайти в систему как root. Однако, инсталлятор настраивает sudo для пользователя, созданного во время установки. Команда sudo позволяет выполнять все приложения, требующие привилегий суперпользователя.
Когда sudo спрашивает пароль, вы должны ввести пароль ВАШЕГО пользователя ! То есть пароль root’a вам не нужен !
Заметки
- Пароль сохраняется по умолчанию на 15 минут. По истечении этого времени, вам нужно будет ввести пароль снова.
- Несмотря на то, что при вводе пароль не отображается на экране (даже в виде звездочек), он все-равно вводится!
Для выполнения графических конфигурационных утилит с sudo, просто запустите приложение через меню.
Для запуска программ через sudo, которые обычно запускаются под обычным пользователем (например gedit), нажмите Alt+F2 и введите gksudo gedit. В Kubuntu используйте вместо gksudo программу kdesu.
Использование sudo в командной строке:
Пример #1 — смена пользователя и группы для файлов в домашней папке пользователя
sudo chown bob:bob /home/bob/*
Пример #2 — перезапуск сетевых служб
sudo /etc/init.d/networking restart
Для запуска графических программ используйте gksudo или kdesu, иначе попытка входа может провалиться. Если это происходит и при входе вылазит ошибка: «Unable to read ICE authority file», войдите в безопасный терминал и выполните следующую команду, подставив своё имя пользователя:
rm /home/user/.{ICE,X}authority
Для запуска режима суперпользователя в терминале (root shell, т.е. командная строка, где вы можете выполнять команды под пользователем root), запустите терминал и выполните команду:
sudo -i (эквивалент команды "sudo su -")
- Для запуска режима суперпользователя, оставив текущие переменные окружения, введите:
sudo -s (эквивалент команды "sudo su")
- Вход под другим пользователем (для графического входа, используйте что-то типа gdmflexiserver):
sudo -i -u username
Преимущества использования sudo
Причины, по которым пользователь root отключен по умолчанию, заключаются в следующем:
- Программа установки задаёт меньше вопросов.
- Пользователям не нужно запоминать дополнительный пароль, который они могут забыть.
- Перед тем как произойдёт выполнение команды, вас попросят ввести пароль. Это даст время подумать о возможных последствиях.
sudo добавляет в лог выполненные команды (/var/log/auth.log).
Все попытки взломщиков, пытающихся подобрать пароль к root, будут обречены на провал.
- sudo позволяет легко предоставлять права администратора на долгий или короткий период другим пользователям, просто добавляя и удаляя их из группы, при этом не трогая корневую учетную запись.
- sudo можно настроить с более fine-grained политикой безопасности.
- Аутентификация автоматически истекает по окончании определенного промежутка времени.
Минусы использования sudo
Хотя выгода для использования sudo на персональных компьютерах велика, есть некоторые моменты, которые надо отметить:
- Во многих офисных системах только один локальный пользователь в системе root. Все остальные пользователи импортируются через NSS технологии, такие как nss-ldap. Для настройки рабочей станции в случае повреждения сети, при поломке nss-ldap, необходим root. This tends to leave the system unusable unless cracked. An extra local user, or an enabled root password is needed here.
Заблуждения
Разве sudo не менее безопасно, чет su?
Я могу получить права администратора из консоли без ввода пароля!
- Вам потребуется ввести пароль для этого.
Возврат к традиционной учетной записи root
<img alt="Info » src=»https://help.ubuntu.com/moin_static198/light/img/icon_cool.png» title=»Info «> Не рекомендуется это делать!
Consider using the below command instead:
sudo -i
Использование этой команды временно откроет консоль с правами root. Активация аккаунта root в Ubuntu не поддерживается из-за ненадобности. Всё, что вам требуется сделать с правами администратора в Ubuntu можно сделать через sudo или gksudo.
Если root включен, и вы хотите отключить его, откройте терминал и введите следующую команду:
sudo passwd -l root
Drag & Drop Sudo
Этот трюк взят из форумов.
Создайте кнопку запуска со следующей командой:
gksudo "gnome-open %u"
Теперь при перетаскивании любого файла на эту кнопку, будет запущено ассоциированное с этим файлом приложение с привилегиями суперпользователя. Это особенно удобно при редактировании конфигурационных файлов.
Чтобы запускать административные задачи на Linux, у вас должны быть права суперпользователя (права root). В большинстве дистрибутивов Linux присутствует отдельная учетная запись суперпользователя, но в Ubuntu она по умолчанию отключена. Это позволяет предотвратить случайные ошибки и защитить систему от проникновения. Чтобы запустить команды, которые требуют административный доступ, используйте команду sudo.
-
-
Введите sudo, прежде чем ввести остаток команды. Добавление sudo в начало команды запустит ее с правами администратора.
- Пример: команда sudo /etc/init.d/networking stop прекращает работу сети, а sudo adduser добавляет в систему нового пользователя. Обе эти команды требуют прав суперпользователя.
- Перед тем, как sudo выполнит команду, вы должны будете ввести пароль. Linux хранит пароль в течение 15 минут, так что вам не придется вводить их постоянно.
-
- Пример: введите gksudo gedit /etc/fstab, чтобы открыть файл «fstab» в текстовом редакторе GEdit с графическим интерфейсом.
- Если вы используете KDE Window Manager, вместо gksudo вводите команду kdesudo.
-
- Введите команду sudo passwd root. Этим вы создадите пароль для root, тем самым «включите» административный доступ. Смотрите, не забудьте этот пароль.
- Введите sudo -i. Введите пароль от root, когда это будет необходимо.
- Значок в терминале изменится с $ на #, указывая на то, что теперь вы обладаете правами суперпользователя.
-
-
Нажмите комбинацию клавиш , чтобы открыть окно терминала. В целях безопасности (и чтобы избежать поломок), учетная запись суперпользователя по умолчанию отключена. Чтобы безопасно запустить команду с правами администратора, используйте команды
sudo
илиgksudo
. Если вы просто обязаны иметь отдельную учетную запись с правами суперпользователя (если этого требует программа, используемая в вашей компании или за этим компьютером будет находиться один человек), включите права суперпользователя, введя несколько простых команд. -
-
Введите пароль, после чего нажмите .
-
Повторно введите пароль, после чего нажмите . Теперь учетная запись суперпользователя будет иметь пароль.
-
Введите команду su - и нажмите . Введите пароль суперпользователя, чтобы открыть консоль.
- Чтобы отключить учетную запись суперпользователя, введите команду sudo passwd -dl root.[7]
- Чтобы отключить учетную запись суперпользователя, введите команду sudo passwd -dl root.[7]
- Старайтесь как можно реже входить в систему с правами суперпользователя. Практически все команды, которые требуют прав суперпользователя, могут быть запущены командами sudo или gksudo.
- С помощью команды sudo –i можно получить доступ к консоли другого пользователя в системе. Чтобы стать пользователем «Max», введите sudo –i Max, а затем введите свой пароль (а не пароль Максима).
Об этой статье
Как вы знаете, Linux очень серьезно относится к управлению пользователями и предоставлению им прав на работу с системой. Обычный пользователь может записывать файлы только в свой каталог и каталог /tmp/. Также есть возможность читать некоторые файлы в корневой файловой системе. Но вы не можете устанавливать программы, ведь для этого нужно право на запись, не можете изменять атрибуты файлов, не можете запускать сервисы, не можете читать некоторые файлы логов и еще много чего не можете.
В Linux управлять корневой файловой системой и создавать там файлы имеет право только пользователь root.
В этой статье мы рассмотрим какие программы нужны для того, чтобы получить права root пользователя linux, как они работают, как выполнять программу с правами root от обычного пользователя и как запускать графические программы с правами root. А также выясним что такое sudo в чем разница su или sudo.
Очень долго перечислять чего не может обычный пользователь Linux, проще сказать на что у него есть право, а именно при стандартной настройке полномочий для файлов в Linux, обычный пользователь может:
- Читать, писать и изменять атрибуты файлов в своем каталоге
- Читать, писать, изменять атрибуты файлов в каталоге /tmp
- Выполнять программы там, где это не запрещено с помощью флага noexec
- Читать файлы, для которых установлен флаг чтения для всех пользователей.
Если же нужно сделать что-то большее нам понадобятся права root пользователя linux. У root есть право делать все в вашей файловой системе независимо от того какие права установлены на файл.
Вход под суперпользователем
Вы получите полноценное окружение root с возможностью выполнять все действия, но такой способ очень непрактичный, так как вы теряете все преимущества использования графического интерфейса.
Переключение на суперпользователя в терминале
Теперь мы подошли к более интересному и практичному. С помощью специальных утилит вы можете переключить текущий эмулятор терминала в окружения суперпользователя и выполнять все следующие команды не от своего имени, а от его, таким образом, дав программе права root linux. Для этого существует утилита su. Вообще говоря, эта утилита позволяет не только переключаться на пользователя root но и на любого другого пользователя, но по умолчанию используется именно root. Рассмотрим ее подробнее. Команда su linux имеет следующий синтаксис:
Вот ее основные опции:
- -c, —command — выполнить команду
- -g, —group — установить основную группу пользователя (только для root)
- -G —supp-group — дополнительные группы пользователя (только для root)
- -, -l, —login — режим входа, будут очищены и инициализированы с учетом нового пользователя все переменные окружения, а также изменен домашний каталог
- -p, —preserve-environment — сохранить переменные окружения
- -s, —shell — задать оболочку для входа
- —version — отобразить версию программы.
Теперь немного поэкспериментируем, чтобы понять как работает команда su linux.
Сначала выполним su без параметров, но для начала создадим переменную окружения, чтобы проверить как с ними обходится эта команда:
Теперь смотрим что получилось:
Из этих команд мы видим, что теперь мы пользователь root, но домашней директорией считается директория нашего предыдущего пользователя и наша переменная не сохранилась также изменилась переменная PATH, теперь там добавлен путь /sbin.
И повторим ту же комбинацию:
Та же ситуация, только на этот раз изменена ко всему еще и домашняя директория на директорию root. Но мы можем сохранить наши переменные окружения, если это нужно, для этого есть опция -p:
Как видите, наша переменная осталась. Вы также можете переключится на любого другого пользователя. Например:
su - test
Более подробно о команде su вы можете почитать в отдельной статье. Получение прав суперпользователя таким способом используется во многих дистрибутивах, например, Debian, OpenSUSE, ArchLInux, Gentoo и т д. Но в Ubuntu, как дистрибутиве для начинающих вход под пользователем root отключен. Это сделано потому, что это тоже не очень безопасно, вы можете забыть что выполняете команду от root и что-то натворить в системе. Поэтому переходим к следующей программе.
Получение прав root без переключения
Чтобы реализовать максимально безопасный интерфейс для работы с правами суперпользователя в Linux была разработана команда sudo. Давайте рассмотрим что такое sudo. Эта команда пишется перед каждой командой, которую нужно выполнить от имени суперпользователя, и для ее выполнения нужно ввести пароль уже не root, а всего лишь вашего пользователя. Так же, как и в предыдущей, в этой утилиты есть свои опции. Сначала рассмотрим синтаксис:
- -b — выполнять запускаемую утилиту в фоне
- -E — сохранить переменные окружения
- -g — запустить команду от группы
- -H — использовать домашний каталог
- -l — показать список полномочий в sudo для текущего пользователя
- -r — использовать для команды роль SELinux
- -s — использовать оболочку
- -u — запустить команду от имени пользователя, если не задано используется root
- -i — не выполнять команду, а войти в оболочку, эквивалентно su —
Вы можете выполнить те же эксперименты, только для этой команды, чтобы понять как использовать команду sudo. Например:
sudo -u test ls
Использование sudo — это рекомендованный способ выполнять команды от имени суперпользователя в Linux. Так вы не забудете с чем имеете дело и меньше всего рискуете повредить систему. Более подробно о команде sudo читайте здесь. Но остался еще один нерешенный вопрос — как быть с графическими утилитами? Ведь команда sudo их не запускает, а запускать графическую оболочку от имени root небезопасно. Это мы и рассмотрим далее.
Графически приложения от имени суперпользователя
Для запуска графических приложений от имени суперпользователя существуют специальные утилиты. Они сохраняют все необходимые переменные окружения и полномочия. В KDE это команда kdesu, а в Gnome команда gksu.
Просто наберите gksu или kdesu, а затем нужную команду:
Эта команда запустит файловый менеджер KDE с правами суперпользователя. В Gnome это будет выглядеть вот так:
Программа запросит пароль, уже в графическом окне, а потом откроется файловый менеджер.
Выводы
Вот и все. Теперь вы знаете как получить права суперпользователя в Linux, знаете как использовать команду sudo и в чем разница sudo или su. Теперь программы, требующие дополнительных привилегий в системе, не вызовут у вас проблем. Если остались вопросы, пишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Разделение привилегий — основа безопасности в операционной системе Linux. Обычные пользователи работают с ограниченными привилегиями и могут влиять только на собственную рабочую среду, но не на операционную систему в целом. Пользователь с именем root
имеет привилегии суперпользователя — это административная учетная запись без ограничений.
Использование su для получения прав root
Пароль: здесь-пароль-root
Обратите внимание, что мы не указываем имя пользователя — в этом случае подразумевается, что нужно запустить новый сеанс root
. Но можно запустить сеанс от любого пользователя.
su -l pavel
Пароль: здесь-пароль-pavel
Справка по команде su
.
Использование: su [параметры] [-] [<пользователь> [<аргумент>...]] Change the effective user ID and group ID to that of <user>. A mere - implies -l. If <user> is not given, root is assumed. Параметры: -m, -p, --preserve-environment do not reset environment variables -w, --whitelist-environment <list> don't reset specified variables -g, --group <group> указать первичную группу -G, --supp-group <group> specify a supplemental group -, -l, --login make the shell a login shell -c, --command <command> pass a single command to the shell with -c --session-command <command> pass a single command to the shell with -c and do not create a new session -f, --fast передать -f командной оболочке (для csh или tcsh) -s, --shell <shell> run <shell> if /etc/shells allows it -P, --pty create a new pseudo-terminal -h, --help показать эту справку -V, --version показать версию Для более детальной информации смотрите su(1).
В Ubuntu для суперпользователя пароль не задан, поэтому нельзя запустить сеанс root
. Как правильно ввести пароль, которого нет? Чтобы обойти это ограничение, достаточно добавить sudo
перед su
.
sergey [sudo] пароль для sergey: здесь-пароль-sergey
Хотя в Ubuntu нет пароля для root
, его всегда можно установить. И запускать сеанс root
с помощью su
, без sudo
. Но делать это не рекомендуется без веских причин.
[sudo] пароль для sergey: здесь-пароль-sergey Новый пароль: новый-пароль-root Повторите ввод нового пароля: новый-пароль-root passwd: пароль успешно обновлён
Обратите внимание, что мы не указываем имя пользователя для passwd
— в этом случае подразумевается root
. Чтобы вернуть Ubuntu в исходное состояние, нужно заблокировать учетную запись root
.
sudo passwd -l root
Использование sudo для запуска команд от root
sudo apt update
[sudo] пароль для sergey: здесь-пароль-sergey
Выполнение команды apt с правами root
Иногда нужно выполнить несколько команд с правами root
и вводить каждый раз sudo
(и периодически — пароль) может быть неудобно. Тогда можно начать сеанс root
, выполнить все команды, после чего завершить сеанс.
sergey [sudo] пароль для sergey: здесь-пароль-sergey
Справка по команде sudo
.
sudo — выполнение команд от имени другого пользователя usage: sudo -h | -K | -k | -V usage: sudo -v [-ABknS] [-g group] [-h host] [-p prompt] [-u user] usage: sudo -l [-ABknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command] usage: sudo [-ABbEHknPS] [-r role] [-t type] [-C num] [-D directory] [-g group] [-h host] [-p prompt] [-R directory] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>] usage: sudo -e [-ABknS] [-r role] [-t type] [-C num] [-D directory] [-g group] [-h host] [-p prompt] [-R directory] [-T timeout] [-u user] file ... Параметры: -A, --askpass использовать вспомогательную программу для ввода пароля -b, --background выполнить команду в фоновом режиме -B, --bell ring bell when prompting -C, --close-from=num закрыть все дескрипторы файлов >= num -D, --chdir=directory change the working directory before running command -E, --preserve-env сохранить пользовательское окружение при выполнении команды --preserve-env=list preserve specific environment variables -e, --edit редактировать файлы вместо выполнения команды -g, --group=group выполнить команду от имени или ID указанной группы -H, --set-home установить для переменной HOME домашний каталог указанного пользователя -h, --help показать справку и выйти -h, --host=host выполнить команду на узле (если поддерживается модулем) -i, --login запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду -K, --remove-timestamp полностью удалить файл timestamp -k, --reset-timestamp объявить недействительным файл timestamp -l, --list показать список прав пользователя или проверить заданную команду; в длинном формате используется дважды -n, --non-interactive автономный режим без не вывода запросов пользователю -P, --preserve-groups сохранить вектор группы вместо установки целевой группы -p, --prompt=prompt использовать указанный запрос пароля -R, --chroot=directory change the root directory before running command -r, --role=role создать контекст безопасности SELinux с указанной ролью -S, --stdin читать пароль из стандартного ввода -s, --shell запустить оболочку от имени указанного пользователя; также можно задать команду -t, --type=type создать контекст безопасности SELinux указанного типа -T, --command-timeout=timeout terminate command after the specified time limit -U, --other-user=user в режиме списка показывать права пользователя -u, --user=user выполнить команду (или редактировать файл) от имени или ID указанного пользователя -V, --version показать сведения о версии и выйти -v, --validate обновить временную метку пользователя без выполнения команды -- прекратить обработку аргументов командной строки
Присвоение пользователю привилегий sudo
В Ubuntu группа sudo
имеет полные привилегии администратора. Добавляя пользователя в эту группу, мы предоставляем ему такие же привилегии.
Проверка прав при использовании sudo
Проверить, какие права есть у пользователя при использовании команды sudo
, можно с помощью опции -l
.
sudo -l -U evgeniy
Matching Defaults entries for evgeniy on ubuntu-server:
env_reset, mail_badpass, secure_path=.....
User evgeniy may run the following commands on ubuntu-server:
(ALL : ALL) ALL
Также можно узнать, может ли пользователь с помощью sudo
выполнить ту или иную команду. Если команда запрещена, то ничего не будет выведено. Если команда разрешена, то будет выведен полный путь до файла.
sudo -l -U evgeniy passwd # команда разрешена /usr/bin/passwd sudo -l -U vasiliy passwd # команда запрещена
Файл конфигурации /etc/sudoers для sudo
Команда sudo
настраивается с помощью файла /etc/sudoers
. Редактировать это файл можно только с помощью команды visudo
, которая перед сохранением проверяет синтаксис файла. Обычно visudo
открывает файл /etc/sudoers
в текстовом редакторе vi
. Однако в Ubuntu команда visudo
настроена на использование текстового редактора nano
.
# Список специальных директив для установки опций, которые применяются ко всем пользователям Defaults env_reset # сбрасывать переменные окружения при переключении пользователя Defaults mail_badpass # отправлять информацию о неправильно введенном пароле по почте # этот путь будет использовать команда sudo для поиска команды, которую надо выполнить Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" # для запуска команды sudo будет использовать psuedo-pty для большей безопасности Defaults use_pty # Определение правил для конкретного пользователя, в данном случае root root ALL=(ALL:ALL) ALL %admin ALL=(ALL) ALL %sudo ALL=(ALL:ALL) ALL # Данная директория позволяет вынести часть директив в другие файлы. Это # полезно, к примеру, чтобы вынести правила конкретного пользователя. @includedir /etc/sudoers.d
Строки по умолчанию Defaults
Первая строка Defaults env_reset
сбрасывает среду терминала для удаления переменных пользователя. Эта мера безопасности используется для сброса потенциально опасных переменных среды в сеансе sudo
.
Вторая строка, Defaults mail_badpass
, предписывает системе отправлять уведомления о неудачных попытках ввода пароля sudo
для настроенного пользователя. По умолчанию это учетная запись root
.
Бывает, что злоумышленники пытаются запускать вредоносную программу с помощью sudo
, которая разветвит фоновый процесс и он остается активным на терминале пользователя, даже после того как основная программа завершила свое выполнение. Чтобы избежать этого, можно настроить sudo
на запуск команд только с помощью psuedo-pty
с использованием параметра use_pty
.
Строки пользовательских привилегий
Пятая строка файла конфигурации определяет права для пользователя root
. Давайте посмотрим, что означают различные поля.
ALL=(ALL:ALL) ALL # Поле показывает имя пользователя, для которого составлено это правило root =(ALL:ALL) ALL # Первое ALL означает, что данное правило применяется ко всем хостам root ALL=(:ALL) ALL # Второе ALL разрешает root запускать команды от лица любого пользователя root ALL=(ALL:) ALL # Третье ALL разрешает root запускать команды от лица любой группы root ALL=(ALL:ALL) # Последнее ALL разрешает пользователю root запускать любые команды
Это означает, что пользователь root
с помощью sudo
может выполнять любые команды от любого пользователя или группы после ввода пароля.
Строки привилегий для групп
Строка @includedir /etc/sudoers.d
Данная строка означает, что файлы в каталоге /etc/sudoers.d
также рассматриваются как файлы конфигурации и применяются. В основном это нужно, чтобы приложения могли изменять привилегии sudo
после установки. Файлы в этом каталоге следуют тем же правилам, что и сам файл /etc/sudoers
. И редактировать эти файлы следует только с помощью команды visudo
.
sudo visudo -f /etc/sudoers.d/file-to-edit
Настройка персонализированных правил
Мы познакомились с общим синтаксисом файла, а теперь попробуем создать новые правила.
Создание псевдонимов
Файл /etc/sudoers
можно организовать более эффективно, группируя элементы с помощью разнообразных псевдонимов.
# Псевдонимы пользователей для группировки пользователей
User_Alias ADMIN_USERS = evgeniy, sergey
User_Alias WEBDEV_USERS = andrey, pavel, artem
User_Alias LIMITED_USERS = ALL, !ADMIN_USERS, !WEBDEV_USERS
# Псевдонимы команд для группировки команд
Cmnd_Alias REBOOT_COMMANDS = /sbin/reboot
Cmnd_Alias POWER_COMMANDS = /sbin/shutdown, /sbin/halt
Cmnd_Alias ADMIN_COMMANDS = /usr/sbin/passwd, /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, /usr/sbin/visudo
Cmnd_Alias PRINT_COMMANDS = /usr/sbin/lpc, /usr/sbin/lprm
# Псевдонимы запуска от имени пользователя или группы
Runas_Alias ADMIN_RUNAS = %sudo
Runas_Alias APACHE_RUNAS = www-data, apache
Теперь, имея все необходимые псевдонимы, можно легко задавать — какие пользователи какие команды могут запускать с помощью sudo
. От имени кого они будут запускать эти команды и нужно ли при этом вводить пароль.
[список пользователей] [список хостов] = [список «запуск от имени»] [PASSWD:NOPASSWD:NOEXEC:] [список команд]
ADMIN_USERS ALL = (ADMIN_RUNAS) NOPASSWD:ADMIN_COMMANDS, PASSWD:POWER_COMMANDS WEBDEV_USERS ALL = (ADMIN_RUNAS) PASSWD:REBOOT_COMMANDS ALL ALL = (ALL) NOPASSWD:PRINT_COMMANDS
Если не указать пользователя или группу «запуска от имени», команда sudo
по умолчанию использует пользователя root
.
ADMIN_USERS ALL = NOPASSWD:ADMIN_COMMANDS, PASSWD:POWER_COMMANDS WEBDEV_USERS ALL = PASSWD:REBOOT_COMMANDS
Необходимо помнить, что в случае конфликта правил более поздние правила имеют приоритет перед более ранними.
Прочая информация по команде sudo
Если задать в файле конфигурации пользователя или группу, от имени которых выполняются команды, можно выполнять команды от их имени.
sudo -g run-as-group command
Для удобства sudo
сохраняет данные аутентификации в течение определенного количества времени на одном терминале. Это означает, что не нужно будет вводить пароль снова, пока это время не истечет. В Ubuntu по умолчанию это 15 минут — изменить это можно, если добавить следующую строку в файл конфигурации.
Defaults timestamp_timeout=60
Если указать ноль — пароль будет запрашиваться каждый раз при использовании sudo
. Если указать отрицательное значение — пароль не будет запрашиваться до следующей перезагрузки системы.
Команда sudo -k
позволяет сбросить таймер сохранения данных аутентификации. То есть, после выполнения команды с использованием sudo
, выполнение команды sudo -k
удалит данные аутентификации.
Команда sudo -v
запросит пароль и сохранит данные аутентификации для последующего использования sudo
без ввода пароля. Данные аутентификации сохраняются на то кол-во минут, которое указано в файле конфигурации.
Поиск:
Linux • Ubuntu • Команда • Настройка • Пользователь • Права доступа • su • sudo • root
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Последние версии Ubuntu по умолчанию не имеют root-пользователя со специально зашифрованным паролем; поэтому была создана функциональность под названием «sudo», которую вы можете использовать для выполнения различных административных операций.
Вы можете либо временно стать пользователем root, либо указать пароль с помощью команды sudo, которая помогает сохранить ответственность за все действия пользователя как администратора. По умолчанию первый пользователь, созданный при установке Ubuntu, получает права sudo. Ubuntu дает ему полные привилегии root, и он добавляется в список sudoers в файле /etc/sudoers. Важно отметить, что вы должны быть авторизованным sudoer, чтобы выполнять все операции с пользователем root, описанные в этой статье.
В этой статье мы расскажем, как стать пользователем root в командной строке Ubuntu. Это поможет вам в выполнении всех операций по установке, удалению, настройке, а также конфигурированию системы. Мы будем использовать командную строку Ubuntu, Терминал, чтобы объяснить, как стать и как изменить пароль для пользователя root. Поэтому вам необходимо открыть приложение Terminal либо через системный Dash, либо с помощью сочетания клавиш Ctrl+Alt+T.
Как стать пользователем root?
Откройте терминал Ubuntu и введите следующую команду:
Эта команда попросит систему зарегистрировать вас как суперпользователя.
Система попросит вас ввести пароль для root. Введите пароль и нажмите Enter.
В идеале вы должны увидеть знак «#» перед командной строкой. Это означает, что вы вошли в систему под именем root.
Если при вводе пароля для root вы получите следующее сообщение о сбое аутентификации, это означает, что учетная запись root в данный момент заблокирована.
Чтобы стать пользователем root из непривилегированной учетной записи (учетной записи обычного пользователя), когда пароль root не установлен, используйте эту команду:
Введите пароль вашего пользователя Ubuntu, когда он будет запрошен. Только пользователи Ubuntu, входящие в группу sudo, могут стать пользователем root таким образом. Пользователь, который создается во время установки Ubuntu, по умолчанию является членом группы sudo.
Теперь, когда вы вошли в систему как root, вы можете выполнять все административные операции в Ubuntu.
Поясним это на примере.
Системный файл упоминается как недоступный для записи, потому что неавторизованный пользователь не может вносить какие-либо изменения в его конфигурацию.
Вы можете редактировать его, только если вы вошли в систему под именем root или если вы используете команду sudo для временного получения привилегий root.
Поскольку сейчас мы вошли в систему под именем root, мы сможем увидеть этот файл следующим образом:
Мы можем внести любые изменения в файл и сохранить их, нажав Ctrl+X.
Примечание: Очень важно сохранять осторожность при внесении любых важных изменений в системные файлы при входе в систему от имени root. Любое излишнее изменение системных файлов может испортить все настройки системы.
Вы можете выйти из командной строки root и снова стать обычным пользователем, используя команду exit следующим образом:
Получение временного доступа root с помощью команды sudo
Вместо того чтобы входить в командную строку как root и получать командную строку # (пользователь root), вы можете использовать команду sudo вместе с другими командами, чтобы временно стать root.
Это особенно полезно, поскольку любой авторизованный пользователь (тот, который добавлен в список sudoers) может ввести свой пароль и временно получить права root для выполнения нескольких команд. Еще одним преимуществом использования этой команды является то, что вы можете выполнять задачи, требующие привилегий root, даже когда учетная запись root находится в заблокированном состоянии.
Разблокировка/блокировка учетной записи root
Если при входе в систему от имени root вы получаете следующее сообщение, то, скорее всего, учетная запись root заблокирована. В большинстве систем Ubuntu эта учетная запись заблокирована по умолчанию.
Однако вы можете разблокировать ее, выполнив следующую команду sudo:
Система попросит вас дважды ввести новый пароль UNIX. После этого она обновит пароль root, и учетная запись будет разблокирована.
После того как вы закончите выполнять операции с root, вы можете снова заблокировать учетную запись root, введя следующую команду:
Как изменить пароль root (альтернативный подход)?
Помимо описанного выше способа смены пароля root, вы можете воспользоваться следующим альтернативным методом:
Система предложит вам ввести текущий пароль sudo. Введите пароль и нажмите Enter.
Теперь, когда вы вошли в систему под именем root, вы можете изменить пароль для текущего пользователя (root), используя команду passwd следующим образом:
После работы с этой статьей вы теперь можете стать пользователем root в командной строке Ubuntu. Теперь вы можете выполнять все операции, на которые имеет право только очень привилегированный пользователь.
Использование команды sudo в Linux
sudo
s
u
do
root
sudo
root
sudo
root
sudo
root
Настройки sudo довольно несложные, и тем не менее, позволяют
реализовать гибкую систему распределения полномочий отдельных пользователей в многопользовательской среде.
Командная строка sudo может быть использована в следующих форматах:
]
Параметры командной строки:
-A, —askpass — использовать вспомогательную программу для ввода пароля
-b, —background — выполнить команду в фоновом режиме
-C, —close-from=num — закрыть все дескрипторы файлов >= num
-E, —preserve-env — сохранить пользовательское окружение при выполнении команды
-e, —edit — редактировать файлы вместо выполнения команды
-g, —group=group — выполнить команду от имени или ID указанной группы
-H, —set-home — установить для переменной HOME домашний каталог указанного пользователя
-h, —help — показать справку и выйти
-h, —host=host — выполнить команду на узле (если поддерживается модулем)
-i, —login — запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду
-K, —remove-timestamp — полностью удалить файл с timestamp
-k, —reset-timestamp — объявить недействительным файл timestamp
-l, —list — показать список прав пользователя или проверить заданную команду; в длинном формате используется дважды
-n, —non-interactive — автономный режим без вывода запросов пользователю
-P, —preserve-groups — сохранить вектор группы вместо установки целевой группы
-p, —prompt=prompt — использовать указанный запрос пароля
-S, —stdin — читать пароль из стандартного ввода
-s, —shell — запустить оболочку от имени указанного пользователя; также можно задать команду
-V, —version — показать сведения о версии и выйти
-v, —validate — обновить временную метку пользователя без выполнения команды
— — прекратить обработку аргументов командной строки
sudo –l — отобразить список команд, доступных для выполнения текущему пользователю. Кроме списка команд отображаются параметры среды, которые будут применяться при их выполнении.
sudo –ll — отобразить список команд, доступных для выполнения текущему пользователю в длинном (расширенном) формате.
В данном формате вместо краткого синтаксиса для списка разрешенных команд в виде (ALL : ALL) ALL отображается подробное
описание прав пользователя:
sudo lshw -C network — отобразить информацию о сетевом оборудовании с правами суперпользователя root
sudo ipmitool sensor — выполнить команду ipmitool sensor с правами root .
sudo su — выполнить команду su, т.е. создать сеанс суперпользователя root
sudo -i — запустить командную оболочку с правами суперпользователя root. Для выполнения данной команды пользователь должен иметь право на выполнение программы оболочки в среде sudo, например — /bin/bash
sudo ls /usr/local/protected — получить список файлов каталога, доступного только root
sudo -u www vi ~www/htdocs/index.html — редактировать файл ~www/htdocs/index.html от имени пользователя www
sudo -g adm view /var/log/syslog — просмотреть файл системного журнала, доступного только суперпользователю root и членам группы adm
sudo -E /usr/bin/firefox — запустить браузер firefox от имени суперпользователя root, сохранив параметры среды текущего пользователя. Возможность выполнения команд с сохранением среды пользователя должна быть разрешена параметром SETENV в настройках файла
конфигурации sudo
Файл конфигурации /etc/sudoers
Настройки sudo определяется содержимым файла /etc/sudoers. Поскольку ошибочные данные в данном файле могут привести к серьезным проблемам доступа к ресурсам системы, рекомендуется выполнять его изменение с помощью специального редактора sudoedit ( в некоторых дистрибутивах — visudo ), который поддерживает функции проверки синтаксиса и значительно снижает риск создания неработоспособной конфигурации sudo.
Содержимое файла /etc/sudoers определяет имена пользователей и групп, перечень выполняемых программ, необходимость введения паролей, и некоторые другие настройки, связанные с формированием переменных окружения при смене пользователя. Кроме данного файла, настройки sudo могут определяться содержимым файлов из каталога /etc/sudoers.d , что позволяет структурировать систему предоставления прав на использование sudo в виде набора файлов с осмысленными именами, что полезно при большом количестве пользователей и сложной системе разграничения прав. Имена файлов конфигураций в каталоге /etc/sudoers.d могут быть любыми, но их содержимое должно полностью соответствовать формату файла /etc/sudoers.
Синтаксис настроек в файле /etc/sudoers позволяет использовать специальные псевдонимы ( Alias-ы ), с помощью которых значительно упрощается как настройка, так и восприятие конфигурационной информации sudo.
В файле конфигурации /etc/sudoers возможно использование четырех разновидностей псевдонимов:
Runas_Alias — списки пользователей, от имени которых может быть задано выполнение команд через sudo.
Host_Alias — списки узлов, с которых выполняется подключение к системе.
Cmnd_Alias — списки команд, использующиеся в настройках, выполняемых директивами файла /etc/sudoers
Host_Alias MAILSERVERS = 192.168.0.100, smtp2 — определяет группу из двух компьютеров с указанными IP и именем. Возможно использование
адресов подсетей.
Аналогичным образом можно создать псевдонимы для различных наборов команд, доступных для выполнения в sudo:
## Группа команд, для работы в сети, псевдоним Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
# Группа команд для управления установкой и удалением программ, псевдоним SOFTWARE
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
# Группа команд для управления системными службами, псевдоним SERVICES
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
Аналогичным образом можно создать псевдонимы для групп команд, выполнение которых делегируется одиночным или объединенных псевдонимами пользователей.
Основная часть настроек в файле /etc/sudoers задает правила, определяющие, какие пользователи, каких компьютеров, какие команды могут выполнять. Формат записей:
MACHINE — имена или псевдонимы компьютеров
COMMANDS — секция команд, включающая имена или псевдонимы команд и
дополнительные параметры.
Обычно, в файле /etc/sudoers присутствует директива, разрешающая выполнение пользователю root любых команд при любом подключении к системе:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
sudo
user
При данной настройке, у пользователя будет запрашиваться пароль ( его личный, а не пароль суперпользователя root ). При необходимости, можно настроить секцию команд таким образом, чтобы пароль не запрашивался, с использованием параметра NOPASSWD:
Использование псевдонимов позволяет уменьшить необходимое число записей для определения прав пользователей, которые могут подключаться к системе с разных компьютеров и входить в разные группы:
Для существующих в системе групп пользователей можно также разрешать выполнение отдельных команд или групп команд:
%operators ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom — разрешить членам группы “operators” монтирование и размонтирование указанных устройств.
Довольно часто возникает необходимость исключения разрешения на выполнение отдельных команд из списка, объединенных псевдонимом . В этом случае, перед именем команды или псевдонима ставится восклицательный знак – !
Кроме настроек доступа, в файле /etc/sudoers присутствуют директивы Defaults, определяющие некоторые
настройки путей исполняемых файлов и создание переменных окружения при выполнении команд:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults env_reset
Defaults env_keep = «COLOS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS»
Defaults env_keep += «LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES»
Defaults env_keep += «LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE»
Defaults env_keep += «LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY»
По умолчанию, если интервал выполнения команд с использованием sudo, не превышает 5 минут, то повторный ввод пароля не требуется.
Однако, это значение можно изменить, добавив значение timestamp_timeout в минутах:
В данном случае, если команда sudo будет выполняться не позже, чем через 1 минуту после ввода пароля для предыдущей команды, то повторно пароль запрашиваться не будет.
Если значение “timestamp_timeout” сделать равным нулю, то пароль будет запрашиваться при каждом запуске sudo, если сделать отрицательным ( -1 ), — то повторный ввод пароля не будет запрашиваться никогда.
Для исключения возможности выполнения sudo-команд при подключении через ssh без авторизации, по умолчанию, должна использоваться команда “ssh –t “:
# Disable «ssh hostname sudo «, because it will show the password in clear.
# You have to run «ssh -t hostname sudo
«.
Defaults requiretty
sudo
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
Подробную справку по использовании sudo можно получить с помощью команд:
Сайт проекта sudo ( на английском языке )