su и sudo дают доступ к привилегиям суперпользователя, но работают по-разному.Что делает su
su (substitute user) переключает текущую сессию на другого пользователя. По умолчанию — на root. При вызове команда запрашивает пароль того пользователя, на которого вы переключаетесь.После ввода пароля
root вы получаете полноценную root-сессию. Все последующие команды выполняются от имени суперпользователя до тех пор, пока вы не выйдете через exit.Если нужно переключиться с загрузкой окружения целевого пользователя, используйте форму с дефисом:
su -
Это загрузит переменные окружения,
$HOME, $PATH и профиль root так, как если бы вы залогинились напрямую.Что делает sudo
sudo (superuser do) выполняет одну конкретную команду с повышенными привилегиями. Пароль запрашивается ваш собственный, а не пароль root.sudo apt update
Команда отработает от имени
root, после чего вы вернётесь в свою обычную сессию. Никакого переключения пользователя не происходит.Список пользователей, которым разрешено использовать
sudo, и допустимые для них команды задаются в файле /etc/sudoers. Редактировать его нужно только через visudo, чтобы избежать синтаксических ошибок, которые могут заблокировать доступ.Ключевые отличия
su требует знать пароль root. sudo требует только ваш пароль и запись в sudoers. Это принципиальная разница с точки зрения безопасности. Раздавать пароль
root нескольким администраторам — плохая практика. С sudo каждый работает под своей учёткой, а все действия логируются с привязкой к конкретному пользователю.su открывает постоянную root-сессию. Забыли выйти — любая случайная команда выполнится с максимальными правами. sudo работает точечно, на одну команду, что снижает риск случайного повреждения системы.Когда что использовать
sudo подходит для большинства задач администрирования. Обновить пакеты, перезапустить сервис, отредактировать конфиг — всё это удобнее и безопаснее делать через sudo.su оправдан, когда нужно выполнить серию команд от root подряд, и переключение в полноценную root-сессию экономит время. Но даже в этом случае можно заменить его на:sudo -i
Эта команда открывает интерактивную root-сессию через механизм
sudo, без необходимости знать пароль root.В современных дистрибутивах
sudo стал стандартом. Ubuntu, например, по умолчанию вообще отключает вход под root и предлагает использовать только sudo. Это безопаснее, прозрачнее для аудита и не требует распространения root-пароля. Используйте
su только если точно понимаете, зачем вам полная root-сессия.📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt