Ошибка su: must be suid to work properly появляется при попытке переключиться на другого пользователя командой su и означает, что у исполняемого файла su сброшен SUID-бит — специальный флаг, позволяющий запускать программу с правами её владельца (root). Без этого флага утилита физически не может повысить привилегии и отказывается работать, выводя именно это сообщение.
Чаще всего проблема возникает после некорректного копирования системных файлов, восстановления из бэкапа без сохранения прав, ручного «исправления» разрешений командой chmod или сбоя файловой системы. Реже виновником оказывается монтирование раздела с опцией nosuid. Ниже разберём, как диагностировать причину и безопасно вернуть su работоспособность.
Что такое SUID-бит и зачем он нужен команде su
SUID (Set User ID) — это специальный бит разрешений в Linux и других Unix-подобных системах. Когда он установлен на исполняемом файле, процесс запускается с правами владельца файла, а не с правами пользователя, который его запустил. Поскольку владельцем /bin/su является root, любой пользователь, запустивший su, временно получает возможность сменить учётную запись — конечно, после ввода правильного пароля.
Утилита su специально спроектирована так, чтобы отказываться работать без SUID-бита: это защитный механизм. Если бы программа запускалась без повышенных прав, она не смогла бы выполнить смену UID, а попытка работы в «половинчатом» режиме создала бы ложное ощущение безопасности. Поэтому вместо тихого сбоя вы видите понятное сообщение об ошибке.
Аналогично устроены и другие системные утилиты, требующие повышения привилегий: passwd, sudo, mount, ping (в некоторых дистрибутивах). Сброс SUID на любом из них вызывает похожие симптомы.
Как проверить права на файл su
Первый шаг диагностики — посмотреть текущие разрешения файла. Выполните в терминале:
ls -l /bin/suВ некоторых дистрибутивах файл располагается по пути /usr/bin/su, а /bin является символической ссылкой на /usr/bin — это нормально. Корректный вывод должен выглядеть примерно так:
-rwsr-xr-x 1 root root ... /bin/suКлючевой признак — буква s вместо x в блоке прав владельца (rws). Если вы видите -rwxr-xr-x без буквы s, значит, SUID-бит сброшен, и именно это вызывает ошибку.
- 🔍 -rwsr-xr-x root root — нормальное состояние, SUID установлен
- ⚠️ -rwxr-xr-x root root — SUID сброшен, su работать не будет
- ❓ Владелец не root — серьёзная проблема, возможно, файлы восстанавливались из бэкапа без сохранения владельцев
- 📁 Файл отсутствует — пакет утилиты мог быть удалён или повреждён