В чем разница между sudo -s и sudo -i и почему они дают мне разные оболочки? Оказывается -s держит меня в bash и -i дает мне sh

В MacOSX High Sierra 10.13, если я ввожу sudo -s в терминал и ввожу свой пароль, я получаю имя пользователя root, но со знаком доллара в приглашении:

user1@mymachine:~$ sudo -s
**root@mymachine:~$**

Но если я sudo -i , я получу:

user1@mymachine:~$ sudo -i
Password:<br/>
**mymachine:~ root#**

Почему я не получаю знак хеша #, если я являюсь пользователем root в приведенном выше примере с sudo -s? Разве я не настоящий root?
Отличаются ли переменные среды между ними?

1 ответ1

0

Первое, что вам нужно понять, это то, что sudo -s эквивалентен sudo -s root а sudo -i эквивалентен sudo -i root . Всякий раз, когда вы пропускаете пользователя из sudo, предполагается, что вы нацелены на пользователя root.

sudo -s запускает оболочку как целевой пользователь, а sudo -i входит как целевой пользователь.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .