Зачем нужен sudo
В Linux у обычного пользователя ограниченные права, а полный контроль над системой имеет суперпользователь root. Работать под ним постоянно опасно: любая опечатка или вредоносная команда получает неограниченные возможности. Поэтому в большинстве дистрибутивов вход под root отключён или не рекомендуется, а нужные действия выполняют через sudo.
Слово означает «выполнить от имени» (superuser do). Команда, введённая после sudo, запускается с правами root или другого указанного пользователя, а остальное время вы работаете в обычном режиме.
Дополнительное преимущество: в журнале остаётся след о выполненных действиях с привязкой к конкретному пользователю. Работа под общей учётной записью root такой ответственности не обеспечивает, и разобраться в инциденте потом намного труднее.
Как это устроено
При вызове sudo система проверяет по файлу настроек, разрешено ли вам запускать эту команду. Затем просит ваш собственный пароль, а не пароль root, и запоминает подтверждение на несколько минут, чтобы не спрашивать снова. Каждое использование обычно записывается в системный журнал, что помогает отследить, кто и что делал.
Правила хранятся в файле sudoers. Его редактируют только специальной командой visudo: она проверяет синтаксис перед сохранением, ведь ошибка в файле может лишить всех прав на администрирование.
Файл sudoers допускает включать дополнительные файлы из отдельной папки, что удобно для автоматизации: каждый администратор или программа добавляет свои правила отдельным файлом, не трогая основной. Права на такие файлы задаются строго, иначе sudo откажется их читать.
Кто получает такое право
В Debian-подобных системах разрешение обычно даётся членам группы sudo, в семействе Red Hat — группы wheel. Право можно ограничить одной командой или набором команд, например разрешить перезапуск конкретной службы без общих прав. Так реализуется принцип наименьших привилегий: каждому только то, что ему нужно.
Отдельный режим — sudo -i или sudo su, открывающий оболочку root; им пользуются реже и осторожнее, ведь всё введённое далее выполняется с полными правами.
Где встречается на практике: sudo
Установка и удаление программ, редактирование системных настроек, управление службами, монтирование дисков, просмотр защищённых журналов — во всём этом нужен sudo. В инструкциях он стоит перед командами, которые меняют систему. Перед запуском чужого скрипта с sudo стоит прочитать его: он получит права над всем компьютером.
В контейнерах и облачных образах пользователь по умолчанию может быть root, и там sudo не нужен, но это не делает работу безопаснее.
Желательно также ограничивать срок действия подтверждения пароля и отключать пароль только для проверенных сценариев автоматизации: постоянный доступ без пароля повышает риск, если учётная запись будет взломана.
Заблуждения: sudo
«sudo — это взлом системы». Нет, это штатный механизм, а права выдаёт администратор. «Sudo защищает пароль root». В большинстве систем root-пароль вообще не задан. «Добавление sudo к команде поможет, если не работает». Часто причина ошибки не в правах, а в неверном пути или отсутствии программы, а лишний sudo создаёт файлы, принадлежащие root, и потом мешает обычной работе.
Осторожность нужна с командами удаления: sudo rm с ошибкой в пути способна стереть системные файлы без всякой защиты.
Если нужно отредактировать системный файл, используйте sudo вместе с текстовым редактором либо специальную команду sudoedit: она открывает временную копию с правами пользователя и только затем записывает изменения.
Как проверить свои права
Выполните sudo -l: он выведет, какие команды вам разрешены. Команда id покажет ваши группы, включая sudo или wheel. Чтобы увидеть журнал использования, откройте системный журнал аутентификации, например через journalctl с фильтром по sudo либо файл auth.log в системах, где он есть. Для тренировки запускайте безопасные команды вроде sudo whoami — она должна вернуть root.
Если команда отвечает, что вас нет в файле sudoers, значит, права не выданы и попытка будет записана в журнал. Обратитесь к администратору системы или, на собственном компьютере, добавьте пользователя в нужную группу.