В чем разница между «su -», «sudo bash» и «sudo sh»?

29

Я хотел бы знать, в чем разница между

  • su -
  • sudo bash
  • sudo sh

Я не могу войти в систему как root, делая это, su -потому что у меня нет пароля root - я имею в виду, что у меня есть свой пароль пользователя, с которым я могу, sudo "command" но этот пароль не работает, потому что su - я могу войти в систему как пользователь root sudo bashс моим паролем пользователя, и я могу войти, пока делать , sudo shно тогда я получаю командную строку в этом виде #

Patryk
источник

Ответы:

27

Задний план

В Linux (и Unix в целом) есть SuperUser с именем Root . SuperUser может делать все что угодно, поэтому ежедневная работа в качестве SuperUser может быть опасной. Вы можете ввести команду неправильно и уничтожить систему. В идеале вы должны работать как пользователь, имеющий только те привилегии, которые необходимы для выполнения поставленной задачи. В некоторых случаях это обязательно Root, но в большинстве случаев это обычный пользователь.

су -

Эта команда используется для входа в систему под учетной записью root.
По умолчанию пароль учетной записи Root заблокирован в Ubuntu. Это означает, что вы не можете войти в систему как Root напрямую или использовать команду su, чтобы стать пользователем Root. Однако, поскольку учетная запись Root физически существует, все еще можно запускать программы с привилегиями корневого уровня. Именно здесь приходит sudo - он позволяет авторизованным пользователям (обычно «Административным») запускать определенные программы как Root без необходимости знать пароль root.

Смотрите Как включить Root Account .

судо ш

Эта команда запускает "sh" как суперпользователь.
Утилита sh - это интерпретатор командного языка, который должен выполнять команды, считанные из строки командной строки, стандартного ввода или указанного файла.

судо баш

Эта команда запускает "bash" как суперпользователь.
Bash - это оболочка или интерпретатор командного языка. Bash - это sh-совместимая оболочка, которая включает в себя полезные функции оболочки Korn (ksh) и оболочки C (csh). Он предназначен для соответствия стандарту IEEE POSIX P1003.2 / ISO 9945.2 Shell and Tools. Он предлагает функциональные улучшения по сравнению с sh как для программирования, так и для интерактивного использования. Кроме того, большинство скриптов sh могут быть запущены Bash без изменений.

Рекомендации: 1 , 2 , 3 .

desgua
источник
7
Стоит отметить, что вы можете войти в систему как суперпользователь, запустив sudo su -без пароля root. Поскольку sudo запускает su -команду с правами суперпользователя, вам будет предложено ввести только пароль пользователя. Преимущество заключается в настройке среды пользователя root, чего нельзя добиться, просто запустив оболочку с помощью sudo.
Аарон Д
6

su -:

Это изменит ваш идентификатор пользователя и унаследует переменные среды, как если бы вы вошли с этим пользователем. Обычно вы используете формат su - <userid>для входа в систему как пользователь. Если вы отбрасываете «идентификатор пользователя», это предполагает, что вы пытаетесь войти в систему как пользователь root, чего вы не можете (если вы не измените пароль root).

sudo bash& sudo sh:

Все, что после sudo - это программа для запуска, поэтому в этих случаях вы просите запустить пару оболочек - bash и dash соответственно. использовать man bashи man shдля более подробной информации о различных оболочках.


Смежные вопросы:

fossfreedom
источник
Хорошо, спасибо за ответ, но каков пароль по умолчанию для пользователя root? Где я могу найти его ?
Патрик
@lordmonkey root не имеет пароля и не нуждается в нем. sudo -iпредоставит вам оболочку входа в систему, как если su -бы, за исключением того, что sudo запрашивает ваш пароль, а не root.
гейра