ГлавнаяОперационные системыLinuxРазличия между Su, Sudo Su, Sudo -s и Sudo -i

Различия между Su, Sudo Su, Sudo -s и Sudo -i

Существует много разных способов получить root-сессию в терминале Linux. Это может создать некоторую путаницу, поскольку большинство начинающих пользователей, желающих получить root-права, могут быть не знакомы с тем, как каждая команда может получить root-доступ, чем они отличаются и когда эти различия имеют значение. Здесь мы разберем каждую из множества различных команд, используемых для получения root-доступа в терминале, объясним, как они получают root, когда их использовать, и все, что между ними.

Читайте также: Что такое Doas и как его установить

вс

Команда suзаменяет текущего пользователя root в текущей оболочке.

Linuxsudo Suprompt

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

вс

witchuser">

Это заставит систему переключиться (и, по сути, выйти из системы) текущего пользователя на указанного. Альтернативно, команда suможет получить root-доступ, введя su, не указывая ничего после команды.

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

Внимание: использование su— наименее безопасный способ выполнения корневого действия. Как правило, если вы можете этого избежать, не используйте это.

Читайте также: Полное руководство по командам Apt и Apt-Get

су -c

Эта команда передает другие команды непосредственно пользователю root.

Linuxsudo Suc

Подобно вводу sudoперед командой, su -cзапустит команду от имени пользователя root. Однако вместо того, чтобы просто вводить команду, вам придется взять ее в кавычки.

Это быстрый способ запустить одну команду через терминал с повышенными привилегиями. Это очень полезно, если sudoпо какой-то причине недоступен (он не предустановлен в таких дистрибутивах, как Arch Linux) или не работает корректно из-за повреждения.

Поскольку вы передаете что-то непосредственно пользователю root, если ваш пароль пользователя и пароль root различны, вам придется ввести пароль root для аутентификации.

судо су

Эта команда запрашивает пароль текущего пользователя, а не root.

Linuxsudo Sudosu

По сути, это то же самое, что просто запустить suв оболочке, за исключением одного существенного различия: вместо того, чтобы напрямую говорить системе «переключить пользователей», вы говорите ей запустить suкоманда с правами суперпользователя. При запуске sudo suбудут запущены «.profile»,

су -c

etc/profile», во многом аналогично запуску su(или su root). Если какая-либо команда запускается с sudoперед ней, ей предоставляются права root.

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

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

Читайте также: Как использовать команду Rm в Linux

судо -i

Использование sudo -iпрактически аналогично команде sudo su, за одним исключением: она не взаимодействует напрямую с пользователем root.

судо су024/05/linuxsudo-sudoi.png" alt="Linuxsudo Sudoi">

Как и sudo su, флаг -iпозволяет пользователю получить root-среду без необходимости знать пароль учетной записи root. sudo -iтакже очень похож на использование sudo su: он считывает все файлы среды («.profile» и т. д.) и устанавливает среду внутри оболочки.

От sudo suон отличается тем, что sudo -i— это гораздо более чистый способ получения root-прав и корневой среды без прямого взаимодействия с root-пользователем.

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

Проще говоря: sudo -iпредоставит вам «чистый» root-логин в вашей папке «/root», которая является «домашней» папкой для пользователя root.

Читайте также: Как использовать команду dd в Linux

судо -s

Эта команда вызывает оболочку с вашей переменной $SHELL.

Linux Судо Судош

Переключатель -sдля команды sudoсчитывает переменную $SHELL текущего пользователя, выполняющего команды. Эта команда работает так, как если бы пользователь использовал sudo /bin/bash, если оболочка, из которой он работает, — bash.

В нашем случае sudo -sпредоставил нам интерактивную оболочку fish, поскольку ранее мы установили fish в качестве оболочки по умолчанию, так что это будет так, как если бы мы запускали sudo /usr/bin/fish.

Linuxsudo Shellswitch

Sudo -s— это оболочка в стиле «без входа в систему». В отличие от таких команд, как sudo -iили sudo su, система не будет читать файлы среды. Когда пользователь сообщает оболочке запустить sudo -s, она получает root-права, но н

судо -i

ательскую среду. Ваш дом не будет корневым домом и т. д.

Команды Linuxsudo

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

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

Читайте также: Основные команды Bash для новичков в Linux

Часто задаваемые вопросы

Почему оболочка, с которой я работаю, имеет значение?

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

Например, предположим, что вы используете оболочку fish для своей учетной записи пользователя и сохраняете корневую оболочку в bash. Загрузка пользовательской оболочки с помощью sudo -sдает совершенно другой результат.

Оболочка будет следовать любой конфигурации, установленной в домашней папке root. Если у вас такой штуки нет, то она просто загрузит конфигурацию по умолчанию вместо вашей личной. (В нашем случае это будет «~/.config/fish/config.fish».) В любом случае, лучше оставить все как есть, а не копировать пользовательскую конфигурацию в «/root».

Переключение на оболочку вашей учетной записи при переключении на root следует выполнять только в том случае, если вам необходимо запустить сценарий, кот

судо -s

необходима эта конкретная оболочка.

Может ли доступ к root-правам нанести вред моей системе?

В некоторых случаях да. Если вы не абсолютно уверены, что вам нужен доступ к root для всего в конкретном сеансе терминала, часто лучше просто набрать sudo, а затем команду, если вы хотите получить доступ к root для этой конкретной команды. Например, если ввести sudo apt install vlcв любой версии Linux на базе Debian, операционной системе будет предоставлен доступ к root только для запуска менеджера пакетов APT для установки VLC.

Одно очень важное предостережение относительно запуска sudo -iили любого другого варианта, который мы обсуждали ранее, в отличие от ввода sudoперед каждой командой, которую вы хотите запустить от имени пользователя root, заключается в том, что первый не записывает историю ваших команд в «/var/log/auth.log». Если вы ошиблись, вы не сможете вернуться и проверить, что вы сделали, чтобы исправить это. Вам придется работать с нехваткой памяти, поскольку сеансы root не записываются.

Когда я набираю «sudo» перед командой, какой вариант «sudo su» я запускаю?

Вводя sudoдля выполнения команды (т. е. вы вводите ее в той же строке, что и команду, которую хотите запустить), вы, по сути, запускаете ее под интерактивной корневой оболочкой. Это то же самое, что делает автономная команда sudo -s. Это также очень похоже на запуск команды su -c.

Все скриншоты Мигеля Лейва-Гомеса.

Часто задаваемые вопросы

Почему оболочка, с которой я работаю, имеет значение?

Может ли доступ к root-правам нанести вред моей системе?

Когда я набираю «sudo» перед командой, какой вариант «sudo su» я запускаю?

ПОХОЖИЕ СТАТЬИ

Популярные записи