1

Я sudo настроен так:

joe ALL=(root) NOPASSWD: /bin/su - steve

Что именно это делает?

Я сбит с толку.

Я думаю, что есть три разных способа выполнить эту команду:

  1. su - steve

  2. sudo su - steve

  3. sudo -u root su - steve

В каких случаях он не будет запрашивать пароль? В чем разница между командами 2 и 3?

Когда joe запускает команду 2, она запускается от имени пользователя joe или root?

4 ответа4

4

Кажется, у вас может возникнуть путаница между тем, для чего используются sudo и su. Оба позволяют пользователю выполнять команды, как если бы они были другим пользователем с различными привилегиями, но есть определенные различия.

Чрезмерное обобщение будет:

  • su - получить оболочку с помощью uid/gid другого пользователя, аутентифицируясь с помощью пароля этого пользователя.
  • sudo - запустить команду с помощью uid/gid другого пользователя, аутентифицируясь с вашим паролем.

SU

В общем, большинство людей используют su для запуска оболочки с (s)ubstitue (u)ser id и / или id группы. Это чаще всего делается для получения привилегий root, но также может использоваться для любого системного пользователя.

Если пользователь, выполняющий su, не является пользователем root, он запросит пароль пользователя, которого вы пытаетесь использовать в качестве su.

  • su - войдите в систему как пользователь root с оболочкой входа в систему, которая будет иметь среду, аналогичную реальной регистрации. Нужен пароль root.
  • su - alice login as alice с оболочкой входа, которая будет иметь среду, аналогичную реальной регистрации. Нужен пароль Алисы.
  • Например, приведенные выше примеры su или su alice с той разницей, что исходная пользовательская среда поддерживается, за исключением переменных среды USER, SHELL и HOME. Это может иметь неожиданные последствия. Например, поскольку PATH не изменяется, при попытке изменить пароль вы, возможно, запускаете не команду /usr /bin /passwd, а /usr /local /bin /passwd или даже /home /{$ ORIGUSER} /bin /passwd.

  • su -c command - выполнить команду от имени пользователя root с оболочкой входа и выйти в исходную оболочку пользователя.

  • su -c command - alice выполняет команду как Алиса с оболочкой входа и выходит в исходную пользовательскую оболочку.

Рекомендации

  • человек су

SUDO

Судо позволяет больше гибкости, чем Су. Наиболее очевидным для конечного пользователя является то, что они аутентифицируются с использованием своего собственного пароля или даже без пароля, если настроены таким образом.

Используя конфигурационный файл visudo, привилегиями, разрешенными пользователем, можно управлять с гораздо большим контролем.

Например, вы можете позволить пользователю выполнять некоторые команды без пароля, а другие команды могут требовать пароль.

Пожалуйста, посмотрите соответствующие страницы руководства, чтобы получить представление обо всех возможных вариантах.

Рекомендации

Два наиболее заметных преимущества sudo против su

  • Способность дать определенным группам пользователей привилегии root только для подмножества команд без необходимости давать им пароль root. Это позволяет иметь ограниченный уровень пользователей уровня администратора с правами доступа root только к командам, которые им необходимы для выполнения своей работы.
  • Поскольку вы выполняете только одну команду от имени пользователя root, снижается риск случайного вреда. Например, вы думаете, что находитесь в своем каталоге пользователя /home /user /myjunkdocs и запускаете rm -rf но на самом деле вы находитесь в корневом каталоге и удаляете системное программное обеспечение.
1

su входит в систему суперпользователя по умолчанию (или указанного пользователя), но для этого требуется пароль цели (т. е. su root нужен пароль root). Это не имеет ничего общего с sudo.

sudo su авторизует вас как root с паролем joe. Он запросит у вас пароль Джо, а затем запустит команду su от имени пользователя root, который не требует пароля для суперпользователя (root). Это означает, что вы войдете в корневую оболочку с паролем Джо.

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

1

«Я думаю, что есть три способа выполнить эту команду:

su - steve

sudo su - steve

sudo -u root su - steve"

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

Если вы написали: joe ALL =(root) /bin /su - steve, вам нужно будет ввести свой собственный пароль (joes), тогда вы станете «steve».

0

Команда su (switch user) используется для переключения на конкретного пользователя.

For eg: su tom    ----------> to login as tom

sudo su переключится на пользователя root.

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

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