Каково различие между 'su -', 'sudo колотят' и 'sudo sh'?
=========================================================

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

* `su -`
* `sudo bash`
* `sudo sh`

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

 

**Фон** 

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

**su -** 

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

Посмотрите[**, как включить корневую учетную запись**](https://help.ubuntu.com/community/RootSudo#Enabling%20the%20root%20account). 

**sudo sh** 

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

**удар sudo** 

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

Ссылки: [1](https://help.ubuntu.com/community/RootSudo), [2](http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html), [3](http://www.gnu.org/s/bash/).

 

`su -`:

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

`sudo bash` & `sudo sh`:

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

---

Связанные вопросы: 

* ![Ask Ubuntu](https://cdn.sstatic.net/Sites/askubuntu/img/favicon.ico) [Как знать мой пароль root?](https://askubuntu.com/questions/9017/how-to-know-my-root-password)
* ![Stack Overflow](https://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico) [Какую оболочку Linux я должен использовать?](https://stackoverflow.com/questions/199661/what-linux-shell-should-i-use)