Как сменить пользователя в Ubuntu: su, sudo и повышение привилегий
- 9 ноября 2025 г.
- 22:15
- Уроки

Введение
Управление несколькими пользовательскими аккаунтами и переключение между ними — фундаментальная часть администрирования Linux. Ubuntu — самый популярный Linux-дистрибутив в мире — предлагает несколько способов сменить активного пользователя, каждый со своими случаями применения и последствиями для безопасности. Понимание этих механизмов даёт эффективные многопользовательские сценарии, безопасные административные операции и грамотное управление привилегиями.
Это полное руководство охватывает все способы смены пользователя в Ubuntu — от базовых CLI-приёмов до продвинутых техник эскалации привилегий. Будь то общие системы, административные задачи или мульти-тенантные среды, умение переключать пользователей — ключевой навык для уверенной работы с Ubuntu.
Управление пользователями в Ubuntu
Типы учётных записей пользователей
Обычные пользователи: Стандартные учётные записи с ограниченными привилегиями, ограниченным доступом к файлам и невозможностью изменять системную конфигурацию.
Пользователь root: Суперпользователь с неограниченным доступом ко всем системным ресурсам, способный выполнить любую операцию, включая опасные.
Системные пользователи: Специальные учётные записи для системных служб (www-data для веб-серверов, mysql для баз данных).
Пользователи sudo: Обычные учётные записи с делегированными привилегиями суперпользователя через конфигурацию sudo.
Эскалация привилегий
Why Escalate?: Most administrative tasks require elevated privileges. Rather than logging in as root (dangerous), Ubuntu uses privilege escalation to grant specific elevated permissions temporarily.
Принципы: Выполнять операции с минимально необходимыми привилегиями; минимизировать время повышенного доступа; аудировать все привилегированные операции.
Команда su (Switch User)
Базовый синтаксис
su [OPTIONS] [USERNAME]
Switching to Another Usersu john
Prompts for the target user’s password, then switches to that account. The environment remains the user’s original environment (not recommended).Смена пользователя с новой средой
su - john
The hyphen (-) loads the complete environment of the target user, including:
-
Переменная HOME, указывающая на домашний каталог пользователя
-
Переменная PATH с командными путями пользователя
-
Файлы конфигурации оболочки (.bashrc, .profile)
-
Рабочий каталог изменён на home пользователя
Best Practice: Always use su - to ensure proper environment configuration.
Переключение на пользователя root
su -
Переключает на пользователя root с полной средой root. Запрашивает пароль root.
Параметры команды su
-c (Command): Execute single command as another user without full session
su - john -c "ls -la /home/john"-l (Login): Identical to using hyphen; creates login shell
su --login john
-s (Shell): Указать оболочку для сессии
su - john -s /bin/zsh
-m (Preserve environment): Keep current environment while switching
su -m johnКоманда sudo (Superuser Do)
Базовый синтаксис
sudo [OPTIONS] COMMAND
Выполнение команды с повышенными привилегиями
sudo apt-get update # Update package lists (requires root)sudo systemctl restart ssh # Restart SSH servicesudo reboot # Reboot system
Запуск интерактивной root-оболочки
sudo -i
Запускает интерактивную root-оболочку без входа в систему как root.
Запуск команды от имени другого пользователя
sudo -u username commandВыполняет команду с привилегиями указанного пользователя (не только root).
Параметры команды sudo
-l (List): Display allowed commands
sudo -l
-k (Invalidate): Clear sudo credentials (requires password on next use)
sudo -k
-p (Prompt): Custom password prompt
sudo -p "Enter admin password: " apt-get update-v (Validate): Extend sudo timeoutsudo -v
-H (Home): Set HOME to target user’s home
sudo -H -u username commandsu – vs su: ключевые отличия
| Функция | su | su – |
|---|---|---|
| Среда | Сохраняет окружение родительской оболочки | Загружает среду целевого пользователя |
| Переменная HOME | Остаётся в home исходного пользователя | Переходит в home целевого пользователя |
| Переменная PATH | Может содержать пути исходного пользователя | Содержит стандартные пути целевого пользователя |
| Конфиг оболочки | Не загружает .bashrc или .profile | Загружает ~/.bashrc, ~/.profile |
| Рабочий каталог | Остаётся в текущем каталоге | Переходит в home пользователя |
| Рекомендуется | Редко; возможна путаница | Всегда при смене пользователя |
| Уровень риска | Выше (смешанные среды) | Ниже (чистая среда) |
Пример различия
# С помощью su (BAD)
$ su johnPassword:
$ echo $HOME
/root # Still shows original home!
$ pwd
/path/to/original # Still in original directory# С помощью su - (GOOD)
$ su - johnPassword:
$ echo $HOME
/home/john # Correct home directory$ pwd
/home/john # Correct directoryПереключение на пользователя root
С помощью su
su -
Password: (enter root password)
root@hostname:~#С помощью sudo
sudo -i[sudo] password for john: (enter john's password)
root@hostname:~#Различия между su – и sudo -i
| Аспект | su – | sudo -i |
|---|---|---|
| Требуется пароль | Пароль root | Пароль текущего пользователя |
| Логирование | Не логируется | Регистрируется sudo |
| Аудит-трейл | Минимальный | Полный аудит-трейл |
| Безопасность | Ниже (требует совместного использования пароля root) | Выше (индивидуальная подотчётность) |
| Типичная корпоративная установка | Не рекомендуется | Recommended |
Security Note: Modern Ubuntu systems typically don’t require root password; instead, sudoers are granted authority through sudo configuration.
Запуск команд от имени другого пользователя
Выполнить одну команду
sudo -u apache /usr/bin/apache2ctl restartsu - testuser -c "python /home/testuser/script.py"
Запуск нескольких команд
sudo bash -c "echo 'Line 1' > /tmp/file; cat /tmp/file"
Запуск команд с сохранением текущего каталога
sudo -u john pwd # Prints john's home (working directory changed)sudo -u john -C pwd # Prints current directory (with -C flag)Смена пароля пользователя
Изменить свой пароль
passwdЗапрашивает текущий пароль, затем новый пароль (дважды для подтверждения).
Изменить пароль другого пользователя (требуется root)
sudo passwd john
Текущий пароль не требуется; запрашивает новый пароль (полномочия root).
Установить политику истечения срока
sudo chage -l john # View password aging infosudo chage -M 90 john # Force password change every 90 dayssudo chage -d 0 john # Force password change on next login
Права пользователей и группы
Просмотр групп пользователей
groups john # Show groups current user belongs togroups # Show own groupsid john # Detailed UID, GID, groupsДобавить пользователя в группу
sudo usermod -aG groupname username
Example: Add user to sudo group
sudo usermod -aG sudo john
Удалить пользователя из группы
sudo deluser username groupname
Создать нового пользователя
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
Options:
-
-m: Create home directory -
-s: Specify shell -
-G: Назначить группам
Практические примеры
Example 1: Administrative Task with Эскалация привилегий
#!/bin/bash
# Install software update as regular user with privilege escalation
sudo apt-get updatesudo apt-get upgrade -y
echo "System update complete"
Пример 2: Запуск задач веб-сервера
# Stop web server as specific service user
sudo -u www-data /opt/webapp/stop.sh# Check web server permissions as www-data
sudo -u www-data ls -la /var/www/htmlПример 3: Обслуживание базы данных
# Backup database as specific user
sudo -u mysql mysqldump -u root -p database_name > backup.sql
# Run database optimization
sudo -u mysql mysql -u root -p -e "OPTIMIZE TABLE table_name;"
Пример 4: Пакетное управление пользователями
#!/bin/bash# Create multiple usersfor user in user1 user2 user3; dosudo useradd -m -s /bin/bash "$user"echo "Please set password for $user:"sudo passwd "$user"done# Add all to sudo groupfor user in user1 user2 user3; dosudo usermod -aG sudo "$user"doneСоображения безопасности
Безопасность паролей
Пароль root: Храните в безопасности; никогда не сообщайте ненадёжным лицам
Конфигурация sudo: Делегируйте конкретные привилегии вместо полного доступа root
Срок действия паролей: Принудительно требуйте периодической смены паролей
# Configure password agingsudo chage -M 90 -m 1 -W 7 username
# Forces change every 90 days, minimum 1 day between changes, 7-day warningАудит и журналирование
All sudo commands are logged:
sudo grep COMMAND /var/log/auth.log
View detailed sudo history:
sudo journalctl _COMM=sudoRestricting Эскалация привилегий
Configure sudoers file safely:
sudo visudo # Always use visudo for editing sudoers
Пример конфигурации sudoers (limiting what john can run):
john ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginxjohn ALL=(ALL) /usr/bin/apt-getТайм-аут сессии
# Set sudo timeoutsudo -v # Extend timeoutsudo -k # Invalidate sudo credentialsПочему в удалённой инфраструктуре используют смену пользователя
Инфраструктура RDP и SSH часто требует:
-
Несколько административных пользователей с разными уровнями привилегий
-
Сервисные учётные записи для автоматизированных процессов
-
Аудит-трейлы для соответствия требованиям (журналирование sudo)
-
Повышение привилегий для административных задач
Управление инфраструктурой через RDP.Monster
Managing Ubuntu systems remotely requires robust, secure access:
SSH-доступ для выполнения команд
-
Удалённое выполнение команд переключения пользователей
-
Автоматизированное администрирование через скрипты
-
Полный контроль над управлением пользователями
Поддержка нескольких учётных записей
-
Создание административных пользователей
-
Соответствующее делегирование привилегий
-
Поддерживайте аудит-трейлы
Безопасное удалённое администрирование
-
SSH-шифрование для всех операций смены пользователей
-
Аутентификация по ключу для программного доступа
-
Комплексное журналирование и мониторинг
Заключение
Переключение пользователей и повышение привилегий — это фундаментальные навыки администрирования Ubuntu. Понимание различий между su, sudo и управлением паролями позволяет эффективно администрировать многопользовательские системы, сохраняя безопасность за счёт правильного делегирования привилегий и аудит-трейлов.
Современные передовые практики Ubuntu настоятельно отдают предпочтение sudo, а не su, для повышения привилегий, обеспечивая подотчётность и комплексное журналирование при минимизации совместного использования пароля root. Правильная настройка sudoers с делегированием конкретных привилегий обеспечивает отличный баланс безопасности между удобством использования и доступом control.
Managing complex Ubuntu infrastructure requiring sophisticated user management and secure administrative access? RDP.Monster provides SSH-based Ubuntu VPS solutions enabling seamless user management and privilege escalation across your infrastructure. Deploy professionally-managed Ubuntu systems today.
Мощный хостинг Ubuntu VPS
Получите полный контроль и впечатляющую производительность с нашими Linux VPS. Идеально для хостинга приложений, администрирования серверов и оптимизации рабочих процессов.
Высокопроизводительные выделенные серверы
Нужны максимальный контроль и мощность? Наши выделенные серверы обеспечивают непревзойдённую производительность для самых требовательных задач.
Часто задаваемые вопросы
Что лучше — su или sudo?
Это обеспечивает подотчётность, требует индивидуальных паролей и даёт полный аудит-трейл.
Почему у меня не работает команда su?
Try sudo -u username instead if you have sudo privileges.
Можно ли менять пользователя без пароля?
Для su пароль целевого пользователя нужен всегда.
В чём разница между su - и su --login?
Сколько действует sudo-привилегия?
Можно ли запускать несколько команд от имени другого пользователя?
Как посмотреть свои sudo-разрешения?
Почему PATH меняется при смене пользователя?
Связанные статьи




