В чем разница между Sudo и Su в Linux?

Если вы пользователь Linux, вы, вероятно, видели ссылки как на sudo, так и на su. Статьи здесь на How-To Geek и в других местах инструктируют пользователей Ubuntu использовать sudo, а пользователей других дистрибутивов Linux использовать su, но в чем разница?

Sudo и su - два разных способа получить привилегии root. Каждый из них работает по-своему, и разные дистрибутивы Linux по умолчанию используют разные конфигурации.

Корневой пользователь

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

Чтобы сделать что-то, для чего требуются эти разрешения, вам необходимо получить их с помощью su или sudo.

Су против Судо

Команда su переключается на суперпользователя или пользователя root, если вы выполняете ее без дополнительных параметров. Вам нужно будет ввести пароль учетной записи root. Однако это не все, что делает команда su - вы можете использовать ее для переключения на любую учетную запись пользователя. Если вы выполните команду su bob , вам будет предложено ввести пароль Боба, и оболочка переключится на учетную запись пользователя Боба.

Когда вы закончите запускать команды в корневой оболочке, вы должны ввести exit, чтобы покинуть корневую оболочку и вернуться в режим с ограниченными привилегиями.

Sudo запускает одну команду с привилегиями root. Когда вы выполняете команду sudo , система запрашивает у вас пароль вашей текущей учетной записи перед запуском команды от имени пользователя root. По умолчанию Ubuntu запоминает пароль в течение пятнадцати минут и не запрашивает пароль снова, пока не истекут пятнадцать минут.

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

Ubuntu против других дистрибутивов Linux

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

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

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

Дистрибутивы на основе Ubuntu, включая Linux Mint, также по умолчанию используют sudo вместо su.

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

Linux гибок, поэтому не нужно много работать, чтобы заставить su работать так же, как sudo - или наоборот.

Чтобы выполнить одну команду от имени пользователя root с su, выполните следующую команду:

su -c 'команда'

Это похоже на запуск команды с sudo, но вам понадобится пароль учетной записи root вместо пароля вашей текущей учетной записи.

Чтобы получить полную интерактивную корневую оболочку с помощью sudo, запустите sudo –i.

Вам нужно будет указать пароль вашей текущей учетной записи вместо пароля учетной записи root.

Включение корневого пользователя в Ubuntu

Чтобы включить учетную запись пользователя root в Ubuntu, используйте следующую команду, чтобы установить для нее пароль. Имейте в виду, что Ubuntu не рекомендует этого.

sudo пароль root

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

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

Только учетные записи администратора в Ubuntu могут запускать команды с sudo. Вы можете изменить тип учетной записи пользователя в окне конфигурации учетных записей пользователей.

Ubuntu автоматически назначает учетную запись пользователя, созданную во время установки, учетной записью администратора.

Если вы используете другой дистрибутив Linux, вы можете предоставить пользователю разрешение на использование sudo, выполнив команду visudo с правами root (так что сначала запустите su или используйте su -c ).

Добавьте в файл следующую строку, заменив user именем учетной записи пользователя:

пользователь ВСЕ = (ВСЕ: ВСЕ) ВСЕ

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

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

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

gksu nautilus

У команды gksu есть еще несколько хитростей - она ​​сохраняет текущие настройки рабочего стола, поэтому графические программы не будут выглядеть неуместно, когда вы запускаете их от имени другого пользователя. Такие программы, как gksu, являются предпочтительным способом запуска графических приложений с привилегиями root.

Gksu использует бэкэнд на основе su или sudo, в зависимости от используемого вами дистрибутива Linux.

Теперь вы должны быть готовы встретить как su, так и sudo! Вы столкнетесь с обоими, если используете разные дистрибутивы Linux.