Sudo
Sudo — командная утилита для Unix-подобных операционных систем, позволяющая пользователю запускать программы с правами другого пользователя, по умолчанию — суперпользователя. Первоначально название расшифровывалось как «superuser do» («выполни от суперпользователя») — изначально эта команда исполняла только такие задачи, и такое понимание остаётся самым распространённым[1][2]. Однако на официальном сайте проекта Sudo указывается трактовка su 'do[3]. В современных мануалах Linux команда su описывается как substitute user («заменить пользователя»)[4], а значения sudo — как «substitute user, do» (выполни как другого пользователя), поскольку команда позволяет исполнять процессы и от имени других, не только суперпользователя[5][6].
В отличие от похожей команды su, пользователь по умолчанию вводит свой пароль, а не пароль целевой учётной записи. После аутентификации и при наличии разрешения в конфигурационном файле (обычно /etc/sudoers) система запускает указанную команду. Конфигурация даёт широкие возможности: ограничение команд, доступ только с определённого терминала, требования повторного ввода пароля или его отсутствие для отдельных команд и др.
Общие сведения
| Sudo | |
|---|---|
| Тип | авторизация прав доступа |
| Авторы | Robert Coggeshall, Cliff Spencer |
| Разработчик | Todd C. Miller |
| Написана на | C |
| Операционная система | Unix-подобные ОС |
| Первый выпуск | около 1980 |
| Последняя версия | см. историю версий |
| Репозиторий | git.sudo.ws/sudo/ |
| Лицензия | лицензия типа ISC |
| Сайт | sudo.ws |
История
Оригинальная версия Sudo была создана Робертом Коггешаллом и Клиффом Спенсером около 1980 года в департаменте информатики Университета штата Нью-Йорк в Буффало. Позже Коггешалл принёс Sudo в Колорадский университет в Боулдере. В период с 1986 по 1993 годы код и функциональность были существенно доработаны сотрудниками IT-отделов факультета компьютерных наук и колледжа инженерии этого университета, включая Тодда Миллера. Современная версия поддерживается и развивается Тоддом Миллером (OpenBSD) с 1994 года, а с 1999 распространяется под лицензией типа ISC.
В ноябре 2009 года Томас Клабёрн прокомментировал слухи о том, что Microsoft якобы запатентовала sudo: по его мнению, опасения были преувеличены, поскольку патент распространялся только на специфический графический интерфейс.
Логотип программы — отсылка к стрипу xkcd, где заказ на сэндвич принимается при команде с sudo[7][8].
Устройство
В отличие от su, для sudo вводится собственный пароль пользователя (при необходимости)[9], а не цельной учётной записи. Это позволяет утверждённым пользователям выполнять команды с повышенными привилегиями, не раскрывая пароль другой учётной записи[10]. Пользователь обычно должен входить в специальные группы («wheel» или «sudo»)[11]. После успешной аутентификации и разрешения доступа из конфигурации запускается требуемая команда. Sudo запоминает успешную аутентификацию для каждого псевдотерминала на заданное (по умолчанию 5 минут) время, что позволяет выполнять несколько команд подряд без повторного ввода пароля[12].
В целях безопасности и аудита sudo может вести журнал исполняемых действий. При попытке запуска без прав пользователю выводится предупреждение, а событие записывается в системный журнал; при соответствующей настройке может быть отправлено уведомление root по почте[13].
Конфигурация
Файл /etc/sudoers содержит перечень пользователей и групп, имеющих право выполнять определённые команды с повышенными привилегиями (от root или другого пользователя). Для редактирования стандартно используется команда sudo visudo. Sudo предоставляет различные параметры настройки: возможность использовать sudo без запроса пароля, разграничение доступа, изменение сообщений о неверном вводе пароля и др[14]. В конфигурации можно включить своеобразную пасхалку — при неверном пароле будут выводиться оскорбительные фразы[15].
Значение и распространение
Ролевое управление доступом (RBAC)
В связке с SELinux sudo позволяет переключаться между ролями в рамках ролевого управления доступом (RBAC)[16].
Инструменты и аналоги
visudo — консольная утилита для безопасного редактирования файла конфигурации sudo: блокирует параллельное редактирование, проверяет корректность синтаксиса.
Sudoedit — программа, являющаяся ссылкой на бинарный файл sudo[17]. При запуске через алиас sudoedit программа ведёт себя так, как будто был передан флаг -e: позволяют редактировать файлы, требующие повышенных прав для записи[18].
Корпорация Microsoft выпустила свою реализацию sudo для Windows в феврале 2024 года. Внешне программа повторяет Unix-реализацию: позволяет исполнять команды с повышенными правами из обычной сессии (без полного администратора), хотя реализована иным способом[19]. Утилита runas выполняет сходные функции в Windows, однако не позволяет передавать рабочий каталог, переменные окружения или длинные команды. В Hamilton C shell реализованы «настоящие» su и sudo с поддержкой этих возможностей — запуск от другого пользователя, с повышением прав или и то, и другое одновременно[20][21].
Графические интерфейсы для sudo (например, gksudo) существуют, но устарели (убраны из Debian и Ubuntu)[22][23]. Другие интерфейсы, такие как pkexec (Unix), User Account Control в Microsoft Windows и Authorization Services в macOS, являются аналогами: предоставляют временное повышение прав для административных задач.
doas — родственная утилита, включённая в OpenBSD с версии 5.8 (октябрь 2015) взамен sudo (сама sudo доступна через ports-коллекцию)[24].
gosu — похожий инструмент, популярный в контейнерных средах, где полноценный терминал недоступен или где запуск sudo нежелателен[25].
Переписанная версия sudo на Rust, называющаяся sudo-rs, была принята как дефолтная в Ubuntu[26].
Примечания
- ↑ Interview: Inventing The Unix "sudo" Command (англ.). Hackaday (28 мая 2014). Дата обращения: 10 января 2022. Архивировано 10 января 2022 года.
- ↑ Aaron Toponce : The Meaning of 'su'. Дата обращения: 18 августа 2015. Архивировано 24 февраля 2023 года.
- ↑ What is Sudo. Дата обращения: 7 июня 2022. Архивировано 3 июня 2022 года.
- ↑ su(1) Linux manual page. Дата обращения: 8 июня 2022. Архивировано 5 июня 2022 года.
- ↑ Sudo - ArchWiki. wiki.archlinux.org. Дата обращения: 9 ноября 2015. Архивировано 25 апреля 2021 года.
- ↑ Haeder, A.; Schneiter, S. A..; Pessanha, B. G.; Stanger, J. LPI Linux Certification in a Nutshell. O’Reilly Media, 2010. с. 409. ISBN 978-0596804879.
- ↑ Sandwich. Дата обращения: 11 апреля 2022. Архивировано 9 апреля 2022 года.
- ↑ Sudo Logo. Дата обращения: 11 апреля 2022. Архивировано 27 апреля 2022 года.
- ↑ About Unix sudo and su commands. University Information Technology Services (18 июня 2019). Дата обращения: 10 сентября 2022. Архивировано 10 сентября 2022 года.
- ↑ Wallen, Jack Linux security: What is sudo and why is it so important? (англ.). ZDNET (16 мая 2023). Дата обращения: 23 января 2024. Архивировано 23 мая 2022 года.
- ↑ Aleksic, Marko Linux Sudo Command, How to Use With Examples (амер. англ.). Knowledge Base by phoenixNAP (18 августа 2020). Дата обращения: 23 января 2024. Архивировано 20 сентября 2020 года.
- ↑ Sheldon, Robert What is the sudo (su 'do') command-line utility? – TechTarget Definition (англ.). TechTarget Security (февраль 2023). Дата обращения: 23 января 2024. Архивировано 26 июля 2025 года.
- ↑ Where are sudo Incidents Reported? (англ.). Дата обращения: 10 апреля 2023. Архивировано 9 апреля 2023 года.
- ↑ Wallen, Jack Linux 101: Introduction to sudo (амер. англ.). Linux.com (12 мая 2010). Дата обращения: 23 января 2024. Архивировано 2 июня 2020 года.
- ↑ Kili, Aaron Let Sudo Insult You When You Enter Incorrect Password (амер. англ.). www.tecmint.com (12 января 2017). Дата обращения: 23 января 2024. Архивировано 17 августа 2025 года.
- ↑ SELinux Lockdown Part Five: SELinux RBAC. Дата обращения: 17 ноября 2012. Архивировано 11 мая 2013 года.
- ↑ Bennett, Jonathan This Week In Security: Sudo, Database Breaches, And Ransomware (амер. англ.). Hackaday (29 января 2021). Дата обращения: 24 мая 2021. Архивировано 21 июня 2021 года.
- ↑ sudoedit(8) - Linux manual page. man7.org. Дата обращения: 24 мая 2021. Архивировано 24 мая 2021 года.
- ↑ Adoumie, Jordi Introducing Sudo for Windows! (амер. англ.). Windows Command Line (7 февраля 2024). Дата обращения: 8 февраля 2024. Архивировано 28 сентября 2025 года.
- ↑ su. Hamilton Laboratories. Дата обращения: 17 августа 2015. Архивировано 17 июля 2015 года.
- ↑ Predefined aliases: sudo. Hamilton Laboratories. Дата обращения: 17 августа 2015. Архивировано 26 августа 2015 года.
- ↑ Bicha, Jeremy Remove gksu from Ubuntu. Canonical, Launchpad (30 декабря 2017). Дата обращения: 10 января 2020. Архивировано 5 мая 2020 года.
- ↑ Software Packages in "bionic". Canonical. Дата обращения: 10 января 2020. Архивировано 18 октября 2019 года.
- ↑ sudo-1.8.26 – execute a command as another user. OpenBSD ports (16 ноября 2018). Дата обращения: 26 февраля 2019. Архивировано 27 февраля 2019 года.
- ↑ gosu. GitHub. Архивировано 14 августа 2025 года.
- ↑ Memory-safe sudo to become the default in Ubuntu (5 июня 2025). Архивировано 22 августа 2025 года.