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