Что делает служба sudo?

17

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

Однако, когда я запускаю rcconf , я вижу эту строку:

[*] sudo    Provide limited super user privileges to specific users

Так какой смысл в этой услуге? Или это даже услуга?

    
задан s3v3n 12.12.2012 в 14:21
источник

2 ответа

21

Короткий ответ

Отменить «кэшированные» действия аутентификации пользователей при перезагрузке. Это не демон, а скрипт запускается во время загрузки.

Обширный ответ

Проверяя файл init /etc/init.d/sudo , который «запускает сервис», вы можете легко увидеть, что он делает:

case "" in
  start)
        # make sure privileges don't persist across reboots
        if [ -d /var/lib/sudo ]
        then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
        fi
        ;;
  stop|reload|restart|force-reload)
        ;;
  *)
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

Итак, в основном, он просто касается некоторых файлов в /var/lib/sudo при запуске системы, чтобы иметь очень старую временную метку модификации. В результате, «кэшированные» аутентифицированные действия аннулируются в начале службы (что происходит при загрузке).

Более подробную информацию о каталоге /var/lib/sudo и этих методах времени, пожалуйста? Ну, из mapage sudo(8) :

[...]
Once a user has been authenticated, a time stamp is updated and the
user may then use sudo without a password for a short period of time
(15 minutes unless overridden in sudoers).
[...]
Since time stamp files live in the file system, they can outlive a
user's login session.  As a result, a user may be able to login, run a
command with sudo after authenticating, logout, login again, and run
sudo without authenticating so long as the time stamp file's
modification time is within 15 minutes (or whatever the timeout is set
to in sudoers).
[...]
/var/lib/sudo           Directory containing time stamps
    
ответ дан gertvdijk 12.12.2012 в 15:35
источник
12

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

Подробное описание sudo

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

Когда вы устанавливаете Ubuntu или любой другой дистрибутив, в котором используется sudo , разница между root и пользователем, который использует sudo для получения привилегий root (привилегии администратора или суперпользователя ) является следующим:

Как root

  • Вам не задают пароль для каждой или всех команд, которые вы запускаете в сеансе
  • Не все команды, которые вы выполняете, будут регистрироваться по умолчанию.
  • Система предполагает, что вы знаете, что вы делаете (причина, почему он не запрашивает пароль каждый раз, когда вы выполняете команду)
  • Если вы допустили ошибку, у вас нет второй опции или последней минуты.

Как sudo

  • Вам предлагается ввести пароль для каждой или всех команд, которые вы запускаете в сеансе. Например, если вы открываете терминал и выполняете команду, требующую прав администратора, она будет запрашивать пароль один раз для этого сеанса до закрытия терминала или выхода из системы. Это зависит от того, какую команду вы используете и где. Он может спрашивать один или несколько раз.
  • Все выполняемые вами команды будут регистрироваться с тех пор, как вы действительно просите разрешения использовать привилегированную команду суперпользователя.
  • Система предполагает, что вы просите разрешения временно, и административное право будет временно предоставлено (до выхода из системы, закрытия терминала и т. д.).
  • У вас есть последний способ исправить любую ошибку. Это делается в момент запроса пароля.

Почему был создан SUDO

Создание SUDO было выполнено, потому что в прошлом использование root создавало больше проблем, чем решений. У пользователей были все права, а это означало, что если они сделали некоторую весеннюю очистку и буквально удалили папки /usr , /lib и /bin (потому что считали, что они им не нужны) .. угадайте, что произойдет. Многие проблемы в прошлом были связаны с тем, что пользователи не знали о силе, которую они имели при использовании root. В основном у них был корень, но он не понимал Linux, иерархию файловой системы, какие файлы были важны и т. Д. (Что-то вроде наличия феррари и не знает, как управлять ... на шоссе!)

SUDO также используется приложениями графического интерфейса (например, диспетчер обновлений), когда им нужны временные административные привилегии, чтобы что-то сделать. Они нужны только для определенного количества команд (обычно 1), а затем они возвращаются к привилегии пользовательского уровня. Это делается для того, чтобы все время не иметь привилегий root и избегать ошибок, если пользователь решает удалить важную часть системы.

Кроме того, он обеспечивает лучшую защиту, поскольку по умолчанию пользователь root отключается.

Наконец, если у вас есть настольный ПК или сервер, вы действительно не хотите, чтобы все были root и не имели всех привилегий администратора. Очень плохая идея, если ваша младшая сестра или маленькие братья начинают задаваться вопросом, что произойдет, если /boot встретил ключ DEL . Здесь sudo приходит, чтобы уменьшить вероятность того, что произойдет что-то плохое.

Что означает Предоставить ограниченные привилегии суперпользователя определенным пользователям ?

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

Информацию о том, как использовать файл sudoers типа man sudoers в терминале. Например, нормальный формат:

USER HOST = COMMANDS

Например, cyrex server1 = /bin/ls предоставит пользователю cyrex в хост-сервере1 доступ для запуска команды ls.

Например, cyrex server1 (root) = /bin/ls предоставит пользователю cyrex в хост-сервере1 доступ для запуска команды ls как root.

Например, cyrex ALL = /bin/ls предоставит пользователю cyrex во всех хостах доступ для запуска команды ls.

Например, cyrex ALL = ALL предоставит пользователю cyrex доступ ко всем хостам для запуска всех команд.

Например, luis ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killall позволит мне запустить sudo для команд kill и killall как root без запроса пароля.

    
ответ дан Luis Alvarado 12.12.2012 в 14:58