Вы когда-нибудь замечали, как старые добрые инструменты внезапно начинают подводить? Я помню, как однажды на сервере внезапно отказал sudo – пришлось загружаться в recovery mode и править файлы вручную. Причина? Очередная уязвимость в коде, написанном на C ещё в прошлом веке. Тогда я задумался: неужели мы навсегда привязаны к этому монолиту?
Оказывается, нет. В мире Linux тихо, но уверенно набирает обороты новая реализация – sudo-rs. Это не просто обновление, а полная перестройка критического механизма повышения привилегий на современном языке Rust. В этой статье я расскажу, как это меняет правила игры, как установить и настроить sudo-rs и почему даже Canonical с Fedora переходят на него.
Безопасность памяти – ахиллесова пята классического sudo
Чтобы понять ценность sudo-rs, нужно вспомнить, на чём написан оригинал. Язык C даёт разработчику полный контроль над памятью, но платой за это стали десятилетия багов: переполнение буфера, обращение к освобождённой памяти, гонки данных. Эти ошибки – идеальные ворота для злоумышленников. Именно через них были обнаружены недавние CVE-2025-32462 и CVE-2025-32463, которые позволяли обойти ограничения и даже получить root-оболочку.
Rust, напротив, компилируется с жёсткими проверками заимствований. Если код пытается сделать что-то опасное – он просто не соберётся. Это не панацея, но устраняет целые классы уязвимостей на этапе компиляции, не жертвуя производительностью.
Что такое sudo-rs и зачем он нужен
sudo-rs – это самостоятельная реализация утилит sudo и su, написанная с нуля командой Trifecta Tech Foundation. Она не форк, не обёртка – это полностью новый код, который парсит /etc/sudoers и управляет политиками, но делает это безопаснее.
Проект уже прошёл два независимых аудита (2023 и 2025) и получил благословение крупных дистрибутивов. Начиная с Ubuntu 25.10 и Fedora, sudo-rs либо включён по умолчанию, либо доступен в репозиториях.
Как проверить, что у вас стоит – и поставить новинку
Первым делом заглянем в терминал. Выполните:
sudo --version
Если вы видите Sudo version 1.9... – это классика. Если sudo-rs 0.2... – вы уже на новом движке.
Узнать, установлен ли пакет sudo-rs, можно так:
dpkg -l | grep sudo-rs
Скорее всего, вы увидите пустой вывод – это означает, что пакета нет. Не беда, установка проста:
Ubuntu / Debian (последние версии)
sudo apt update && sudo apt install sudo-rs
Arch Linux
sudo pacman -S sudo-rs
Fedora
sudo dnf install sudo-rs
После установки команды появятся как sudo-rs, visudo-rs и т.д. Чтобы заменить стандартные sudo и visudo на новые, можно воспользоваться механизмом альтернатив (в Ubuntu) или вручную прописать путь /usr/lib/cargo/bin в начало $PATH.
Настройка sudoers – почти без изменений
Хорошая новость: конфигурационный файл остался тем же. Если у вас есть сложные правила в /etc/sudoers, они будут работать. Правда, sudo-rs сначала ищет /etc/sudoers-rs, и только при его отсутствии читает классический файл. Так что можете создать копию для нового синтаксиса.
Редактировать файл лучше через специальную команду, которая проверяет синтаксис:
sudo visudo-rs
Пример записи, разрешающей пользователю admin всё:
admin ALL=(ALL:ALL) ALL
А если нужно, чтобы группа wheel могла выполнять любые команды без пароля (для автоматизации, например):
%wheel ALL=(ALL) NOPASSWD: ALL
Или строго ограничить одну команду:
webadmin ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Что изменилось для администратора – главные отличия
На первый взгляд – ничего. Вы по-прежнему набираете sudo, и команда выполняется. Но копнём глубже:
- Приглашение пароля теперь звучит как [sudo: authenticate] Password:, а не [sudo] password for user:. Если у вас есть Expect-скрипты, которые парсят вывод, придётся их подправить.
- Звёздочки при вводе пароля отображаются по умолчанию – в старом sudo это включалось опцией.
- Отсутствие некоторых фич: пока нет логирования ввода-вывода (sudoreplay), поддержки LDAP для sudoers и отправки почты. Но разработчики обещают добавить всё в следующих релизах
Тем не менее, для 90% повседневных задач функциональности достаточно.
Переключение между реализациями – если что-то пошло не так
Допустим, вы установили sudo-rs, но какой-то скрипт сломался. Можно быстро вернуть старый добрый sudo.
В Ubuntu с системой альтернатив:
# переключиться на классический
sudo update-alternatives --set sudo /usr/bin/sudo.ws
# вернуть автоматический выбор (обычно sudo-rs)
sudo update-alternatives --auto sudo
В других дистрибутивах можно создать симлинк или просто вызывать sudo-rs напрямую, а классический оставить как sudo.orig.
Аудит безопасности – сухие цифры и факты
Проект дважды проверяли независимые эксперты: в августе 2023 (версия 0.2.0) и в августе 2025 (версия 0.2.8). Отчёты открыты – их можно найти в репозитории. Особенно впечатляет, что найденные в классике уязвимости (CVE-2025-32462, CVE-2025-32463) в sudo-rs были исправлены оперативно, без многолетнего «созревания».
Пример из жизни: как я перенёс свои скрипты
У меня есть несколько Expect-скриптов для автоматического бэкапа. После перехода на sudo-rs они перестали работать, потому что ждали строку [sudo] password for. Я просто добавил флаг --prompt "" и переписал ожидание на [sudo: authenticate]. Всё заработало.
sudo --prompt "" systemctl restart mysql
Или в Expect:
expect "[sudo: authenticate]"
send "$password\r"
Теперь автоматизация снова в строю.
Итог – стоит ли переходить?
Однозначно – да, если вы используете современный дистрибутив. Это не маркетинговый ход, а реальное повышение безопасности с минимальными затратами на миграцию. Вы получаете надёжный инструмент, который защищает ваши серверы от целого класса ошибок, не требуя переучивания.
Просто проверьте свои скрипты, протестируйте на тестовой машине и смело переключайтесь.
→ Оригинал статьи и другие шпаргалки на [roadit.ru].
⚙️ Паровой конденсатор знаний
Эта статья — лишь капля в нашем резервуаре.
Если хотите освоить системное администрирование до уровня старшего механика, загляните в ROADIT — там собраны полные шпаргалки, Roadmap’ы и обзоры софта без воды.
[👉 Перейти в машинной отделение]
📡 И подписывайтесь на наш Дзен, чтобы не пропустить новые инструкции.