Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Linux Операційні системи

Як змінити користувача в Linux: Повний посібник

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

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

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

Цей посібник детально охоплює всі ці сценарії, пояснюючи, коли використовувати кожен підхід, як це робити безпечно та яких помилок уникати — щоб ви могли впевнено управляти користувачами Linux без порушення дозволів, служб або доступу.

Перемикання на іншого користувача (інтерактивна оболонка)

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

Використання su (перемикання користувача)

Команда 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
Перемикнутися на іншого користувача через sudosudo -iu username
Відкрити оболонку rootsudo -i
Запустити команду від імені іншого користувачаsudo -u username command
Запустити команду від імені postgressudo -u postgres psql
Перевірити поточного користувачаwhoami
Перевірити повну ідентичність та групиid
Перевірити оригінального викликача sudoecho $SUDO_USER
Змінити власника файлуsudo chown username file
Змінити власника та групу файлуsudo chown username:group file
Рекурсивна зміна власностіsudo chown -R username:group /path
Попередній перегляд власності каталогуfind /path -maxdepth 2 -printf '%u:%g %pn'
Змінити користувача сервісу (systemd)sudo systemctl edit myservice.service
Перезавантажити systemd після змінsudo systemctl daemon-reload
Перевірити користувача процесу`ps -eo user,pid,cmdgrep service`
Перейменувати користувачаsudo usermod -l newname oldname
Перемістити домашній каталогsudo usermod -d /home/newname -m newname
Змінити UIDsudo usermod -u 2001 username
Виправити власність після зміни UIDsudo find / -user oldUID -exec chown -h username {} ;
Додати користувача до групи sudosudo usermod -aG sudo username
Перевірити членство в групіid username

Резюме

Управління користувачами в Linux — це не одна операція, а сімейство пов’язаних завдань, кожне з яких має свої інструменти та наслідки:

  • Використовуйте sudo -iu username для інтерактивних сеансів як інший користувач (переважніше за su на сучасних системах)
  • Використовуйте sudo -u username command для запуску окремих команд з іншою ідентичністю
  • Використовуйте systemctl edit для безпечної зміни користувача, від якого запускається служба systemd
  • Використовуйте chown для виправлення власності файлів після розгортання, міграції або проблем з дозволами
  • Використовуйте usermod для постійних змін облікового запису — перейменування, зміни UID та управління групами

Розуміння цих відмінностей допомагає вам уникнути поширених помилок, таких як порушення дозволів служб, блокування доступу до файлів або випадкове надання надмірних привілеїв.

Якщо ви запускаєте інфраструктуру на основі Linux — будь то веб-сервер, база даних або користувацький стек додатків — правильно налаштоване хостинг-середовище значно спрощує управління користувачами. AlexHost пропонує гнучкі Панелі керування VPS та VPS з cPanel, які надають вам повний доступ root разом з інтуїтивним інтерфейсом управління, щоб ви могли впевнено застосувати все з цього посібника.