RDP Monster

Как сменить пользователя в Ubuntu: su, sudo и повышение привилегий

Как сменить пользователя в Ubuntu: su, sudo и повышение привилегий

Введение

Управление несколькими пользовательскими аккаунтами и переключение между ними — фундаментальная часть администрирования 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 User
su 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 service
sudo 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 timeout
sudo -v

 

-H (Home): Set HOME to target user’s home

sudo -H -u username command

su – vs su: ключевые отличия

Функция su su –
Среда Сохраняет окружение родительской оболочки Загружает среду целевого пользователя
Переменная HOME Остаётся в home исходного пользователя Переходит в home целевого пользователя
Переменная PATH Может содержать пути исходного пользователя Содержит стандартные пути целевого пользователя
Конфиг оболочки Не загружает .bashrc или .profile Загружает ~/.bashrc, ~/.profile
Рабочий каталог Остаётся в текущем каталоге Переходит в home пользователя
Рекомендуется Редко; возможна путаница Всегда при смене пользователя
Уровень риска Выше (смешанные среды) Ниже (чистая среда)

 

Пример различия

# С помощью su (BAD)
$ su john
Password:
$ echo $HOME
/root # Still shows original home!
$ pwd
/path/to/original # Still in original directory
# С помощью su - (GOOD)
$ su - john
Password:
$ 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 restart
su - 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 info
sudo chage -M 90 john # Force password change every 90 days
sudo chage -d 0 john # Force password change on next login

Права пользователей и группы

Просмотр групп пользователей

groups john # Show groups current user belongs to
groups # Show own groups
id 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 update
sudo 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 users
for user in user1 user2 user3; do
sudo useradd -m -s /bin/bash "$user"
echo "Please set password for $user:"
sudo passwd "$user"
done
# Add all to sudo group
for user in user1 user2 user3; do
sudo usermod -aG sudo "$user"
done

Соображения безопасности

Безопасность паролей

Пароль root: Храните в безопасности; никогда не сообщайте ненадёжным лицам

Конфигурация sudo: Делегируйте конкретные привилегии вместо полного доступа root

Срок действия паролей: Принудительно требуйте периодической смены паролей

# Configure password aging
sudo 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=sudo

Restricting Эскалация привилегий

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 nginx
john ALL=(ALL) /usr/bin/apt-get

Тайм-аут сессии

# Set sudo timeout
sudo -v # Extend timeout
sudo -k # Invalidate sudo credentials

Почему в удалённой инфраструктуре используют смену пользователя

Инфраструктура RDP и SSH часто требует:

  • Несколько административных пользователей с разными уровнями привилегий

  • Сервисные учётные записи для автоматизированных процессов

  • Аудит-трейлы для соответствия требованиям (журналирование sudo)

  • Повышение привилегий для административных задач

Управление инфраструктурой через RDP.Monster

Managing Ubuntu systems remotely requires robust, secure access:

SSH-доступ для выполнения команд

  • Удалённое выполнение команд переключения пользователей

  • Автоматизированное администрирование через скрипты

  • Полный контроль над управлением пользователями

Поддержка нескольких учётных записей

  • Создание административных пользователей

  • Соответствующее делегирование привилегий

  • Поддерживайте аудит-трейлы

Безопасное удалённое администрирование

  • SSH-шифрование для всех операций смены пользователей

  • Аутентификация по ключу для программного доступа

  • Комплексное журналирование и мониторинг

Развёртывайте инфраструктуру Ubuntu VPS с безопасными возможностями управления пользователями через RDP.Monster

 

Заключение

Переключение пользователей и повышение привилегий — это фундаментальные навыки администрирования 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. Идеально для хостинга приложений, администрирования серверов и оптимизации рабочих процессов.

Dedicated Servers

Высокопроизводительные выделенные серверы

Нужны максимальный контроль и мощность? Наши выделенные серверы обеспечивают непревзойдённую производительность для самых требовательных задач.

Часто задаваемые вопросы

Что лучше — su или sudo?

В современных системах предпочтительнее sudo.

Это обеспечивает подотчётность, требует индивидуальных паролей и даёт полный аудит-трейл.

Почему у меня не работает команда su?

Возможно, вы не знаете пароль целевого пользователя.

Try sudo -u username instead if you have sudo privileges.

Можно ли менять пользователя без пароля?

Да, через sudo: настройте sudoers с NOPASSWD.

Для su пароль целевого пользователя нужен всегда.

В чём разница между su - и su --login?

Это одно и то же: обе создают login-shell с полным набором env.

Сколько действует sudo-привилегия?

По умолчанию 15 минут. Настраивается в sudoers.

Можно ли запускать несколько команд от имени другого пользователя?

Да: sudo bash -c "command1 && command2 && command3"

Как посмотреть свои sudo-разрешения?

Выполните sudo -l, чтобы увидеть разрешённые команды.

Почему PATH меняется при смене пользователя?

Используйте su -, чтобы загрузить полное окружение целевого пользователя, включая правильный PATH.

Register to our reseller program

Your informations

If you have any question, contact us by clicking here !
Name(Required)
Enter your email address, you must have an account on manager.rdp.monster !

Your company

Enter your website address if you have one
Quickly explain how you're going to sell services to your customers. For example, talk to people on forums.

Мы используем файлы cookie!

Мы используем файлы cookie, чтобы улучшить ваш опыт просмотра, предлагать персонализированную рекламу или контент и анализировать наш трафик. Нажимая «Принять», вы соглашаетесь с использованием файлов cookie.