Как переключиться на пользователя root, но остаться в том же каталоге


9

Я недавно переключился на Ubuntu и заметил одну вещь, когда использую следующую команду для переключения на пользователя root

sudo su - root

Он ведет меня прямо к root (home /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, но без изменения каталога. Возможно нет.
Бармар

@ Бармар нет, но sudo -iделает. Я использовал, -sтак как OP не хотел входить в оболочку (не хотел переходить $HOME). Если вам нужна оболочка для входа, используйте sudo -i. Я отправил сравнение сред sudo -i, su -, sudo -sи suв моем вопросе здесь , если вы хотите посмотреть.
тердон

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

@HammadHassan, то, что вы описываете, никак не могло произойти. Там должно быть что-то еще происходит. Что вы имеете в виду "не видеть" файлы? Может быть, вы имеете в виду «невозможно прочитать файлы»? Возможно, вы используете шифрование?
Terdon

«не видеть» означает простую команду «ls». Он не показал мне мои файлы. Нет шифрования вообще. Мои файлы просты. И это действительно произошло.
Хаммад Хасан

8

Это очень просто. Просто введите

sudo su

вместо

sudo su - root

Это будет держать вас в той же папке, что и root.


9
Это не так, я имею в виду, что это работает, но использование sudo suне имеет особого смысла. Вот для чего sudo -s. Я никогда не понимал, почему так много учебников по Ubuntu предлагают sudo su.
тердон

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

@ Бармар лично, я видел это только в мире Ubuntu. Поскольку большинство систем Linux по умолчанию имеют обычную учетную запись root, при необходимости вам потребуется оболочка su(одна, нет sudo). Однако, поскольку Ubuntu по умолчанию отключает учетную запись root, это sudo suпроизошло вполне естественно. это также, очевидно , имеет место и в некоторых уголках мира UNIX, но в Linux я видел это только в Ubuntu.
тердон

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