Каково различие между командами “su-s” и “sudo-s”?

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

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

23
задан 25.11.2011, 21:10

9 ответов

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

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

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

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

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

30
ответ дан 07.12.2019, 09:48
  • 1
    Также стоит сказать это относительно многих дистрибутивов sudo не дает полномочий по умолчанию обычным пользователям. В тех системах, su единственная опция. – Telemachus 16.07.2009, 14:02
  • su спросит Вас пароль пользователя root.
  • sudo спросит Вас Ваш пароль (и Вы должны быть очищены для sudo доступа, чтобы сделать это).
5
ответ дан 07.12.2019, 09:48
  • 1
    , это было поведением по умолчанию для sudo, но это также настраивает для просьбы Вас корень или другой пароль. – theotherreceive 15.07.2009, 16:25

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

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

2
ответ дан 07.12.2019, 09:48
su -s

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

sudo -s

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

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

12
ответ дан 07.12.2019, 09:48

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

sudo является командой для выполнения другой команды (дополнительно оболочка) как другой пользователь. Необходимо пройти проверку подлинности как собственный пользователь. Разрешение использовать sudo (и определенные вещи можно сделать с ним) указано администратором в sudoers файле.

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

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

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

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

9
ответ дан 07.12.2019, 09:48

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

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

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

2
ответ дан 07.12.2019, 09:48

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

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

1
ответ дан 07.12.2019, 09:48
  • 1
    Реверс часто верен. Таким образом, на многих более старых подобных Unix дистрибутивах у обычных пользователей нет полномочий по умолчанию под sudo (который даже всегда не устанавливается). – Telemachus 16.07.2009, 14:01

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

1
ответ дан 07.12.2019, 09:48

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

1
ответ дан 07.12.2019, 09:48

Теги

Похожие вопросы