Главная» Блоги» Кабушка Надежда Васильевна» SU и SUDO: когда и как использовать

SU и SUDO: когда и как использовать

На занятиях часто сталкиваюсь с ситуацией, когда даже администраторы, имеющие опыт работы с Linux, путают команды su и sudo, недопонимают их особенности и сферы применения. Иногда и вовсе полагают, будто это одно и то же.

 
Давайте разберемся.
Для начала – зачем они вообще нужны.
 
Множество операций в Linux (установка ПО и оборудования, сетевые настройки, конфигурация служб, доступ к системным каталогам) можно выполнить только с полномочиями всемогущего root-а. Посему начинающие сисадмины частенько только под ним и работают. Плохая привычка.  В каждый момент времени из вашей консоли можно целиком удалить систему, не говоря уж про ошибки по мелочи. Иногда трудноустранимые ошибки, а для новичка — и вовсе катастрофические.
 
Более безопасной практикой считается работа с полномочиями обычного пользователя, а при необходимости совершить некую системную операцию — получение полномочий root-а на время. Опытные инженеры именно так и делают (опытные тоже совершают ошибки и, как говорила преподаватель в институте, «садятся на клавиатуру» - подразумевая любое бессмысленное и незапланированное движение мыши или нажатие клавиши). Любой может на автомате нажать «Yes», там где надо было «No», от усталости удалить не ту директорию, неловко дернуть мышью, перенеся системный каталог. Опыт не страхует от ошибок, но учит их минимизировать.
 
Например, используя su и sudo.
Начнем со схожести. Обе команды временно дают пользователю чужие полномочия, и чаще всего используются именно для получения прав root-а.
 
Теперь о различиях. С помощью su вы становитесь другим пользователем, не закрывая текущий сеанс работы. И остаетесь с правами этого пользователя, пока специально не вернетесь к своему сеансу. Что очень легко забыть сделать :)
 
Вот как это используется:
1) В данный момент я зарегистрирована в системе под именем nadia, со всеми вытекающими правами. Это можно увидеть в командной строке оболочки (не всегда - зависит от настроек):
nadia@lapt:~$
и в выводе команды whoami:
nadia@lapt:~$ whoami
nadia
 
2) Для выполнения некой операции нужны дополнительные полномочия. И я получаю роль root с помощью команды su <user>, где user — имя пользователя в системе
nadia@lapt:~$ su root
Password:
root@lapt:/home/nadia#
В случае переключения в root, можно использовать su без параметра. Как видите, я не смогу получить новые полномочия, не зная пароль соответствующего пользователя.
 
3) Не вернусь к своему аккаунту и правам, пока специально не завершу сеанс root-а:
root@lapt:/home/nadia# exit
exit
nadia@lapt:~$
 
Итак, все работает, но есть некоторые неудобства:
  • всем пользователям, выполняющим хоть иногда привилегированные задачи, надо знать пароль root-а (кто-то из отдела непременно его запишет и однажды бросит на столе);
  • легко забыть выйти из сеанса, продолжая работать с полными полномочиями там, где в этом нет необходимости;
  • для выполнения любой операции пользователь получает ВСЕ права.
Представьте новичка в отделе, которому надо постепенно выдавать привилегии, дабы ничего не сломал по неопытности. Каким образом? А если он не прошел испытательный срок, после увольнения вся команда запоминает новый пароль root-а. Как и после плановой смены паролей.
 
Служба sudo работает с правами более гибко: можно дать полномочия пользователю или группе на выполнение определенных команд, на определенных узлах. Полномочия работают только в заранее заданных рамках — как прописано в конфигурационном файле. Идея следующая: дать как можно меньше прав, но достаточно для выполнения своей работы.
 
Как использовать sudo, настраивать и избежать распространенных ошибок настройки — во второй серии :) То есть в следующей статье.

Комментарии

ФИО (*): E-mail (*): Текст комментария (*):


Введите символы, изображенные на картинке (*):


Звездочкой (*) отмечены поля, обязательные для заполнения.

Михаил Григорьев, 16.07.2014 10:37
Можно было и покороче написать, например так: Команда su переключает Вас в аккаунт root и требует пароля root, а команда sudo запускает с привилегиями root одну команду - она не переключает Вас в аккаунт суперпользователя и не требует отдельного пароля root.
И еще одна тонкость, в статье про это не написано, а следовало бы. Команду su root можно выполнить только если установлен пароль пользователя root, а по умолчанию в Ubuntu Linux он не установлен и поэтому авторизоваться под root не получиться, вначале нужно выполнить sudo passwd root и установить пароль пользователя root.
И еще, для запуска одной команды от имени root с помощью su можно использовать команду вида: su -c 'command'
Ну и самое главное, не забывайте читать man, там все детально написано про su (man su) ;)
Яндекс.Метрика

raznomashimport.ru vulcan casino как выиграть правильные ставки.