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

В чем разница между двумя командами суперпользователя, su -s а также sudo -s?

Они оба дают оболочку с доступом к учетной записи суперпользователя.

9 ответов

Решение

На практике они оба сделают вас суперпользователем. Тем не менее, они делают немного разные вещи, немного по-другому.

Первый, su - переключает вас в оболочку входа в систему, тогда как sudo -s не. На практике это часто означает, что ваши переменные среды не будут переключаться на rootдля sudo -s, Обратите внимание, что вы можете просто запустить su чтобы не получить оболочку входа в систему, или sudo -i чтобы получить оболочку входа в систему [не во всех версиях].

Во-вторых, su а также su - переключиться на нового пользователя, попросив вас пройти аутентификацию в качестве нового пользователя. sudo -s а также sudo -i (и просто регулярно sudo foo) позволяет запустить команду, для которой вы предварительно авторизованы [см. /etc/sudoers], возможно, попросив подтвердить ваш текущий идентификатор.

Если вы хотите быть по-настоящему милой, вы также можете запустить sudo su -, который запросит войти в систему как root (su -) запускается пользователем root (sudo часть).

Если пользователь root заблокирован (например, в Ubuntu), вы не сможете войти в систему как пользователь root su, В этом случае вам нужно будет использовать sudo -s или же sudo -i

su -s

Переключится на пользователя (в данном случае root) и запустит указанную вами оболочку или один из нескольких других методов определения оболочки. Это полезно, если вы хотите очень быстро использовать zsh или другую оболочку от имени root... и по какой-то причине вы не используете sudo.

sudo -s

Просто запускает оболочку с помощью sudo, которая даст вам корневую оболочку. Вы также можете передать ему оболочку.

su -s старше, намного старше, чем команда sudo -s. Я предполагаю, что разработчик пытается максимально упростить переход на использование sudo.

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

sudo - это команда для выполнения другой команды (необязательно оболочки) от имени другого пользователя. Вы должны аутентифицироваться как ваш собственный пользователь. Разрешение на использование sudo (и конкретные действия, которые вы можете сделать с ним) задаются администратором в файле sudoers.

Если вы дадите кому-нибудь доступ к su (например, предоставив ему пароль root), он сможет делать с ним все что угодно - запускать другие команды, открывать оболочку, изменять пароль, удаленно входить через ssh и т. Д. По сути, вы предоставляете им доступ к другой учетной записи, причем "su" - это только одна вещь, которую они могут с ней сделать.

Судо гораздо более мелкозернистый. Вы можете предоставить привилегии пользователю или группе. Вы можете разрешить пользователю или группе выполнять sudo в течение определенного периода времени (например, с понедельника по пятницу, с 9:00 до 17:00). Вы можете указать определенный список команд, которые им разрешено запускать (например, только /usr/local/bin/run_backup), или вы можете указать конкретного пользователя, которому разрешено запускать команды (например, www, backup, staff и т. Д.).).

Помимо своей гибкости, sudo является лучшим решением во всех случаях, поскольку не требует доступа к тому, чего у пользователя еще нет. Если вы предоставляете кому-то доступ к sudo, вы можете отозвать его, удалив его строку в файле sudoers или удалив его из группы sudoers. Если вы удалите их учетную запись, их доступ исчезнет.

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

  • su спросит вас пароль пользователя root.
  • sudo спросит вас ваш пароль (и вам нужно очистить доступ sudo для этого).

Из Википедии:

su (сокращение от "замещающий пользователь" или "переключатель") - это команда Unix, используемая для запуска оболочки другого пользователя без выхода из системы.

Связанная команда с именем sudo выполняет команду от имени другого пользователя, но соблюдает набор ограничений, относительно которых пользователи могут выполнять какие команды, какие другие пользователи (как правило, в файле конфигурации с именем / etc / sudoers, лучше всего редактируемым командой visudo). В отличие от su, sudo аутентифицирует пользователей по их собственному паролю, а не по паролю у целевого пользователя (чтобы разрешить делегирование определенных команд конкретным пользователям на определенных хостах без совместного использования паролей между ними и при этом снижается риск любых необслуживаемых терминалов).

Одна вещь, о которой не говорится в полной мере, заключается в следующем: то, что вы можете использовать, часто зависит от того, какой дистрибутив вы используете и кто его запускает. Один или другой (su или же sudo), вероятно, не настроен для полного использования по умолчанию. Так, например, как уже упоминали некоторые люди, OS X и Ubuntu отключают учетную запись root (su) по умолчанию. Точно так же Debian не дает обычным пользователям никаких привилегий по умолчанию для sudo, (Во всех этих системах вы можете изменить эти значения по умолчанию, но только если у вас есть какие-то административные привилегии для начала. Я полагаю, мы говорим о несерверной ситуации, и вы администрируете машину, поскольку мы находимся скорее в SU чем SF, но на всякий случай.)

Наконец, если вы хотите использовать sudo более детально, вы должны смотреть на man sudoers как отредактировать файл /etc/sudoers. Тем не менее, вы никогда не должны редактировать его вручную. Используйте программу visudo - она ​​не позволит вам сохранить ваши изменения, если они не будут хотя бы минимально вменяемыми. Это отличная защита от простых ошибок, которые могут лишить вас прав администратора вашей системы.

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

В системах, где учетная запись суперпользователя отключена, таких как Mac OS X, su не будет работать; sudo -s будут.

Кроме того, кажется, нет su -s доступно, по крайней мере, на моей машине.

su в основном создаст новую оболочку входа в систему с другими привилегиями пользователя (логин). sudo просто временно разрешит вам выполнить команду, используя указанного вами пользователя. В некоторых UNIX, таких как FreeBDS, нет опций -s.

Другие вопросы по тегам