Как да променя потребител в Linux?
В Linux фразата “смяна на потребител” може да опише няколко различни действия – някои временни и базирани на сесия, други постоянни и системни. Тъй като Linux е много потребителска операционна система по дизайн, тя предоставя множество начини за смяна на идентичности и разрешения в зависимост от това, което се опитвате да постигнете: администриране на сървър, стартиране на приложение с ограничени права, решаване на проблеми с достъпа до файлове или преструктуриране на потребителски акаунти.
Смяната на “потребител” в Linux може да означава няколко различни неща в зависимост от контекста:
- Смяна на друг акаунт в шел (напр. от john на root)
Това се използва, когато имате нужда от интерактивна терминална сесия като друг потребител – често за системно администриране или за тестване как нещо се държи в различна среда на акаунта. - Стартиране на една команда като друг потребител
Идеално, когато имате нужда само от повишени привилегии или различна идентичност за една задача (като рестартиране на услуга или изпълнение на команда за база данни) без напълно да сменяте сесията си.
- Смяна на друг акаунт в шел (напр. от john на root)
- Смяна на потребителя по подразбиране за услуга/процес
Услугите (уеб сървъри, бази данни, приложения) обикновено трябва да работят под специализирани, неправа потребители за сигурност. Смяната на потребителя на услугата влияе на начина, по който процесът работи и какво може да достъпи. - Смяна на собствеността на файлове и директории
Собствеността на файловете контролира достъпа. Ако разрешенията са неправилни – често след миграции, възстановявания или внедрявания – вие “сменяте потребителя”, като преназначавате собствеността, така че правилният акаунт да може да чете/пише файлове. - Смяна на атрибутите на идентичността на потребителя (потребителско име, UID, групи)
Това е управление на акаунти: преименуване на потребител, смяна на UID или коригиране на членството в групата (като предоставяне на sudo достъп). Тези промени могат да повлияят на влизанията, разрешенията и достъпа до услуги.
Този наръчник обхваща всички тези сценарии, показвайки кога да използвате всеки подход, как да го направите безопасно и кои грешки да избягвате – така че да можете да сменяте потребители уверено, без да нарушавате разрешения, услуги или достъп.
Смяна на друг потребител (интерактивен шел)
su (смяна на потребител)
– (или -l) зарежда пълната среда за вход на целевия потребител: домашна директория, PATH, шел профил.
Без -, запазвате голяма част от текущата си среда (може да бъде объркващо).
Смяна на root:
Бележка за сигурност: В много дистрибуции, su изисква паролата на целевия потребител (напр. паролата на root), която често е деактивирана.
sudo -i (предпочитано за root/admin шел)
Предоставя ви шел за вход на root (подобен на su -), използвайки вашите sudo права вместо паролата на root.
Смяна на друг потребител с шел за вход:
Стартиране на една команда като друг потребител (неинтерактивно)
sudo -u
Стартиране с чиста среда, подобна на вход:
Стартиране на команда като root
Смяна на “ефективния потребител” на работещ процес (напреднала реалност)
Linux не позволява да “смените потребителя” на вече работещ процес на място в повечето практически сценарии. Вместо това, обикновено:
рестартирате процеса под правилния потребител
или използвате мениджъри на услуги (systemd), за да определите потребителя
За да проверите кой потребител изпълнява процес:
Или:
Смяна на потребителя, под който работи услуга (systemd)
Повечето производствени Linux системи използват systemd. Услугите трябва да работят като специализирани, неправа потребители.
Проверете конфигурацията на услугата:
Търсете:
User=Group=
Пример за замяна (безопасен метод):
Добавете:
Приложете:
Проверете:
Смяна на собствеността на файлове (смяна на “потребител” за файлове)
chown (смяна на собственост)
Смяна на собственик:
Смяна на собственик и група:
Рекурсивно (внимавайте):
Запазване на символни линкове (избягвайте смяна на целевите линкове):
Напреднал съвет: За големи дървета, прегледайте първо:
Смяна на текущата си идентичност в шел спрямо смяна на самия акаунт
Потвърдете кой сте
Потвърдете кой е влязъл
Вижте кой потребител е стартирал текущия шел чрез sudo
Смяна на потребителско име, UID, групи (модификация на акаунта)
Преименуване на потребител (потребителско име)
Също така преместете/преименувайте домашната директория:
Актуализирайте името на групата също (по избор):
Смяна на UID
След смяна на UID, поправете собствеността на файловете:
Добавяне на потребител в група (напр. sudo)
Проверете:
Бърз “чийт шит”
Смяна на потребител:
Стартиране на команда като друг потребител:
Стартиране на шел за root:
Смяна на собственик на файл:
Смяна на детайли на акаунта:
