Як переключитися на root користувача, але залишитися в тому самому каталозі


10

Нещодавно я перейшов на Ubuntu, і я помітив одне, коли використовую наступну команду для переходу на root користувача

sudo su - root

Це веде мене безпосередньо до дому root ( /root), тому я втрачаю своє місце у файловій системі (каталог, де я виконував цю команду). Чи є спосіб переключитися на root, не втрачаючи поточного каталогу?

Відповіді:


16

Перш за все, не використовуйте sudo su. Це не неправильно, небезпечно чи що-небудь, це просто неелегантно і безглуздо . Ви запускаєте дві окремі програми, щоб виконати роботу, яку легко впорається одна. Якщо ви хочете запустити оболонку як root, sudoможете зробити це за вас.

Якщо ви хочете запустити оболонку для входу (саме це sudo su -), використовуйте sudo -i. Однак, оскільки він запускає оболонку входу, за замовчуванням перенесе вас до домашнього каталогу root.

Щоб запустити звичайну оболонку без входу, ви можете використовувати sudo -s. Це запустить для вас кореневу оболонку і збереже вас у каталозі, з якого ви її запустили:

terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i  ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s  ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon

Отже, спосіб запустити кореневу оболонку і залишитися в одному каталозі sudo -s.


1
Проблема може полягати в тому, sudo -sщо не працює профіль цільового користувача, оскільки це не оболонка для входу. Тому, можливо, справжнє питання полягає в тому, чи існує спосіб отримати оболонку входу за допомогою sudo, але без зміни каталогу. Напевно, ні.
Бармар

@Barmar ні, але sudo -iтак. Я використовував, -sоскільки ОП не хотів оболонки входу (не хотів переходити на $HOME). Якщо ви хочете оболонку для входу, використовуйте sudo -i. Я відправив порівняння середовищ sudo -i, su -, sudo -sі suв моєму питанні тут , якщо ви хочете подивитися.
тердон

Просто зараз у мене був дуже поганий досвід роботи з цією командою, sudo -s. Навіть це не змінює каталог, але це не дало мені повного доступу до кореня. Деякі мої файли були в каталозі, але я не зміг розглянути їх як звичайного користувача та root користувача (sudo -s). Тоді я скористався старим способом (sudo su - root) і перейшов до каталогу, і мої файли тепер були мені видимі. Чому sudo -s надали мені обмежений доступ?
Хаммад Хассан

@HammadHassan немає жодного способу, що те, що ви описуєте, могло статися. Має бути щось ще. Що означає "не в змозі переглянути" файли? Ви, можливо, маєте на увазі "не в змозі прочитати файли"? Ви, можливо, використовуєте шифрування?
тердон

"Неможливо побачити" означає просту команду "ls". Це не показало мені своїх файлів. Шифрування взагалі немає. Мої файли прості. І це справді сталося.
Хаммад Хассан

8

Це дуже просто. Просто введіть

sudo su

замість

sudo su - root

Це збереже вас у тій самій папці, що і root.


9
Це не помиляється, я маю на увазі, що це працює, але використовувати sudo suне має великого сенсу. Ось для чого sudo -s. Я ніколи не розумів, чому так багато підручників з Ubuntu пропонується sudo su.
тердон

@terdon Я також ніколи цього не розумів, але він, мабуть, широко поширений серед усіх користувачів Linux. Можливо, алітерація робить його більш незабутнім.
Бармар

@Barmar особисто, я бачив це лише у світі Ubuntu. Оскільки у більшості систем Linux за замовчуванням є звичайний кореневий обліковий запис, тоді, коли вам потрібна оболонка (ви хочете su, ні sudo) Оскільки, однак, Ubuntu за замовчуванням вимикає кореневий обліковий запис, це sudo suприйшло цілком природно. це, мабуть , так і в деяких куточках світу UNIX, але в Linux я бачив це лише в Ubuntu.
тердон

@terdon Я бачив це десятиліттями, навіть не впевнений, які дистрибуції ми використовували. Ми використовуємо Debian в моїй теперішній компанії, і мої колеги використовують його.
Бармар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.