sudo

sudo
Логотип программы sudo
Скриншот программы sudo
Команда sudo в терминале
Тип Разрешение на использование привилегий
Авторы Роберт Коггешалл, Клифф Спенсер
Разработчик Тодд С. Миллер
Написана на Си
Операционная система Unix-подобные
Дата выпуска ок. 1980[1]
Последняя версия 1.9.17p2 (26 июля 2025)
Репозиторий git.sudo.ws/sudo/
Лицензия Стиль ISC-style[2]
Сайт sudo.ws (англ.) — официальный сайт Sudo
Логотип Викисклада Медиафайлы на Викискладе

sudo (англ. Substitute User and do, дословно «подменить пользователя и выполнить», произносится /sd/ или /ˈsd/[2]) — программа для системного администрирования UNIX-систем, позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы. Основная идея — дать пользователям как можно меньше прав, при этом достаточных для решения поставленных задач. Программа поставляется для большинства UNIX и UNIX-подобных операционных систем.

Команда sudo предоставляет возможность пользователям выполнять команды от имени суперпользователя root либо других пользователей. Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле /etc/sudoers (для редактирования файла можно использовать специальный редактор visudo, запускаемый из командной строки без параметров, в том числе без указания пути к файлу); язык их написания и примеры использования подробно изложены в man sudoers(5).

В большинстве случаев грамотная настройка sudo делает небезопасную работу от имени суперпользователя ненужной. Все действия оказываются выполнимы из-под аккаунта пользователя, которому разрешено использовать sudo без ограничений. Имеется возможность запрещать и разрешать определённым пользователям или группам выполнение конкретного набора программ, а также разрешить выполнение определённых программ без необходимости ввода своего пароля[3].

Примеры

Разрешить пользователям, входящим в группу «admin», выполнять команды с правами любого пользователя (с запросом пароля):

%admin ALL=(ALL) ALL

Позволить пользователю «user1» выполнять команды с правами «user2» или «user3», не запрашивая пароль:

user1 ALL=(user2, user3)NOPASSWD: ALL

Разрешить пользователю «backup» выполнять команду /usr/bin/rsync без запроса пароля:

backup ALL=NOPASSWD: /usr/bin/rsync

Особенности

Программу критикуют, в частности, за невозможность выполнять некоторые команды. К примеру:

sudo cat sources.list > /etc/apt/sources.list

выдаст ошибку прав доступа (так как с правами root выполняется только процесс cat, а перенаправление выполняет shell с правами обычного пользователя), хотя такое можно сделать, использовав конвейер:

cat sources.list | sudo tee /etc/apt/sources.list

также можно выполнить shell с административными правами, а строку к выполнению взять в кавычки, используя параметр «»:

sudo sh -c 'cat sources.list > /etc/apt/sources.list'

или же попасть в shell интерактивно аналогично работе su, используя параметр «-s»:

sudo -s

можно и так

sudo su

или выполнив

sudo sh

Схожие программы

В OpenSolaris вместо sudo используется команда pfexec, работающая на основе RBAC.

В OpenBSD, по умолчанию, используется собственная утилита doas[4].

Windows имеет похожую команду runas.

Примечания

  1. Miller, Todd C. A Brief History of Sudo. Дата обращения: 15 ноября 2018. Архивировано 16 ноября 2018 года.
  2. 1 2 Miller, Todd C. Troubleshooting tips and FAQ for Sudo. Дата обращения: 20 ноября 2009. Архивировано 27 ноября 2021 года.
  3. Администратор в Ubuntu, или что такое sudo | Русскоязычная документация по Ubuntu. Дата обращения: 3 апреля 2013. Архивировано из оригинала 4 апреля 2013 года.
  4. doas(1) - OpenBSD manual pages. man.openbsd.org. Дата обращения: 8 декабря 2023. Архивировано 8 декабря 2023 года.

См. также

Ссылки