Команда su в Linux
Команда Linux su (полное английское название: switch user) используется для смены идентификатора пользователя. Кроме root, необходимо ввести пароль этого пользователя.
Права: все пользователи.
Синтаксис
su [选项] [用户名]
Например:
su # 切换到root,保持当前环境 su - # 切换到root,加载root的完整环境 su root # 明确指定切换到root用户
Переключиться на другого пользователя:
su username su - username su -l username
Описание параметра:
-или-lили--login: Обеспечить среду, аналогичную прямому входу-c command: Выполнить указанную команду и затем выйти-s shell: Указать используемую оболочку-pили--preserve-environment: Сохранить текущие переменные среды
Примеры
Временно выполнить команду от имени root:
su -c "apt update && apt upgrade" root
Переключиться на служебного пользователя для отладки:
su - www-data su -s /bin/bash www-data # 如果默认shell是/bin/false
Использование в скриптах:
su - postgres -c "psql -c 'SELECT version();'"
Выход из сеанса su:
exit # 退出当前su会话 Ctrl+D # 同样可以退出
Разница между su и su -
su(Переключатель без входа в систему):
- Сохраняет переменные окружения текущего пользователя
- Рабочий каталог не изменяется
- Переменные окружения, такие как PATH, остаются неизменными
su -(Переключатель входа в систему):
- Загружает полное окружение целевого пользователя
- Переключается в домашний каталог целевого пользователя
- Сбрасывает переменные окружения, такие как PATH и HOME
- Выполняет сценарии входа целевого пользователя
Пример сравнения
# 当前用户:john,工作目录:/home/john pwd # /home/john echo $HOME # /home/john su root pwd # /home/john (目录未变) echo $HOME # /home/john (环境未变) exit su - root pwd # /root (切换到root家目录) echo $HOME # /root (完整环境) exit
Разница между su и sudo
| Характеристика | su | sudo |
|---|---|---|
| Требуется пароль | Пароль целевого пользователя | Пароль текущего пользователя |
| Длительность сеанса | До ручного выхода | Одна команда или кратковременное кэширование |
| Сложность конфигурации | Простая | Требуется настройка sudoers |
| Безопасность | Необходимо знать пароль root | Более тонкий контроль разрешений |
| Аудит | Ограниченно | Более подробные журналы |
Хотя команда su проста и прямолинейна, sudo обычно является более рекомендуемым выбором в современном системном администрировании, поскольку обеспечивает лучшую безопасность и возможности аудита.
Вопросы безопасности
- Избегайте совместного использования пароля root
- Используйте
su -Обеспечьте полное переключение окружения - Своевременно завершайте сеансы su
- Отдавайте приоритет использованию sudo в производственных средах
- Отслеживайте журналы использования su (обычно в /var/log/auth.log)
Коллекция команд Linux