15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
02.01.2026
5 +2

Как изменить пользователя в Linux: полное руководство

Linux — это многопользовательская операционная система по своей природе, и управление идентификацией пользователей — один из самых фундаментальных навыков, которым должен овладеть любой системный администратор. Независимо от того, управляете ли вы окружением VPS Hosting, настраиваете веб-сервер или устраняете проблемы с разрешениями файлов после развертывания, понимание того, как изменить пользователя в Linux, является необходимым.

Фраза «изменить пользователя» в Linux на самом деле охватывает несколько отдельных операций, каждая со своими инструментами, рисками и лучшими практиками:

  • Переключение на другую учетную запись в оболочке (например, с john на root) для интерактивного сеанса
  • Запуск одной команды от другого пользователя без полного переключения сеансов
  • Изменение пользователя, от которого запускается служба или процесс — критично для усиления безопасности
  • Изменение владельца файлов и каталогов — необходимо после миграций, восстановлений или развертываний
  • Изменение атрибутов учетной записи пользователя — переименование пользователей, изменение UID или корректировка членства в группах

Это руководство охватывает все эти сценарии в глубину, объясняя, когда использовать каждый подход, как это делать безопасно и какие ошибки избегать — чтобы вы могли уверенно управлять пользователями Linux без нарушения разрешений, служб или доступа.

Оглавление

  1. Переключение на другого пользователя (интерактивная оболочка)
  2. Запуск одной команды от другого пользователя
  3. Изменение пользователя, от которого запускается служба (systemd)
  4. Изменение владельца файла с помощью chown
  5. Подтверждение вашей текущей идентификации
  6. Изменение атрибутов учетной записи пользователя
  7. Краткая справочная шпаргалка

Переключение на другого пользователя (интерактивная оболочка)

Когда вам нужен полный интерактивный сеанс терминала от другого пользователя — для системного администрирования, тестирования поведения приложения под другой учетной записью или доступа к учетной записи службы — Linux предоставляет два основных инструмента: su и sudo.

Использование su (Switch User)

Команда su заменяет вашу текущую идентификацию пользователя на другую:

su - username

Флаг - (также написанный как -l или --login) важен: он загружает полное окружение входа целевого пользователя, включая его домашний каталог, PATH, профиль оболочки и переменные окружения. Без флага - вы наследуете большую часть вашего текущего окружения, что может вызвать тонкое и запутанное поведение — особенно при запуске скриптов или служб.

Для прямого переключения на root:

su -

> Примечание безопасности: На многих современных дистрибутивах Linux пароль учетной записи root отключен по умолчанию (особенно в системах на основе Ubuntu). В этих случаях su на root не будет работать, и sudo — правильный подход.

Использование sudo -i (предпочтительно для оболочек Root/Admin)

sudo -i

Это дает вам оболочку входа root, эквивалентную su -, но аутентифицирует с использованием ваших собственных привилегий sudo вместо требования пароля root. Это рекомендуемый подход на большинстве современных дистрибутивов, потому что:

  • Это избегает необходимости делиться или знать пароль root
  • Все действия регистрируются через журнал аудита sudo
  • Это уважает вашу конфигурацию sudoers и ограничения

Переключение на другого пользователя с оболочкой входа через sudo

sudo -iu username

Это объединяет -i (оболочка входа) и -u (целевой пользователь), давая вам чистое окружение входа как указанный пользователь — без необходимости знать пароль этого пользователя.

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

Часто вам не нужен полный интерактивный сеанс — вам просто нужно выполнить одну команду с другой идентификацией. Это наиболее распространенный и безопасный паттерн для повышения привилегий.

Использование sudo -u

sudo -u username whoami
sudo -u postgres psql

Второй пример чрезвычайно распространен в администрировании баз данных — переключение на системного пользователя postgres для доступа к PostgreSQL без аутентификации по паролю.

Запуск команды с чистым окружением входа

sudo -iu username command_here

Это гарантирует, что команда запускается с полным окружением целевого пользователя, а не переменными вашего текущего сеанса.

Запуск команды от root

sudo systemctl restart nginx

Это стандартный паттерн для административных задач: запуск одной привилегированной команды без открытия оболочки root.

Изменение пользователя, от которого запускается служба (systemd)

На практически всех современных дистрибутивах Linux systemd управляет службами. В целях безопасности каждая служба должна запускаться под выделенной непривилегированной учетной записью пользователя, а не root. Запуск служб от root — значительный риск безопасности — если служба скомпрометирована, злоумышленник получает доступ root ко всей системе.

Это особенно важно на выделенных серверах и производственных окружениях VPS, где одновременно могут работать несколько служб.

Проверка текущей конфигурации службы

systemctl cat myservice.service

Ищите директивы User= и Group= в разделе [Service]:

[Service]
User=www-data
Group=www-data

Переопределение пользователя службы (безопасный метод)

Вместо редактирования исходного файла модуля (который может быть перезаписан при обновлении пакета), используйте systemctl edit для создания переопределения drop-in:

sudo systemctl edit myservice.service

Это открывает редактор, где вы добавляете:

[Service]
User=myuser
Group=mygroup

Сохраните файл, затем примените изменения:

sudo systemctl daemon-reload
sudo systemctl restart myservice.service

Проверка того, что служба запускается от правильного пользователя

systemctl status myservice.service
ps -eo user,pid,cmd | grep myservice

Проверка пользователя любого запущенного процесса

ps -eo user,pid,cmd | grep nginx
ps -p <PID> -o user,group,cmd

> Важно: Linux не позволяет вам изменить пользователя уже запущенного процесса на месте. Вы должны перезагрузить процесс (или настроить диспетчер служб для его запуска от правильного пользователя), чтобы изменение вступило в силу.

Изменение владельца файла с помощью chown

Владение файлами — это основная часть модели разрешений Linux. После миграций, развертываний, резервных копий или восстановлений владение может оказаться назначено неправильному пользователю — вызывая ошибки отказа в доступе, неработающие веб-приложения или недоступные данные. Команда chown — это ваш основной инструмент для исправления этого.

Это распространенная задача при настройке окружений общего веб-хостинга или развертывании веб-приложений на VPS.

Изменение владельца файла

sudo chown username file.txt

Изменение владельца и группы

sudo chown username:groupname file.txt

Рекурсивное изменение владения (используйте с осторожностью)

sudo chown -R username:groupname /var/www/site

Флаг -R применяет изменение рекурсивно ко всем файлам и подкаталогам. Используйте это осторожно — применение его к неправильному пути (например, / или /etc) может сломать вашу всю систему.

Сохранение символических ссылок

sudo chown -h username:groupname symlink

Без -h, chown следует символическим ссылкам и изменяет владение целевого файла, а не самой символической ссылки. Используйте -h когда вы специально хотите изменить владение символической ссылки.

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

Для больших деревьев каталогов всегда предварительно просмотрите перед применением рекурсивного chown:

find /path -maxdepth 2 -printf '%u:%g %pn' | head

Это показывает текущего владельца и группу для двух верхних уровней дерева каталогов, позволяя вам подтвердить масштаб изменения перед его применением.

Подтверждение вашей текущей идентификации

Перед внесением изменений всегда проверяйте, кто вы и в каком контексте вы работаете. Это предотвращает случайные изменения, сделанные под неправильной учетной записью.

Проверка вашего текущего пользователя

whoami

Получение полной информации об идентификации (пользователь, группы, UID)

id

Пример вывода:

uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(docker)

Просмотр того, кто вошел в систему

who
w

Проверка исходного пользователя при использовании sudo

Когда вы повышаете привилегии с sudo, две переменные окружения актуальны:

echo $USER        # The current effective user (root)
echo $SUDO_USER   # The original user who invoked sudo (e.g., alice)

Это различие важно в скриптах — $SUDO_USER говорит вам, кто на самом деле запустил команду.

Изменение атрибутов учетной записи пользователя

Иногда «изменение пользователя» означает изменение самой учетной записи: переименование, изменение UID или корректировку членства в группах. Это постоянные, системные изменения, которые могут повлиять на входы, разрешения файлов и доступ к службам.

> Лучшая практика: Перед внесением изменений в учетную запись убедитесь, что пользователь вышел из системы и никакие процессы не запущены под этой учетной записью.

Переименование пользователя (изменение имени пользователя)

sudo usermod -l newname oldname

Это изменяет имя входа, но не автоматически переименовывает домашний каталог. Чтобы также переместить и переименовать домашний каталог:

sudo usermod -d /home/newname -m newname

Если пользователь имеет первичную группу с тем же именем, что и его старое имя пользователя (что является стандартом на большинстве дистрибутивов), также обновите имя группы:

sudo groupmod -n newname oldname

Изменение UID пользователя

sudo usermod -u 2001 username

> Критично: После изменения UID все файлы, ранее принадлежавшие старому UID, будут отображаться как принадлежащие неизвестному числовому ID. Вы должны исправить это немедленно:

sudo find / -user oldUID -exec chown -h username {} ;

Замените oldUID на предыдущий числовой UID. Эта команда ищет по всей файловой системе файлы со старым UID и переназначает их новому имени пользователя.

Добавление пользователя в группу

Наиболее распространенный случай использования — предоставление доступа sudo пользователю:

Debian/Ubuntu:

sudo usermod -aG sudo username

RHEL / AlmaLinux / Rocky Linux:

sudo usermod -aG wheel username

Флаг -a критичен — он добавляет пользователя в группу без удаления из существующих групп. Пропуск -a заменит все членства в группах только указанной группой.

Проверка членства в группе

id username

Краткая справочная шпаргалка

Вот консолидированная справка для всех операций переключения пользователей и управления, охватываемых в этом руководстве:

ЗадачаКоманда
Переключение на другого пользователя (оболочка входа)su - username
Переключение на другого пользователя через sudo###PPT_NOTR_74_CODE
15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать