Дізнайтеся, як переглянути внутрішню та зовнішню IP-адресу в Linux. Детальні команди, приклади, способи через термінал, DNS та графічний інтерфейс. Повний посіб...
Блог компанії 3v-Hosting
12 хв.
Будь-який Linux, в тому числі операційна система Ubuntu - це система, яка часто опиняється на перетині інтересів, оскільки один і той же сервер може обслуговувати розробників, адміністраторів, CI/CD-процеси, сервісні акаунти, а іноді і бізнес-користувачів. На робочій станції картина може бути не менш насиченою, з існуванням основного користувача, сервісних облікових записів, тимчасових акаунтів і тестового середовища.
І одним з найчастіших завдань є те, як коректно перемикатися між користувачами в Ubuntu.
Якщо добре подумати, то це питання не про "ввести команду і забути". Це про безпеку, зручність, контроль середовища і чітке розуміння того, хто саме і в якому контексті зараз працює в системі. У цій статті ми спробували дати вам детальний практичний розбір всіх основних способів перемикання між користувачами в Linux, їх відмінностей і підводних каменів при використанні кожного з методів. Кожен інженер або адміністратор зобов'язаний розуміти відмінності цих методів і глибоко розуміти, як вони працюють, щоб не допустити компрометації системи.
Якщо ви працюєте в Linux не перший день, то базова ідея вам вже знайома: один користувач - одна зона відповідальності. Але на практиці перемикання між користувачами - це не просто формальність і вже тим більше не пережиток старих Unix-традицій.
У сучасних системах, таких як, наприклад, Ubuntu, користувачами є не тільки люди, але і процеси, сервіси, пайплайни автоматизації, контейнери, агенти деплоя і моніторингу і т.д. і т.п.. Кожен з них живе у своєму контексті, зі своїми правами, змінними оточення, домашнім каталогом, ключами доступу та історією команд. І коли цей контекст порушується, то починаються проблеми, які складно діагностувати і ще складніше відтворити.
Неправильний користувач при виконанні тієї чи іншої команди може привести до непомітних помилок в правах доступу, поламаних залежностей, дивної поведінки додатків і вразливостей в безпеці. Особливо часто це проявляється на серверах і VPS, де під однією системою працюють відразу кілька ролей.
Саме тому вміння свідомо перемикатися між користувачами є базовою навичкою не тільки для системних адміністраторів, але і для розробників, DevOps-інженерів і всіх, хто працює з продакшн-системами. Мова йде саме про контроль, передбачуваність і відповідальність, а не про банальну зручність однієї команди в терміналі.
Тепер давайте розберемо, навіщо саме це потрібно на практиці і які завдання вирішує коректний розподіл користувачів.
Ubuntu за замовчуванням досить ліберальна в плані sudo-доступу, але саме тому особливо важливо розуміти, що саме ви робите і в якому контексті, а не просто виконувати команди "на автоматі". Така модель зручна для старту і повсякденної роботи, але вона легко притупляє відчуття межі між звичайним користувачем і адміністратором.
Згодом це призводить до того, що команди з підвищеними привілеями виконуються без належного аналізу наслідків, наприклад змінюються власники файлів, створюються артефакти з некоректними правами, порушується ізоляція середовищ тощо. У невеликих системах це може залишитися непомітним, але в серверній або multi-user середовищі такі дрібниці швидко перетворюються на реальні проблеми.
Тому важливо не просто мати sudo-доступ, а свідомо керувати ним, вибираючи відповідний спосіб перемикання в залежності від завдання, а не з звички або зручності.
www-data;
Отже, перейдемо до практики і почнемо з найочевиднішого варіанту - перемикання користувачів через графічний інтерфейс Ubuntu. Цей спосіб знайомий більшості користувачів і найчастіше використовується на персональних комп'ютерах, робочих станціях і ноутбуках, де система працює в інтерактивному режимі.
GUI-перемикання сприймається як щось просте, звичне і від того безпечне, але за зовнішньою наочністю і простотою ховається цілком повноцінний механізм управління сесіями. Кожному користувачеві виділяється власний простір, що полягає в окремому наборі процесів, змінних оточення, конфігураціях робочого столу і правах доступу. З точки зору системи це не спрощений режим, а такі ж ізольовані контексти користувачів, як і при вході через термінал або SSH.
Важливо розуміти заздалегідь, що графічне перемикання - це не спосіб "тимчасово стати іншим користувачем", а створення паралельної сесії користувача. Саме тому цей варіант чудово підходить для локальної роботи, але практично не застосовується в серверному середовищі, де графічна оболонка відсутня і пріоритет віддано термінальному доступу.
У стандартному середовищі Ubuntu (GNOME):
sudo, то він не отримає адміністративних прав, навіть якщо попередня сесія ними володіла.Важливо! Конкретні кроки можуть відрізнятися залежно від версії ОС і конкретної збірки.
Це паралельні сесії, кожна зі своїми процесами, змінними середовища і робочим столом. Дуже зручно для локальної машини, але майже марне на серверах, де графічного середовища просто немає.
su - класика UnixКоманда su - це один з найстаріших способів перемикання користувачів в Unix-подібних системах.
За замовчуванням:
su без параметрів перемикає на root;І саме тут починається плутанина.
Якщо використовувати просто su, ви змінюєте користувача, але не повністю змінюєте середовище. Робочий каталог, змінні середовища і PATH можуть залишитися від попереднього користувача. Іноді це зручно, але набагато частіше це є джерелом важко вловимих помилок.
Тому на практиці майже завжди використовують login-режим:
su - username # або su --login username
su і su --login| Команда | Користувач змінюється | Оточення | Profile-файли | Тип сесії |
|---|---|---|---|---|
su |
так | частково | ні | неповна |
su - |
так | повністю | так | login |
su --login user |
user | повністю | так | login |
sudo su- швидкий, але небезпечний шляхЯкщо su- це класика Unix, то sudo suдійсно можна назвати її темною стороною. Формально команда виглядає нешкідливо, але по суті вона обходить кілька важливих принципів, на яких будується модель безпеки Ubuntu.
З технічної точки зору відбувається наступне:
sudo, підтверджуючи, що маєте право на виконання привілейованих команд;root, всередині якого ви продовжуєте роботу.При цьому пароль користувача root не потрібен взагалі, а використовується ваш власний sudo-доступ. На Ubuntu серверах root за замовчуванням часто заблокований або не має встановленого пароля, що і робить sudo su таким популярним способом швидко стати root'ом.
Проблема в тому, що такий підхід розмиває межу відповідальності. У момент запуску sudo su ви перестаєте працювати як конкретний користувач і переходите в неявний root-контекст, де стає складно однозначно визначити, хто саме виконував команди і з якими намірами.
І саме тут виникає той самий серйозний нюанс, який часто ігнорують до першого інциденту: sudo su порушує прозорість аудиту і ускладнює контроль над діями в системі.
sudo su ламає аудитСаме тому в професійному середовищі sudo su або використовують строго усвідомлено, або не використовують взагалі.
sudo -i - правильний спосіб стати root'омЯкщо вам потрібен саме root-доступ, а не просто тимчасова зміна користувача, то sudo -i по праву вважається золотим стандартом в Ubuntu і більшості сучасних Linux-дистрибутивів.
На відміну від sudo su, ця команда ініціює повноцінну login-сесію користувача root, максимально наближену до реального входу в систему. Завантажуються стандартні конфігураційні файли root-користувача, коректно ініціалізується робоче середовище і формується окрема історія команд.
Чому на практиці це так важливо:
Саме тому sudo -i вважається найбільш безпечним і прозорим способом роботи під root, особливо на серверах, VPS і в продакшн-середовищах, де важливі контроль, аудит і відтворюваність дій.
sudo -u як точкове виконання від імені іншого користувачаІноді дійсно немає необхідності "ставати" іншим користувачем і змінювати весь робочий контекст. Набагато частіше потрібно виконати одну конкретну команду від імені потрібного користувача, не виходячи зі своєї сесії і не порушуючи оточення.
Саме для таких завдань існує команда sudo -u, що дозволяє точково запускати процеси від імені іншого користувача. Наприклад:
sudo -u www-data ls /var/www
sudo -u deploy ./deploy.sh
sudo -u postgres psql
У всіх цих випадках команда виконується з правами зазначеного користувача, але при цьому ви не переходите в його shell і не створюєте окрему сесію.
Типові сценарії застосування команди sudo -u:
Ключова перевага sudo -u в тому, що ви залишаєтеся у своїй сесії користувача, оточення системи не ламається, а виконується рівно та дія, яка потрібна. Завдяки цьому sudo -u вважається акуратним і практично хірургічним інструментом і широко використовується DevOps-інженерами та адміністраторами в production-середовищі, де важливо мінімізувати побічні ефекти і зберегти прозорість дій.
На серверах і VPS все простіше і одночасно суворіше, ніж на десктопах. Тут майже завжди використовується термінальний доступ, а будь-які дії користувача чітко прив'язані до конкретної сесії і контексту.
У SSH-моделі кожен користувач - це окрема точка входу в систему. Перемикання між користувачами означає не зміну ролі всередині вже існуючої сесії, а встановлення нового SSH-з'єднання. Це автоматично створює новий контекст виконання команд з урахуванням власних середовищ, змінних, прав доступу та історії дій.
Саме тому такий підхід вважається еталонним для серверного середовища. Він дійсно:
У реальній інфраструктурі зазвичай дотримуються таких принципів:
PermitRootLogin, щоб виключити прямий вхід під root;Додатково про налаштування SSH на сервері можна прочитати тут.
Такий підхід може здатися менш зручним, ніж швидке su або sudo su, але саме він забезпечує максимальну керованість і передбачуваність системи. Не випадково багато адміністраторів принципово не використовують su на серверах, віддаючи перевагу окремим SSH-користувачам і ключам.
Це трохи повільніше в повсякденній роботі, але в довгостроковій перспективі - в рази надійніше, особливо в multi-user і production-середовищах.
Навіть досвідчені користувачі Ubuntu регулярно наступають на одні й ті ж граблі, особливо коли робота з користувачами перетворюється на рутину і виконується "на автоматі":
su без login-прапораКоманди виконуються від імені іншого користувача, але зі змінними і шляхами попередньої сесії, що призводить до важкозрозумілої поведінки додатків.sudoФайли і каталоги раптово виявляються належними root або сервісному користувачеві, через що додатки перестають нормально працювати.Linux не прощає неуважність, але майже завжди чесно показує наслідки. Якщо щось пішло не так, в більшості випадків проблема не в Ubuntu як системі, а в тому, в якому контексті і від імені якого користувача була виконана команда. Саме тому усвідомлене управління користувачами і сесіями - це не проста формальність, а важлива частина надійної роботи з системою.
Технічно - так, система цього не забороняє. Практично - це вкрай не рекомендується. Постійна робота під root збільшує ризик випадкових помилок, робить незворотними багато дій і суттєво ускладнює пошук причини проблеми. Крім того, при роботі під root втрачається прозорість аудиту: стає складніше зрозуміти, хто і навіщо виконував ті чи інші команди, особливо в multi-user середовищі.
sudo -i краще за sudo su?sudo -i створює повноцінну login-сесію користувача root з коректно ініціалізованим середовищем, правильними змінними і зрозумілим логуванням. На відміну від sudo su, цей спосіб не розмиває контекст і краще вписується в модель аудиту Ubuntu. Саме тому sudo -i вважається кращим варіантом для адміністративних завдань.
su?Сам по собі su не є небезпечним, якщо використовувати його усвідомлено. Рекомендується застосовувати su --login або su -, щоб отримати повноцінну сесію цільового користувача з коректним середовищем. Основна небезпека виникає при використанні su без login-прапора, коли користувач змінюється, а середовище залишається колишнім.
У більшості випадків - ні. За замовчуванням Ubuntu використовує sudo-модель доступу, при якій root-пароль або не встановлений, або заблокований. Управління системою відбувається через sudo, що дозволяє зберігати контроль, аудит і гнучкість прав доступу.
Для production-систем оптимальною вважається модель з окремими користувачами, SSH-ключами, мінімально необхідними привілеями і використанням sudo -i тільки тоді, коли дійсно потрібен root-доступ. Такий підхід підвищує безпеку, спрощує аудит і робить поведінку системи більш передбачуваною.
Так, і на практиці так роблять майже завжди. Наприклад, для повсякденних завдань використовується sudo -u, для адміністративних - sudo -i, а доступ до сервера організований через SSH-користувачів. Головне - розуміти, в якому контексті і навіщо застосовується кожен спосіб.
Графічне перемикання не підходить для серверів, VPS і будь-яких production-середовищ без GUI. Крім того, воно не замінює адміністративні інструменти і не дає додаткових привілеїв. Це зручний механізм для локальної роботи, але не для управління системою.
Отже, перемикання між користувачами в Ubuntu - це не просто набір команд або зручний прийом для повсякденної роботи, а відображення базових принципів Linux, таких як чіткий розподіл ролей, мінімально необхідні привілеї та усвідомлений контроль над контекстом виконання команд.
І чим глибше ви занурюєтеся в роботу з системою, будь то адміністрування серверів, DevOps-практики, розробка додатків або експлуатація продакшн-інфраструктури, тим важливіше в кожен момент розуміти, від імені якого користувача ви дієте і з яким оточенням. Помилки тут рідко виглядають критичними відразу, але саме вони найчастіше стають причиною важкозрозумілих збоїв і проблем з безпекою.
Управління портами на VPS і виділених серверах: як перевірити відкриті порти, правильно налаштувати фаєрвол, уникнути типових помилок і підвищити безпеку інфрас...
Оптимізація Windows Server 2022 на VPS з 2-4 ГБ RAM: як система витрачає пам'ять, що можна безпечно налаштувати, pagefile, служби, GUI і коли апгрейд RAM розумн...
GitOps - це підхід до управління інфраструктурою та Kubernetes через Git як єдине джерело істини. Він спрощує розгортання, знижує ризики, усуває дрейф конфігура...