
Команда su в Linux позволяет временно перейти на учетную запись другого пользователя, чаще всего root, для выполнения задач с повышенными привилегиями. Правильная настройка su снижает риск несанкционированного доступа и упрощает управление системой.
Перед использованием su необходимо убедиться, что root имеет установленный пароль и пользователи, которым разрешен доступ, включены в группу wheel или sudo. Без этих действий команда не будет работать корректно для повышения привилегий.
Для ограниченного доступа к su можно редактировать файл /etc/pam.d/su, добавляя или исключая пользователей. Это позволяет создать строгую политику управления правами без изменения глобальных настроек системы.
Логирование всех команд, выполненных через su, через /var/log/secure или аналогичные журналы, помогает отслеживать действия пользователей с повышенными правами и выявлять потенциальные угрозы безопасности.
Использование su для отдельных команд вместо полной смены пользователя уменьшает риск случайных изменений системы и позволяет выполнять административные задачи точечно, сохраняя текущую пользовательскую сессию.
Проверка наличия команды su и прав суперпользователя

Для начала работы с su важно убедиться, что команда установлена и доступна в системе. Выполните команду which su или type su в терминале. Если команда возвращает путь, например /bin/su, su установлена. Если путь не возвращается, необходимо установить пакет util-linux через менеджер пакетов вашей системы.
Следующий шаг – проверка прав суперпользователя. Выполните id в терминале. Для root должно отображаться uid=0(root). Для обычного пользователя доступ к su определяется наличием в группе wheel (Red Hat, CentOS) или sudo (Debian, Ubuntu).
Для наглядной проверки можно использовать таблицу соответствий пользователя и прав:
| Пользователь | UID | Группа | Доступ к su |
|---|---|---|---|
| root | 0 | wheel/root | Полный |
| user1 | 1001 | wheel | Разрешен |
| user2 | 1002 | users | Запрещен |
Если пользователь не имеет доступа, его добавляют в соответствующую группу с помощью команды usermod -aG wheel username или usermod -aG sudo username. После изменения групп потребуется новая сессия для применения прав.
Изменение пароля root для использования su

Для использования su доступ к учетной записи root обязателен. Изменение пароля root выполняется командой passwd. Выполните sudo passwd root для систем с sudo или войдите под root и используйте passwd без префикса sudo.
Система запросит новый пароль дважды. Рекомендуется использовать комбинацию из не менее 12 символов с буквами разных регистров, цифрами и специальными символами, чтобы усложнить подбор пароля.
После изменения пароля root убедитесь, что seLinux или PAM-политики не блокируют вход. В файле /etc/pam.d/su должна быть разрешена проверка для пользователей, которым разрешено использовать su.
Для проверки правильности изменения выполните su — и введите новый пароль. Если вход выполнен успешно и отображается uid=0(root), пароль установлен корректно, и команда su готова к работе.
Добавление пользователей в группу sudo или wheel
Доступ к команде su для обычного пользователя зависит от его членства в группе wheel (Red Hat, CentOS) или sudo (Debian, Ubuntu). Чтобы добавить пользователя, выполните команду usermod -aG wheel username или usermod -aG sudo username в зависимости от дистрибутива.
После добавления пользователя в группу необходимо завершить текущую сессию и войти заново, чтобы новые права вступили в силу. Проверить членство можно командой groups username, которая покажет все группы, в которых состоит пользователь.
Для массового добавления нескольких пользователей используйте скрипт с циклом: for user in user1 user2; do usermod -aG sudo $user; done. Это ускоряет процесс на серверах с большим числом учетных записей.
Важно контролировать список членов группы wheel или sudo, чтобы исключить пользователей, которым не требуется доступ к su. Проверка выполняется командой getent group wheel или getent group sudo.
Ограничение доступа к su для конкретных пользователей

Ограничение доступа к команде su выполняется через конфигурацию PAM. Файл /etc/pam.d/su содержит строки, определяющие, какие группы могут использовать su. Для запрета доступа всем, кроме определенной группы, используйте auth required pam_wheel.so use_uid.
Чтобы исключить конкретного пользователя, создайте отдельную группу, добавьте в нее разрешенных пользователей и укажите эту группу в PAM через параметр group=название_группы. Пользователи вне группы не смогут выполнить su.
После изменений необходимо протестировать доступ, выполнив su — от имени пользователя, для которого ограничение применено. Если команда возвращает permission denied, настройка работает корректно.
Для систем с sudo также можно ограничить доступ через файл /etc/sudoers, добавляя строки вида username ALL=(ALL) ALL только для выбранных пользователей, оставляя остальных без привилегий.
Настройка логирования команд через su

Логирование действий через su позволяет отслеживать, какие команды выполняются с повышенными правами, и идентифицировать потенциальные нарушения безопасности. Основной инструмент – системный журнал, обычно /var/log/secure или /var/log/auth.log в зависимости от дистрибутива.
Для настройки логирования:
- Откройте файл /etc/pam.d/su.
- Убедитесь, что присутствует строка auth required pam_wheel.so use_uid для контроля группы.
- Добавьте строку session required pam_tty_audit.so enable для аудита команд.
- Перезапустите службу журналирования, например, systemctl restart rsyslog.
После настройки проверка логов выполняется командой:
- tail -f /var/log/secure или tail -f /var/log/auth.log для просмотра в реальном времени.
- Использование ausearch -m USER_CMD для поиска конкретных команд через auditd.
- Фильтрация по пользователю: grep ‘username’ /var/log/secure.
Рекомендуется периодически архивировать логи и применять ротацию через logrotate, чтобы сохранить историю действий пользователей и избежать переполнения файлов журналов.
Использование su для выполнения отдельных команд без полной смены пользователя
Команда su позволяет выполнять отдельные команды от имени другого пользователя, не переходя полностью на его сессию. Это уменьшает риск случайных изменений в системе и сохраняет текущую рабочую среду.
Синтаксис для выполнения команды от root или другого пользователя:
- su -c ‘команда’ – выполняет команду от root, запрашивая пароль root.
- su username -c ‘команда’ – выполняет команду от указанного пользователя.
- su — username -c ‘команда’ – выполняет команду с полным окружением указанного пользователя.
Примеры использования:
- su -c ‘apt update’ – обновление пакетов без перехода на root.
- su www-data -c ‘php script.php’ – запуск скрипта от имени пользователя веб-сервера.
- su — ubuntu -c ‘mkdir /home/ubuntu/test’ – создание каталога с окружением пользователя ubuntu.
Для регулярного выполнения команд можно использовать скрипты с su и проверкой успешного выполнения через $?. Это позволяет автоматизировать задачи с повышенными привилегиями без полной смены учетной записи.
Отладка и устранение ошибок при работе с su
При проблемах с использованием su сначала проверьте наличие команды и права пользователя. Используйте which su для подтверждения пути к исполняемому файлу и id для проверки uid и группового членства.
Ошибки типа permission denied часто связаны с отсутствием пользователя в группе wheel или sudo. Добавьте пользователя в группу с помощью usermod -aG wheel username или usermod -aG sudo username и откройте новую сессию.
Если команда su не запрашивает пароль или вход невозможен, проверьте настройки PAM в файле /etc/pam.d/su. Строки auth required pam_wheel.so use_uid и session required pam_tty_audit.so enable должны быть корректно прописаны.
Для детальной диагностики используйте:
- strace su — – отслеживание системных вызовов и ошибок файловых прав.
- grep su /var/log/secure или grep su /var/log/auth.log – анализ логов попыток входа.
- getent group wheel или getent group sudo – проверка списка пользователей с правами su.
Регулярная проверка прав и логов позволяет своевременно выявлять конфигурационные ошибки и предотвращать потерю доступа к административным функциям.
Вопрос-ответ:
Как проверить, доступна ли команда su на моем сервере Linux?
Для проверки наличия команды выполните в терминале which su или type su. Если команда возвращает путь, например /bin/su, su установлена. Если путь не найден, установите пакет util-linux через менеджер пакетов вашей системы.
Почему обычный пользователь не может выполнить su?
Ограничение доступа обычно связано с групповой принадлежностью. В системах Red Hat и CentOS пользователи должны входить в группу wheel, в Debian и Ubuntu — в группу sudo. Проверьте членство с помощью команды groups username и добавьте пользователя в группу при необходимости через usermod -aG wheel username или usermod -aG sudo username.
Как безопасно изменить пароль root для использования su?
Чтобы установить или изменить пароль root, выполните sudo passwd root в системах с sudo или passwd после входа под root. Используйте сложный пароль не менее 12 символов с комбинацией букв разных регистров, цифр и специальных символов. После изменения рекомендуется проверить вход через su —.
Можно ли ограничить использование su только для конкретных пользователей?
Да. Для этого редактируют файл /etc/pam.d/su, добавляя строку auth required pam_wheel.so use_uid group=название_группы. В отдельную группу добавляют только тех пользователей, которым разрешен доступ. Остальные пользователи получать права su не будут.
Как вести журнал всех команд, выполняемых через su?
Логирование выполняется через системный журнал. В PAM-файле /etc/pam.d/su включают строки auth required pam_wheel.so use_uid и session required pam_tty_audit.so enable. Просмотр журналов осуществляется через tail -f /var/log/secure или tail -f /var/log/auth.log. Для анализа конкретного пользователя можно использовать grep ‘username’ /var/log/secure.
Как проверить, имеет ли пользователь права для использования команды su?
Проверьте группы пользователя с помощью команды groups username. Для доступа к su в системах Red Hat и CentOS пользователь должен быть в группе wheel, а в Debian и Ubuntu — в группе sudo. Если пользователя нет в нужной группе, добавьте его через usermod -aG wheel username или usermod -aG sudo username и войдите в новую сессию.
Можно ли запускать отдельные команды от имени root без полной смены пользователя через su?
Да. Для выполнения одной команды используйте su -c ‘команда’ для root или su username -c ‘команда’ для другого пользователя. Команда su — username -c ‘команда’ запускает команду с окружением выбранного пользователя. Это позволяет выполнять административные задачи, не изменяя текущую пользовательскую сессию полностью.
