Как переключиться на пользователя root, но остаться в том же каталоге
9
Я недавно переключился на Ubuntu и заметил одну вещь, когда использую следующую команду для переключения на пользователя root
sudo su - root
Он ведет меня прямо к root (home /root), поэтому я теряю свое место в файловой системе (директории, где я выполнил эту команду). Есть ли способ перейти на root без потери текущего каталога?
Прежде всего, не используйте sudo su. Это не неправильно, не опасно или что-то еще, это просто не элегантно и бессмысленно . Вы запускаете две отдельные программы, чтобы сделать работу, легко выполняемую одной. Если вы хотите запустить оболочку как root, sudoможете сделать это за вас.
Если вы хотите запустить оболочку входа (вот что sudo su -), используйте sudo -i. Однако, поскольку он запускает оболочку входа в систему, по умолчанию вы попадете в домашнюю директорию root.
Для запуска обычной, не входящей в систему оболочки вы можете использовать sudo -s. Это запустит для вас корневую оболочку и сохранит вас в каталоге, из которого вы ее запустили:
Проблема может быть в том, 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». Он не показал мне мои файлы. Нет шифрования вообще. Мои файлы просты. И это действительно произошло.
Это не так, я имею в виду, что это работает, но использование sudo suне имеет особого смысла. Вот для чего sudo -s. Я никогда не понимал, почему так много учебников по Ubuntu предлагают sudo su.
тердон
@terdon Я тоже никогда этого не понимал, но, похоже, он широко распространен среди всех пользователей Linux. Может быть, аллитерация делает его более запоминающимся.
Бармар
@ Бармар лично, я видел это только в мире Ubuntu. Поскольку большинство систем Linux по умолчанию имеют обычную учетную запись root, при необходимости вам потребуется оболочка su(одна, нет sudo). Однако, поскольку Ubuntu по умолчанию отключает учетную запись root, это sudo suпроизошло вполне естественно. это также, очевидно , имеет место и в некоторых уголках мира UNIX, но в Linux я видел это только в Ubuntu.
тердон
@terdon Я видел это десятилетиями, я даже не уверен, какие дистрибутивы мы использовали. Мы используем Debian в моей нынешней компании, и мои коллеги используют его.
sudo -s
что не запускается профиль целевого пользователя, потому что это не оболочка входа в систему. Так что, возможно, реальный вопрос в том, есть ли способ получить оболочку для входа в системуsudo
, но без изменения каталога. Возможно нет.sudo -i
делает. Я использовал,-s
так как OP не хотел входить в оболочку (не хотел переходить$HOME
). Если вам нужна оболочка для входа, используйтеsudo -i
. Я отправил сравнение средsudo -i
,su -
,sudo -s
иsu
в моем вопросе здесь , если вы хотите посмотреть.Это очень просто. Просто введите
вместо
Это будет держать вас в той же папке, что и root.
источник
sudo su
не имеет особого смысла. Вот для чегоsudo -s
. Я никогда не понимал, почему так много учебников по Ubuntu предлагаютsudo su
.su
(одна, нетsudo
). Однако, поскольку Ubuntu по умолчанию отключает учетную запись root, этоsudo su
произошло вполне естественно. это также, очевидно , имеет место и в некоторых уголках мира UNIX, но в Linux я видел это только в Ubuntu.