Como mudar para o usuário root, mas permanecer no mesmo diretório

9

Recentemente, mudei para o Ubuntu e observei uma coisa ao usar o seguinte comando para mudar para o usuário root

sudo su - root

Isso me leva diretamente à home do root ( /root), então eu perco meu lugar no sistema de arquivos (o diretório em que executei este comando). Existe alguma maneira de mudar para o root sem perder o diretório atual?

Hammad Hassan
fonte

Respostas:

16

Primeiro de tudo, não use sudo su. Não é errado, perigoso ou qualquer coisa, é apenas deselegante e sem sentido . Você está executando dois programas separados para fazer um trabalho facilmente manipulado por um. Se você deseja iniciar um shell como root, sudopode fazer isso por você.

Se você deseja iniciar um shell de login (é isso que sudo su -) faz, use sudo -i. Porém, desde que ele inicia um shell de login, você será levado ao diretório inicial do root por padrão.

Para iniciar um shell regular, sem login, você pode usar sudo -s. Isso iniciará um shell raiz para você e o manterá no diretório em que você o executou:

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

Portanto, a maneira de iniciar um shell raiz e permanecer no mesmo diretório é sudo -s.

Terdon
fonte
1
O problema pode ser que sudo -snão execute o perfil do usuário de destino porque não é um shell de logon. Portanto, talvez a verdadeira questão seja se existe uma maneira de obter um shell de login sudo, mas sem alterar o diretório. Provavelmente não.
Barmar
@ Barmar não, mas sudo -ifaz. Eu usei -sdesde que o OP não queria um shell de login (não queria ir para $HOME). Se você deseja um shell de login, use sudo -i. Eu publiquei uma comparação dos ambientes de sudo -i, su -, sudo -se suna minha pergunta aqui se você quiser dar uma olhada.
terdon
Agora mesmo eu tive uma experiência muito ruim com esse comando, sudo -s. Mesmo ele não altera o diretório, mas não me deu acesso root completo. Alguns dos meus arquivos estavam presentes em um diretório, mas não consegui vê-los como usuário normal e como usuário root dessa maneira (sudo -s). Então eu usei o caminho antigo (sudo su - root) e fui para o diretório e meus arquivos agora estavam visíveis para mim. Por que sudo -s me deu acesso restrito?
Hammad Hassan
@HammadHassan, não há como o que você descreve poderia ter acontecido. Deve haver algo mais acontecendo. O que você quer dizer com "incapaz de ver" os arquivos? Você quer dizer "incapaz de ler os arquivos"? Você talvez esteja usando criptografia?
terdon
"incapaz de ver" significa comando simples "ls". Não me mostrou meus arquivos. Sem criptografia. Meus arquivos são simples. E isso realmente aconteceu.
27917 Hammad Hassan
8

Isto é muito simples. Apenas digite

sudo su

ao invés de

sudo su - root

Isso manterá você na mesma pasta que o root.

Joo Nice
fonte
9
Isso não está errado, quero dizer, funciona, mas usar sudo sunão faz muito sentido. É para isso que sudo -sserve. Eu nunca entendi por que tantos tutoriais do Ubuntu sugerem sudo su.
terdon
@terdon Eu também nunca entendi, mas parece ser generalizado entre todos os usuários do Linux. Talvez a aliteração a torne mais memorável.
Barmar
@ Barmar pessoalmente, eu só vi isso no mundo do Ubuntu. Como a maioria dos sistemas Linux tem uma conta root normal por padrão, ao precisar de um shell, você faria su(sozinho, não sudo). Como, no entanto, o Ubuntu desabilita a conta root por padrão, sudo suisso ocorreu naturalmente. aparentemente também é o caso em alguns cantos do mundo UNIX, mas no Linux, eu só vi isso no Ubuntu.
terdon
@terdon Eu o vejo há décadas, nem tenho certeza de quais distribuições estávamos usando. Nós usamos o Debian na minha empresa atual e meus colegas de trabalho o usam.
Barmar