Добавить в корзинуПозвонить
Найти в Дзене
RoadIT

Почему классический sudo уходит в прошлое: настройка sudo-rs и революция в безопасности Linux

Вы когда-нибудь замечали, как старые добрые инструменты внезапно начинают подводить? Я помню, как однажды на сервере внезапно отказал sudo – пришлось загружаться в recovery mode и править файлы вручную. Причина? Очередная уязвимость в коде, написанном на C ещё в прошлом веке. Тогда я задумался: неужели мы навсегда привязаны к этому монолиту? Оказывается, нет. В мире Linux тихо, но уверенно набирает обороты новая реализация – sudo-rs. Это не просто обновление, а полная перестройка критического механизма повышения привилегий на современном языке Rust. В этой статье я расскажу, как это меняет правила игры, как установить и настроить sudo-rs и почему даже Canonical с Fedora переходят на него. Чтобы понять ценность sudo-rs, нужно вспомнить, на чём написан оригинал. Язык C даёт разработчику полный контроль над памятью, но платой за это стали десятилетия багов: переполнение буфера, обращение к освобождённой памяти, гонки данных. Эти ошибки – идеальные ворота для злоумышленников. Именно через
Оглавление

Вы когда-нибудь замечали, как старые добрые инструменты внезапно начинают подводить? Я помню, как однажды на сервере внезапно отказал 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.

-2

Настройка 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
-3

Что изменилось для администратора – главные отличия

На первый взгляд – ничего. Вы по-прежнему набираете 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’ы и обзоры софта без воды.

[👉 Перейти в машинной отделение]

📡 И подписывайтесь на наш Дзен, чтобы не пропустить новые инструкции.