Введение
Команда в системах Unix для временного получения привилегий root. В отличие от аналогичной команды su, пользователи по умолчанию должны вводить свой собственный пароль для аутентификации, а не пароль целевого пользователя. После аутентификации, и если файл конфигурации (обычно /etc/sudoers) разрешает пользователю доступ, система запускает запрошенную команду. Файл конфигурации предоставляет детальные права доступа, включая возможность запуска команд только из текущего терминала; требование пароля для каждого пользователя или группы; необходимость повторного ввода пароля при каждом использовании или полное отсутствие требования пароля для конкретной командной строки. Также можно настроить передачу аргументов или выполнение нескольких команд.
Unlike the similar command su, users must, by default, supply their own password for authentication, rather than the password of the target user. After authentication, and if the configuration file (typically /etc/sudoers) permits the user access, the system invokes the requested command. The configuration file offers detailed access permissions, including enabling commands only from the invoking terminal; requiring a password per user or group; requiring re entry of a password every time or never requiring a password at all for a particular command line. It can also be configured to permit passing arguments or multiple commands.
История
Роберт Коггешалл и Клифф Спенсер разработали оригинальную подсистему примерно в 1980 году в Департаменте компьютерных наук университета штата Нью-Йорк в Буффало (SUNY/Buffalo).
Дизайн
В отличие от команды su, пользователи предоставляют свой личный пароль команде sudo (если требуется), а не пароль суперпользователя или другой учетной записи. Это позволяет авторизованным пользователям выполнять команды с повышенными привилегиями, не раскрывая пароль другой учетной записи. Для использования команды sudo пользователи должны состоять в определенной группе, обычно в группе wheel или sudo. После аутентификации, и если файл конфигурации разрешает доступ пользователю, система запускает запрошенную команду. Sudo сохраняет права пользователя в течение определенного времени (обычно 5 минут) для каждого псевдотерминала, позволяя пользователю выполнять несколько последовательных команд от имени запрошенного пользователя без повторного ввода пароля. В целях безопасности и аудита sudo может быть настроен для записи каждой выполненной команды. Если пользователь пытается выполнить sudo, не будучи указанным в файле конфигурации, ему отображается сообщение об ошибке, информирующее о регистрации попытки. При соответствующей настройке, системный администратор (root) будет уведомлен по электронной почте. По умолчанию, информация о каждой попытке выполнения команды записывается в системный журнал.
Конфигурация
Файл /etc/sudoers содержит список пользователей или групп пользователей, которым разрешено выполнять подмножество команд с привилегиями пользователя root или другого указанного пользователя. Редактировать этот файл необходимо с помощью команды sudo visudo. Sudo предоставляет несколько опций конфигурации, таких как разрешение запуска команд через sudo без запроса пароля, изменение списка пользователей, которым разрешено использовать sudo, и настройка сообщения, отображаемого при вводе неверного пароля. В Sudo также заложена пасхалка, которую можно активировать из файла конфигурации – она будет выводить оскорбление каждый раз при неудачной попытке ввода пароля.
Влияние
В некоторых дистрибутивах операционных систем, sudo во многом вытеснило традиционное использование отдельной учётной записи суперпользователя для выполнения административных задач, особенно в некоторых дистрибутивах Linux и macOS от Apple.
Инструменты и аналогичные программы
visudo — это утилита командной строки, позволяющая редактировать конфигурационный файл sudo безопасным способом. Она предотвращает одновременное редактирование несколькими пользователями с помощью блокировок и выполняет проверку корректности и синтаксиса. Sudoedit — это программа, являющаяся символической ссылкой на бинарный файл sudo. При запуске sudo через псевдоним sudoedit, sudo ведет себя так, как будто передан флаг -e, и позволяет пользователям редактировать файлы, для записи в которые требуются повышенные привилегии. Microsoft выпустила собственную версию sudo для Windows в феврале 2024 года. Она функционирует аналогично своей Unix-версии, предоставляя возможность запускать команды с повышенными привилегиями из сеанса консоли, запущенного без повышенных привилегий. Программа runas предоставляет схожую функциональность в Windows, но не может передавать текущие каталоги, переменные окружения или длинные командные строки дочернему процессу. И хотя она поддерживает запуск дочернего процесса от имени другого пользователя, она не поддерживает простое повышение привилегий. В Hamilton C shell также включены полноценные su и sudo для Windows, которые могут передавать всю эту информацию о состоянии и запускать дочерний процесс либо с повышенными привилегиями, либо от имени другого пользователя (или и то, и другое). Графические пользовательские интерфейсы для sudo существуют, в частности gksudo, но они устарели в Debian и больше не включены в Ubuntu. Другие пользовательские интерфейсы не построены непосредственно на базе sudo, но предоставляют аналогичное временное повышение привилегий для административных целей, такие как pkexec в Unix-подобных операционных системах, контроль учетных записей пользователей в Microsoft Windows и службы авторизации Mac OS X. Gosu — это инструмент, аналогичный sudo, который популярен в контейнерах, где терминал может быть не полностью функциональным или где запуск sudo в контейнеризированной среде может приводить к нежелательным последствиям.