15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
02.01.2026
4 +2

Как да смените потребител в Linux: Пълното ръководство

Linux е многопотребителска операционна система по дизайн, и управлението на потребителски идентичности е един от най-фундаменталните умения, които всеки системен администратор трябва да овладее. Независимо дали управлявате VPS Hosting среда, конфигурирате уеб сървър или отстранявате проблеми с разрешенията на файлове след внедряване, разбирането как да смените потребители в Linux е от съществено значение.

Фразата „смяна на потребител” в Linux всъщност обхваща няколко различни операции, всяка със свои собствени инструменти, рискове и най-добри практики:

  • Преминаване към друг акаунт в shell (например от john към root) за интерактивна сесия
  • Изпълнение на една команда като различен потребител без пълна смяна на сесии
  • Смяна на потребителя, под който работи услуга или процес — критично за укрепване на сигурността
  • Смяна на собственост на файлове и директории — от съществено значение след миграции, възстановяване или внедряване
  • Модифициране на атрибути на потребителския акаунт — преименуване на потребители, смяна на UID или коригиране на членството в групи

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

Съдържание

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

Преминаване към друг потребител (интерактивен shell)

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

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

Командата su замества вашия текущ потребителски идентитет с друг:

su - username

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

За преминаване директно към root:

su -

> Забележка за сигурност: На много съвременни Linux дистрибуции, акаунтът root е деактивиран по подразбиране (особено на Ubuntu базирани системи). В тези случаи, su към root ще се провали, и sudo е правилният подход.

Използване на sudo -i (Препоръчано за Root/Admin Shells)

sudo -i

Това ви дава root login shell еквивалентен на su -, но се удостоверява с помощта на вашите собствени sudo привилегии вместо да изисква root парола. Това е препоръчаният подход на повечето съвременни дистрибуции, защото:

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

Преминаване към друг потребител с Login Shell чрез sudo

sudo -iu username

Това комбинира -i (login shell) и -u (целеви потребител), давайки ви чиста среда за вход като посочения потребител — без да имате нужда от парола на този потребител.

Изпълнение на една команда като друг потребител

Често нямате нужда от пълна интерактивна сесия — просто трябва да изпълните една команда с различен идентитет. Това е най-често срещаният и най-безопасен модел за повишаване на привилегии.

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

sudo -u username whoami
sudo -u postgres psql

Вторият пример е изключително често срещан при администриране на бази данни — преминаване към системния потребител postgres за достъп до PostgreSQL без удостоверяване с парола.

Изпълнение на команда с чиста среда за вход

sudo -iu username command_here

Това гарантира, че командата се изпълнява с пълната среда на целевия потребител, а не с променливите на вашата текуща сесия.

Изпълнение на команда като Root

sudo systemctl restart nginx

Това е стандартният модел за административни задачи: изпълнение на една привилегирана команда без отваряне на root shell.

Смяна на потребителя, под който работи услуга (systemd)

На практически всички съвременни Linux дистрибуции, systemd управлява услугите. За сигурност, всяка услуга трябва да работи под посветен, непривилегиран потребителски акаунт вместо root. Изпълнението на услуги като root е значителен риск за сигурност — ако услугата е компрометирана, нападателят получава root достъп до цялата система.

Това е особено важно на Dedicated Servers и production 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 е вашият основен инструмент за коригиране на това.

Това е често срещана задача при настройка на Shared Web Hosting среди или внедряване на уеб приложения на 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

Бърз справочник

Ето консолидиран справочник за всички операции по смяна и управление на потребители, обхванати в това ръководство:

ЗадачаКоманда
Преминаване към друг потребител (login shell)su - username
Преминаване към друг потребител чрез sudosudo -iu username
15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало