Я уже прочитал это из руководства, но я не вижу разницы ..
su
- изменить идентификатор пользователя или стать суперпользователем
sudo -s [command]
Опция -s
(shell) запускает оболочку, указанную переменной среды SHELL, если она установлена, или оболочку, указанную в passwd (5). Если указана команда, она передается в оболочку для выполнения. В противном случае, интерактивная оболочка выполняется.
sudo -i
исчезнуть описание в руководстве
su user
для входа из ненадежных оболочек, ноsu - user
. См. Unix.stackexchange.com/q/7013/8250sudo -i
это плохо, но вы, безусловно, можете об этом сказатьОтветы:
Основное различие между этими командами заключается в том, как они ограничивают доступ к своим функциям.
su
(что означает «заменить пользователя» или «переключить пользователя») - делает именно это, запускает другой экземпляр оболочки с привилегиями целевого пользователя. Чтобы убедиться, что у вас есть права для этого, он запрашивает пароль целевого пользователя . Итак, чтобы стать пользователем root, вам нужно знать пароль root. Если на вашем компьютере есть несколько пользователей, которым нужно запускать команды от имени пользователя root, все они должны знать пароль root - учтите, что это будет тот же пароль. Если вам необходимо отозвать права администратора у одного из пользователей, вам нужно изменить пароль пользователя root и сообщить его только тем людям, которым необходимо сохранить доступ - беспорядочно.sudo
(хм ... что за мнемоника? Super-User-DO?) совершенно другая. Он использует файл конфигурации (/ etc / sudoers), в котором указывается, какие пользователи имеют права на определенные действия (запускать команды от имени пользователя root и т. Д.). При вызове запрашивает пароль пользователя, который его запустил, - чтобы убедиться, что пользователь терминал действительно тот же "Джо", который указан в/etc/sudoers
. Чтобы отозвать права администратора у человека, вам просто нужно отредактировать файл конфигурации (или удалить пользователя из группы, которая указана в этой конфигурации). Это приводит к намного более чистому управлению привилегиями.В результате этого во многих системах на основе Debian
root
пользователь не имеет установленного пароля - то есть невозможно напрямую войти в систему как root.Кроме того,
/etc/sudoers
позволяет указать некоторые дополнительные параметры - т.е. пользователь X может запускать только программу Y и т. Д.Часто используемая
sudo su
комбинация работает следующим образом: сначалаsudo
запрашивает ваш пароль, и, если вам это разрешено, вызывает следующую команду (su
) в качестве суперпользователя. Посколькуsu
вызываетсяroot
, это не требует ввода пароля целевого пользователя. Таким образом,sudo su
позволяет открывать оболочку от имени другого пользователя (включая пользователя root), если/etc/sudoers
файл разрешен для доступа суперпользователя .источник
su
качестве «переключателя пользователя», но всегда был суперпользователем; поведение по умолчанию без чужого имени пользователя (хотя это имеет смысл). Из википедии : «Команда su, также называемая суперпользователем [1] еще в 1974 году, также называлась« замещающий пользователь »,« подмена пользователя »или« установить пользователя », поскольку она позволяет изменять учетную запись, связанную с текущим терминал (окно). "sudo su
?sudo
позволяет запускать команды в своей учетной записи пользователя с правами root.su
позволяет вам переключать пользователя, чтобы вы вошли в систему как пользователь root.sudo -s
запускает оболочку с привилегиями root.sudo -i
также приобретает среду пользователя root.Чтобы увидеть разницу между
su
иsudo -s
, сделайте,cd ~
а затемpwd
после каждого из них. В первом случае вы будете в домашнем каталоге root, потому что вы root. Во втором случае вы будете находиться в своем домашнем каталоге, потому что вы сами с правами суперпользователя.Там больше обсуждения этого вопроса точного здесь .
источник
cd ~
результаты отличаются, является результатом того, что sudo -s не устанавливает переменную окружения $ HOME.sudoers
файл контролирует, кто может выполнять какую команду от имени другого пользователя, но это происходит до ее выполнения. Однако, если вам было разрешено запустить процесс, скажем, как root - запущенный процесс имеет UID root и имеет полный доступ к системе, sudo не может ограничить это. Опять же, вы всегда либо сами, либо root, здесь нет "половины-половины". Таким образом, еслиsudoers
файл позволяет вам запускать оболочку от имени root - разрешения в этой оболочке будут неотличимы от «нормальной» корневой оболочки.Этот ответ является обманом моего ответа на вопрос об обмане , поставленный здесь на каноническом ответе, чтобы люди могли его найти!
Основное различие между
sudo -i
иsudo -s
является:sudo -i
дает вам корневую среду, т.е. ваша~/.bashrc
игнорируется.sudo -s
дает вам среду пользователя, так что ваш~/.bashrc
уважают.Вот пример, вы можете видеть, что у меня есть приложение
lsl
в моем~/.bin/
каталоге, которое доступно через,sudo -s
но не доступно черезsudo -i
. Также обратите внимание, что приглашение Bash изменяется как будет с,sudo -i
но не сsudo -s
:Хотя
sudo -s
это удобно для того, чтобы дать вам знакомую среду, я рекомендую использоватьsudo -i
по двум причинам:.bashrc
.источник
sudo -s
предоставлением среды, с которой знаком пользователь?su
запрашивает пароль пользователя «root».sudo
запрашивает ваш собственный пароль (а также проверяет, разрешено ли вам запускать команды от имени пользователя root, что настраивается через/etc/sudoers
- по умолчанию все учетные записи пользователей, принадлежащие к группам «admin» или «sudo», могут использовать sudo).sudo -s
запускает оболочку как root, но не меняет ваш рабочий каталог.sudo -i
имитирует вход в систему с учетной записью root: ваша рабочая папка будет/root
, а учетная запись root и.profile
т. д. будет поступать так же, как при входе в систему.источник
sudo -s
почти равноsu
($ HOME отличается) иsudo -i
равноsu -
В Ubuntu или аналогичной системе я не нахожу много
su
смысла в традиционном смысле для суперпользователя.sudo
справляется с этим делом гораздо лучше. Тем не менее,su
отлично подходит для того, чтобы стать другим пользователем в одноразовых ситуациях, когда настройка sudoers была бы глупой.Например, если я чиню свою систему с живого CD / USB, я часто монтирую свой жесткий диск и другие необходимые вещи
chroot
в систему. В таком случае моя первая команда, как правило:Таким образом, я работаю не как root, а как обычный пользователь, и затем использую его по
sudo
мере необходимости.источник
su
Запрашивает пароль root, становится root, открывает интерактивную оболочку без авторизации.su -
Запрашивает пароль root, становится root, открывает интерактивную оболочку входа в систему.sudo -s
Запрашивает ваши пароли, становится пользователем root, открывает интерактивную оболочку без авторизации.sudo -i
Запрашивает ваши пароли, становится root, открывает интерактивную оболочку входа в систему.Лучшая практика заключается в использовании этих двух.
sudo su
Запрашивает ваш пароль, на секунду становится root и запускаетсяsu
как root`.sudo su -
Запрашивает ваш пароль, становится root на секунду и запускаетсяsu -
от имени root.Так что в этом случае вы
su
используете,sudo
и вам не нужно знать фактический пароль пользователя root. Результаты такие же какsu
иsu -
.источник