23

Я использую Ubuntu 10.04.

Я замечаю, что после запуска « sudo -s » в терминале приглашение изменилось с

" XXX @ XXX "

в

" root @ XXX ",

Кажется, это изменилось на привилегию root.

Но когда я проверяю документацию команды "sudo" здесь, она объясняет другую историю "sudo -s", может кто-нибудь объяснить мне, что именно делает " sudo -s "?

6 ответов6

9

Они на самом деле не противоречат друг другу: команда sudo всегда меняет пользователя, либо на пользователя root, либо на пользователя, указанного вами с помощью ключа -u . Все, что делает -s , обеспечивает ярлык для запуска оболочки от имени этого пользователя. Это действительно эквивалентно:

sudo $SHELL

за исключением того, что он, скорее всего, откатится на /bin/sh или что-то еще, если SHELL не установлен.

6

sudo -s запускает оболочку, указанную в переменной окружения $SHELL как суперпользователь /root. Вы можете указать другого пользователя, используя -u .

Переменная среды $SHELL содержит путь к пользовательской оболочке входа по умолчанию. Фактическая настройка для программы оболочки по умолчанию обычно находится в etc/passwd . В зависимости от того, что вы сделали в текущем сеансе, переменная $ SHELL может не содержать программу оболочки, которую вы используете в данный момент. Если вы входите автоматически, например, с помощью zsh, но затем запускаете bash, $ SHELL не изменится на /bin/zsh .

Показать текущего пользователя и программу оболочки: echo $(whoami) is logged in and shell is $0

  • whoami выводит имя пользователя, под которым работает пользователь.
  • $0 содержит имя / путь работающей в данный момент программы (в данном случае это оболочка).
3

Из руководства:

sudo позволяет разрешенному пользователю выполнять команду от имени суперпользователя или другого пользователя, как указано в файле sudoers.

-s Shell, запускает оболочку, указанную переменной среды SHELL, если она установлена, или оболочку, указанную в passwd(5).

Более серьезно, sudo -s запускает переменную окружения оболочки. Поскольку вы не добавили ни одной переменной, она запускается так, как указано в passwd, и поэтому соединяет вас как root.

1

Посмотрите на этот пост от суперпользователя:

В чем разница между командами "su -s" и "sudo -s"?

Кстати, ваш пост должен быть перенесен в суперпользователя (или аскубунту, как сказано в комментариях)!

0

Похоже, что он создает еще один экземпляр оболочки поверх текущей оболочки, но с привилегиями root. Держу пари, что после того, как вы выполните sudo -s если вы введете команду exit, вы вернетесь к исходной оболочке.

-1

sudo -s позволяет вам запустить команду, для которой вы предварительно авторизованы [see /etc /sudoers], возможно, попросив вас подтвердить ваш текущий идентификатор.

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