Что означает ошибка sudo: command not found
Когда вы пытаетесь выполнить команду с sudo, а система выводит sudo: command not found, это означает, что ваша оболочка (shell) не может найти исполняемый файл sudo в директориях, перечисленных в переменной PATH. Ошибка обычно появляется сразу после ввода команды:
$ sudo apt update
bash: sudo: command not found
Без sudo вы не сможете выполнять операции, требующие прав суперпользователя (установка пакетов, изменение системных файлов, управление службами). Это критичная проблема для администрирования системы.
Причины возникновения
- Пакет
sudoне установлен. В минимальных установках (Docker-контейнеры, некоторые сборки вроде Alpine, или ручная настройка)sudoчасто отсутствует по умолчанию. - Переменная
PATHповреждена или не включает стандартные пути. Если вPATHнет/usr/bin(стандартная директория дляsudo), shell его не найдёт. - Файл
sudoудалён или повреждён. Редко, но возможно случайное удаление или повреждение бинарного файла/usr/bin/sudo. - Система в режиме восстановления или chroot. В некоторых окружениях (например, при загрузке в rescue mode)
sudoможет быть отключён.
Способ 1: Установите пакет sudo (если он отсутствует)
Сначала проверьте, установлен ли sudo:
which sudo
# или
command -v sudo
Если команда ничего не выводит — sudo не установлен или не в PATH. Установите его, используя root-доступ (через su или напрямую если вы вошли как root).
Для Ubuntu/Debian:
su -c "apt update && apt install sudo"
Для RHEL/CentOS 7:
su -c "yum install sudo"
Для RHEL/CentOS 8+/Fedora:
su -c "dnf install sudo"
Для Arch Linux:
su -c "pacman -S sudo"
После установки проверьте which sudo — команда должна вернуть /usr/bin/sudo.
Способ 2: Проверьте и исправьте переменную PATH
Если sudo установлен (например, вы уверены, что пакет есть), но команда не находится, проблема в PATH.
echo $PATH
Убедитесь, что в выводе есть /usr/bin. Обычно sudo находится именно там (/usr/bin/sudo). Если пути нет:
Временное исправление (действует до перезагрузки):
export PATH=$PATH:/usr/bin
Постоянное исправление:
- Откройте файл
~/.bashrc(для bash) или~/.zshrc(для zsh). - Добавьте строку:
export PATH=$PATH:/usr/bin - Примените изменения:
source ~/.bashrc
Способ 3: Переустановите или восстановите пакет sudo
Если sudo установлен, но файл повреждён (например, после сбоя обновления), переустановите пакет:
- Ubuntu/Debian:
su -c "apt --reinstall install sudo" - RHEL/CentOS:
su -c "yum reinstall sudo" # или для dnf: su -c "dnf reinstall sudo" - Arch Linux:
su -c "pacman -S sudo"
После переустановки проверьте целостность файла:
ls -l /usr/bin/sudo
Права должны включать setuid-бит (например, -rwsr-xr-x). Если нет, исправьте:
su -c "chmod 4755 /usr/bin/sudo"
Способ 4: Добавьте пользователя в группу sudo (если права не настроены)
Хотя отсутствие группы sudo обычно вызывает ошибку "user is not in the sudoers file", в некоторых дистрибутивах (или при кастомной настройке) это может привести к отсутствию команды в PATH. Если sudo установлен и в PATH, но не работает, проверьте группы:
groups
Если в списке нет sudo (или wheel в RHEL/CentOS), добавьте пользователя:
- Через root (если sudo недоступен):
su -c "usermod -aG sudo $USER" - Если sudo уже работает частично:
sudo usermod -aG sudo $USER
После этого выйдите и зайдите снова, или выполните:
newgrp sudo
Профилактика
- Не удаляйте пакет
sudoбез крайней необходимости. В минимальных установках (например, Docker) используйтеsuили запускайте контейнер с root-правами (docker run -u 0). - Будьте осторожны при редактировании
PATH. Всегда проверяйте, что стандартные пути (/usr/bin,/bin) присутствуют. - Регулярно обновляйте систему (
apt update && apt upgrade), чтобы избежать повреждения пакетов. - Проверяйте целостность пакетов после сбоев:
apt verify sudo(Debian/Ubuntu) илиrpm -V sudo(RHEL/CentOS).
Если проблема остаётся, проверьте, не находитесь ли вы в chroot-окружении или режиме восстановления — там sudo часто недоступен по design. В таких случаях используйте su или войдите как root.