Чем отличаются команды su, su — и sudo su и когда применяются

Чем отличаются команды su, su - и sudo su
Чем отличаются команды su su — и sudo su и когда применяются

Команды su, su - и sudo su - используются для смены пользователя в Unix-подобных операционных системах (например, Linux). Хотя их функциональность похожа, они имеют различия в поведении и области применения. Рассмотрим их подробно.

1. Команда su

su (substitute user) — это команда, которая используется для смены пользователя. Если не указать имя пользователя, то по умолчанию предполагается смена на пользователя root (суперпользователя).

Пример:

su

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

Использование:

  • Когда это полезно: если вам нужно стать пользователем root, но при этом сохранить переменные окружения текущего пользователя. Это удобно для выполнения отдельных команд, не нарушая окружение.

2. Команда su -

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

Пример:

su -

После ввода пароля root, система откроет новую сессию с полным окружением пользователя root (переменные окружения, такие как $PATH, будут взяты от root).

Основные отличия:

  • Вы получите окружение так, как если бы вы только что вошли в систему под пользователем root.
  • Это полезно для того, чтобы использовать окружение целевого пользователя полностью, включая его пути и конфигурации.

Использование:

  • Когда это полезно: если нужно полностью переключиться на пользователя root (или любого другого пользователя) и воспользоваться его средой окружения для работы. Например, когда вы хотите запустить программу, которая зависит от переменных окружения пользователя root.

3. Команда sudo su -

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

Пример:

sudo su -

Эта команда позволит вам стать пользователем root и полностью сменить окружение на окружение root, при этом используя права администратора через команду sudo.

Использование:

  • Когда это полезно: если текущий пользователь имеет права администратора, но вы не хотите вводить пароль root (например, если доступ к пользователю root заблокирован или недоступен). Это удобно для безопасного администрирования системы.

Основные различия и примеры использования

Команда su

Пример:

su

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

Команда su —

Пример:

su -

Команда sudo su —

Пример:

sudo su -

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

Когда использовать каждую команду?

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