Як змінити користувача в 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 whoamisudo -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.serviceps -eo user,pid,cmd | grep myserviceПеревірити користувача будь-якого запущеного процесу
ps -eo user,pid,cmd | grep nginxps -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)Див., хто увійшов до системи
whowПеревірте оригінального користувача при використанні 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 usernameRHEL / AlmaLinux / Rocky Linux:
sudo usermod -aG wheel usernameПрапор -a критичний — він додає користувача до групи без видалення його з існуючих груп. Пропуск -a замінить усе членство в групах лише на вказану групу.
Перевірка членства в групі
id usernameШпаргалка швидкого посилання
Ось консолідований довідник для всіх операцій перемикання користувачів та управління, розглянутих у цьому посібнику:
| Завдання | Команда | |
|---|---|---|
| Перемикнутися на іншого користувача (оболонка входу) | su - username | |
| Перемикнутися на іншого користувача через sudo | sudo -iu username | |
| Відкрити оболонку root | sudo -i | |
| Запустити команду від імені іншого користувача | sudo -u username command | |
| Запустити команду від імені postgres | sudo -u postgres psql | |
| Перевірити поточного користувача | whoami | |
| Перевірити повну ідентичність та групи | id | |
| Перевірити оригінального викликача sudo | echo $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,cmd | grep service` |
| Перейменувати користувача | sudo usermod -l newname oldname | |
| Перемістити домашній каталог | sudo usermod -d /home/newname -m newname | |
| Змінити UID | sudo usermod -u 2001 username | |
| Виправити власність після зміни UID | sudo find / -user oldUID -exec chown -h username {} ; | |
| Додати користувача до групи sudo | sudo 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 разом з інтуїтивним інтерфейсом управління, щоб ви могли впевнено застосувати все з цього посібника.
на всіх хостингових послугах