Я использую Ubuntu 10.04.
Я замечаю, что после запуска « sudo -s » в терминале приглашение изменилось с
" XXX @ XXX "
в
" root @ XXX ",
Кажется, это изменилось на привилегию root.
Но когда я проверяю документацию команды "sudo" здесь , она объясняет другую историю "sudo -s", может кто-нибудь объяснить мне, что именно делает " sudo -s "?
sudo
вряд ли специфичен для Ubuntu ...Ответы:
Они на самом деле не противоречат друг другу -
sudo
команда всегда меняет пользователя, либо на пользователя root, либо на пользователя, указанного вами с помощью-u
переключателя. Все, что-s
нужно сделать, это предоставить ярлык для запуска оболочки от имени этого пользователя. Это действительно эквивалентно:за исключением того, что он, скорее всего, откатится
/bin/sh
или что-то, еслиSHELL
не установлен.источник
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
содержит имя / путь запущенной в данный момент программы (в данном случае это оболочка).источник
Из руководства:
Более серьезно, sudo -s запускает переменную окружения оболочки. Поскольку вы не добавили ни одной переменной, она запускается так, как указано в passwd, и поэтому соединяет вас как root.
источник
-u
опции, чтобы узнать это. Но для тех, кто не знаком с нимиsudo
, они не будут знать, чтобы посмотреть-u
.Посмотрите на этот пост от суперпользователя:
В чем разница между командами "su -s" и "sudo -s"?
Кстати, ваш пост должен быть перенесен в суперпользователя (или аскубунту, как сказано в комментариях)!
источник
Похоже, что он создает еще один экземпляр оболочки поверх текущей оболочки, но с привилегиями root. Могу поспорить, что после того, как вы сделаете это,
sudo -s
если вы введете команду exit, вы вернетесь к исходной оболочке.источник
sudo -s позволяет вам запустить команду, для которой вы предварительно авторизованы [см. / etc / sudoers], возможно, попросив вас подтвердить ваш текущий идентификатор.
источник