Linux отличие sudo от su

Обновлено: 04.07.2024

Стоит. sudo логирует ваши действия. На частые (и относительно безопасные) вещи можно и без пароля запуск настроить.

А вообще эта тема уже миллион раз обсуждалась.

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code. Что из ваших ссылок понял я
1. есть много юзеров, которые часто отвечают на этом форуме и которые поддерживают работу от root с помощью su -
2. есть мнение, что нельзя писать user ALL = (ALL) ALL, а я именно так и пишу.
3. sudo в теории ведёт какой то журнал и пишет на мыло админу, но мне никто не писал в убунте и я не понимаю о каком журнале речь.
короче, я просто ничего не понял. Есть файл sudoers, который можно и нужно настраивать, если на компьютере 100500 пользователей. Но если вы один, то есть ли разница?

sudo -i и вперед ;)

Честно, от sudo я вижу пользу на серверах, а на обычном компе с 1 фактическим пользователем… использую "su -". Тем более, что в openSUSE Tumbleweed sudo настроен на targetpw, что многие не любят, так что разницы особой нет. sudo, конечно позволяет настроить безпарольный доступ к определённым командам, а также не требует пароль в течение какого-то там времени. Но не привык.

Логирование. Можно всегда подсмотреть когда что запускал. У меня оно лежит в /var/log/auth.log примерно в таком формате:

Помимо этого у меня с пару десятков пользователей на машине с разными профилями. И я всеми пользуюсь через sudo. Многими без пароля.
firefox там запустить или ещё какую софтину. У каждого firefox'a там свой профиль, свои плагины. А в некоторых случаях .mozilla полностью стирается после окончания сессии. Отдельный браузер для банка. Отдельный браузер для проверенных ресурсов. Отдельный для активного гугления. И т.д. В идеале ещё отдельную X сессию нужно хотя бы для банка, но что-то руки всё никак не дойдут.

В скриптах удобно использовать. Например для подключения usb tethering'a вполне себе можно заскриптовать все через sudo без пароля.

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

Если вы - пользователь 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 используется команда вида:

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

sudo -i

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

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

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

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

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

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

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

User Accounts

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

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

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

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

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

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

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

gksu

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

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

su против sudo

root или суперпользователь — это специальный аккаунт и группа пользователей в Unix-подобных системах с идентификатором, владелец которого имеет право на выполнение всех без исключения операций.

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

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

Команда su

Если использовать данную команду без [имя_пользователя] , то она переключит вас на учетную запись суперпользователя (root).

Примечание: В большинстве случаев, команда su (с дефисом и без) используется только для переключения на суперпользователя (root), хотя она может переключить вас и на другого ( [имя_пользователя] ) пользователя.



Как работает команда su?

Чтобы вызвать оболочку другого пользователя с окружением и рабочим каталогом текущего пользователя, используйте команду su (без дефиса). Например, если вы хотите работать от имени пользователя ravesli, выполните:

Затем введите пароль для учетной записи ravesli и нажмите Enter.

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



Как работает команда su –?

Чтобы перейти к другому пользователю и при этом изменить и пользовательское окружение, используйте команду su - :


Примечание: Еще один способ, позволяющий получить доступ к аккаунту другого пользователя вместе с полным объемом переменных его пользовательского окружения, это задействовать команду su -l (или --login ) [имя_пользователя] .

Команда sudo

Например, все исполняемые и административные задачи требуют наличия максимальных разрешений (root). В таких случаях рекомендуется использовать sudo:

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

Добавление пользователя в группу sudoers

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

usermod -aG sudo [имя_пользователя]

Например, чтобы добавить в группу sudoers учетную запись ravesli, вы должны ввести:

sudo usermod -aG sudo ravesli

Чтобы просмотреть список учетных записей, принадлежащих группе sudoers, выполните:

sudo getent group sudo

Вывод отобразит учетную запись, добавленную на предыдущем шаге:


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

user ALL=(ALL:ALL) ALL


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

su и sudo в разных дистрибутивах Linux

su — это традиционный (более старый) способ переключения на учетную запись root (и получение повышенных прав) в Linux.

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

При установке, например, дистрибутива Linux Mint, вы автоматически создаете пользователя, помеченного как член группы sudoers. При этом настройки учетной записи root не предполагается. Чтобы включить пользователя root, вам необходимо активировать его вручную.

С другой стороны, другие дистрибутивы Linux, такие как Fedora, при установке создают обе учетные записи: обычного пользователя и суперпользователя (root).

Включение учетной записи root


Чтобы активировать пользователя root, выполните команду passwd :

sudo passwd root

Затем установите пароль и нажмите Enter. В результате система должна уведомить вас, что пароль пользователя root был успешно обновлен:


Убеждаемся, что пользователь root активирован, переключившись на него с помощью команды su - :



Заключение

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

image

Если вы пользователь 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 запоминает пароль в течение пятнадцати минут и не будет запрашивать пароль снова, пока не истечет пятнадцать минут.

image

Это ключевое различие между 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 повышает безопасность и предотвращает случайные общесистемные изменения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Графические версии Су

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

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

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

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

Читайте также: