Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

В чем разница между sudo и su

Оригинал: What`s the Difference Between Sudo & Su?
Автор: Chris Hoffman
Дата публикации: 17 апреля 2012 года
Перевод: А. Кривошей
Дата публикации перевода: 6 февраля 2013 г.

запрос пароля

Если вы - пользователь Linux, вероятно вы слышали как о sudo, так и о su. Обычно в популярных статьях говорится, что пользователи Ubuntu должны использовать sudo, других дистрибутивов - su. Но в чем же разница между этими командами?
Sudo и su - это два различных способа получения привилегий root. Они по разному функционируют и различные дистрибутивы Linux при этом используют разные настройки по умолчанию.

Пользователь Root

Как su, так и sudo используются для запуска команд с привилегиями root. Пользователь root в целом эквивалентен администратору в Windows - он имеет наибольшие права и может делать с системой практически все. Обычные пользователи в Linux имеют намного меньшие возможности - например, они не могут устанавливать программы или записывать в системные директории.
Если нужно сделать что-то, требующее таких прав, вы можете получить их с поомощью su или sudo.

Su vs. Sudo

При выполнении команды su без дополнительных опций она переключает вас в сеанс суперпользователя (или root). Для этого вам необходимо знать пароль root. Это не все, что может делать команда su, на самом деле она может использоваться для переключения в любой пользовательский аккаунт. Наберите su bob, и вам будет предложено ввести пароль пользователя Bob, и оболочка переключится в его аккаунт.
После того, как вы сделаете все, что вам было нужно, вы можете ввести команду exit и снова переключиться в режим обычного пользователя с ограниченными правами.
Sudo запускает с правами root только одну команду. При выполнении команды sudo система запросит у ваш текущий пользовательский пароль, а затем запустит команду на выполнение от имени root. По умолчанию Ubuntu помнит введенный пароль 15 минут, и в течение этого времени при повторном использовании не будет запрашивать его.

sudo

Это ключевое различие между su и sudo. Su переключает вас в аккаунт root и требует пароля root. Sudo запускает с привилегиями root одну команду - она не переключает вас в аккаунт суперпользователя и не требует отдельного пароля root.

Ubuntu vs. другие дистрибутивы Linux

Команда su - это традиционный способ получения привилегий root в Linux. Команда sudo существует уже достаточно давно, однако Ubuntu стал первым дистрибутивом, в котором по умолчанию используется только она. При установке Ubuntu создается стандартный аккаунт root, но его не назначается пароль. Вы не сможете авторизоваться как root, пока не зададите пароль для него.

su

Использование по умолчанию sudo вместо su имеет некоторые преимущства. Пользователям Ubuntu необходимо помнить только один пароль, в то время как пользователям Fedora и других дистрибутивов требуется создавать отдельные аккаунты для root и обычного пользователя, каждый со своим паролем.
Еще одно преимущество - предотвращение нахождения пользователя постоянно в аккаунте root, или постоянно открытого терминала с сессией суперпользователя. Запуск меньшего числа команд от имени root повышает безопасность и предотвращает случайное внесение изменений в системные файлы.
Дистрибутивы на базе Ubuntu, включая Linux Mint, также используют по умолчанию sudo вместо su.

Несколько хитростей

Linux - очень гибкая система, поэтому не составляет большого труда сделать так, чтобы su стала похожей на sudo, и наоборот.
Для запуска одной команды от имени root с помощью su используется команда вида:

$ su -c 'command'

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

$ sudo -i

sudo -i

В данном случае вы можете использовать свой пользовательский пароль.

Активация пользователя root в Ubuntu

Активировать аккаунт root в Ubuntu можно с помощью команды, позволяющей задать пароль для него (помните, что разработчики Ubuntu не рекомендуют делать это):

$ sudo passwd root

Sudo сначала запросит ваш текущий пользовательский пароль, перед тем, как вы сможете задать новый. Вы можете использовать свой новый пароль, чтобы авторизоваться в терминале как root, или для использования с командой su. Однако вы не сможете запустить полное графическое окружение как root - это слишком сильно ослабляет безопасность системы, поэтому многие программы не будут нормально работать.

Активация пользователя root в Ubuntu

Добавление пользователей в файл Sudoers

Только пользователи с администраторскими аккаунтами могут использовать sudo в Ubuntu. Вы можете изменить тип аккаунта в настройках в разделе "User Accounts".

User Accounts

Акканту,созданному при установке системы, Ubuntu автоматически присваивает тип администратора.

присвоение аккаунту привилегий администратора

Если вы используете другой дистрибутив linux, вы можете дать пользователю разрешение на применение sudo с помощью команды visudo, которая требует привилегий root (поэтому сначала выполните команду su, или используйте su -c).
Добавтьте в файл следующую строку, заменив "user" на требуемое имя пользователя:

user    ALL=(ALL:ALL) ALL

Нажмите Ctrl-X и затем Y, чтобы сохранить файл. Вы можете также добавить пользователя в группу, определенную в файле. Пользователи, принадлежащие к группе, определенной в файле, автоматически получают привилегии sudo.

редактирование файла Sudoers

Графические версии Su

Linux также поддерживает графические версии su, которые запрашивают у вас пароль в графическом окружении. Например, с помощью приведенной ниже команды вы можете получить графический запрос пароля и запустить файловый менеджер Nautilus с привилегиями root. Нажмите Alt-F2, чтобы запустить команду в графическом диалоговом окне без терминала.

$ gksu nautilus

gksu

Команда gksu также имеет несколько тузов в рукаве. Она запоминает текущие настройки вашего рабочего стола, поэтому графические программы при их запуске от имени другого пользователя не будут выглядеть неожиданно. Такие программы, как gksu являются предпочтительным способом запуска графических программ с привилегиями root.
Gksu использует su или sudo, в зависимости от вашего дистрибутива.