Понимание разницы между sudo и su в Linux: Полное руководство для начинающих
Понимание разницы между sudo и su в Linux: Полное руководство для начинающих
В администрировании систем Linux sudo и su — это две из самых часто используемых команд для управления правами пользователей. Хотя обе команды используются для получения повышенных (root) прав, они работают совершенно по-разному. Многие новички — и даже опытные пользователи — путают эти две команды, что может привести к рискам безопасности или ошибкам разрешений.
В этом руководстве мы разберем, что на самом деле делают sudo и su, как они отличаются, когда следует использовать каждую из них и лучшие практики для безопасного использования.
Что такое su в Linux?
su означает заменить пользователя или переключиться на пользователя. Он позволяет вам переключаться с вашей текущей учетной записи пользователя на другую учетную запись пользователя, чаще всего на пользователя root.
Основной синтаксис
suЭта команда переключает вас на пользователя root. Вам будет предложено ввести пароль root, а не ваш собственный.
Вы также можете переключиться на другого пользователя так:
su usernameЧто происходит после su?
Вы входите в новую сессию оболочки
Вы полностью становитесь целевым пользователем (часто root)
Все команды выполняются с полными правами root
Вы остаетесь в окружении этого пользователя, пока не выйдете
Чтобы выйти из сессии su:
exitЧто такое sudo в Linux?
sudo означает superuser do. Он позволяет разрешенному пользователю выполнять одну команду с повышенными правами, не переключаясь на другого пользователя.
Основной синтаксис
sudo commandПример:
sudo apt updateЭто выполняет apt update с правами root, оставаясь при этом в системе под вашей обычной учетной записью.
Ключевые характеристики sudo
Использует ваш собственный пароль, а не пароль root
Выполняет одну команду за раз
Действия записываются в журнал
Права контролируются через /etc/sudoers
Основные различия между sudo и su
| Особенность | su | sudo |
|---|---|---|
| Требует пароль root | ✅ Да | ❌ Нет |
| Использует пароль текущего пользователя | ❌ Нет | ✅ Да |
| Входит в полную сессию root | ✅ Да | ❌ Нет |
| Выполняет только одну команду | ❌ Нет | ✅ Да |
| Запись команд | ❌ Нет | ✅ Да |
| Тонкая настройка прав | ❌ Нет | ✅ Да |
| Безопаснее для повседневного использования | ❌ Нет | ✅ Да |
Последствия для безопасности
Риски безопасности su
Любой, у кого есть пароль root, имеет полный неограниченный контроль
Нет записи на уровне команд
Высокий риск на общих системах
Если система будет скомпрометирована, злоумышленник получит постоянную сессию root
Преимущества безопасности sudo
У каждого пользователя есть индивидуальные правила разрешений
Каждая команда записывается в журнал
Ограниченный доступ (по умолчанию не полный root)
Учетная запись root может оставаться отключенной
Когда следует использовать su?
Используйте su только когда:
Вы работаете в локальной контролируемой среде
Вам нужна полная среда root для длительного обслуживания
Вы полностью доверяете всем, у кого есть пароль root
Вы выполняете задачи восстановления системы
Пример:
su -(- загружает полную среду root)
Когда следует использовать sudo?
Используйте sudo, когда:
Вы работаете на облачных серверах и системах VPS
Несколько пользователей делят сервер
Вы хотите журналы аудита
Вы хотите следовать лучшим практикам безопасности Linux
Распространенные примеры:
sudo systemctl restart nginx
sudo ufw allow 443
sudo mount /dev/sdb1 /mnt/dataКак добавить пользователя в группу sudo
На большинстве систем на базе Ubuntu/Debian:
sudo usermod -aG sudo usernameНа CentOS/RHEL:
sudo usermod -aG wheel usernameПосле этого пользователь сможет использовать sudo.
Можете ли вы использовать sudo, чтобы стать root?
Да, используя:
sudo -iили
sudo suЭто дает вам оболочку root, но доступ все еще отслеживается через журналы sudo, что безопаснее, чем su.
Лучшие практики для использования sudo и su
✅ Отключите прямой вход root на серверах
✅ Используйте sudo для повседневного администрирования
✅ Предоставляйте пользователям минимально необходимые права
✅ Никогда не делитесь паролем root
✅ Регулярно проверяйте /var/log/auth.log
sudo против su в VPS и облачных средах
На большинстве платформ VPS и облачных серверов:
Вход root часто отключен по умолчанию
Пользователям предоставляется доступ к sudo вместо этого
Это позволяет провайдерам:
безопасность
Отслеживать действия администраторов
Снизить риск злоупотреблений
Если вы управляете несколькими серверами (например, развертываниями VPS за границей), эта настройка теперь является стандартом в отрасли.
Часто задаваемые вопросы
- Почему Linux сейчас предпочитает sudo вместо su?
Потому что sudo обеспечивает лучшую безопасность, отслеживание команд и контроль на уровне пользователя без раскрытия пароля root.
- Опасно ли всегда использовать su?
Да. su предоставляет неограниченный доступ root и не оставляет следов того, какие команды были выполнены каким пользователем.
- Что произойдет, если я забуду пароль root, но у меня есть sudo?
Вы можете сбросить пароль root, используя:
sudo passwd root- Могу ли я полностью отключить пользователя root?
Да. На Ubuntu:
sudo passwd -l root- Почему мой VPS не позволяет su, но позволяет sudo?
Потому что провайдер отключил прямой вход root по соображениям безопасности и заставляет повышать привилегии через sudo.
Заключительные мысли
Если вы управляете серверами Linux в современных условиях — особенно в инфраструктуре VPS и облака — sudo всегда является рекомендуемым и более безопасным выбором для администрирования системы. su все еще имеет свое место, но его следует использовать осторожно и только в крайних случаях.
Понимание разницы не только улучшает ваш рабочий процесс, но и защищает ваши серверы от дорогостоящих ошибок безопасности.