Linux - use “su -” mas mantenha o diretório atual

11

Quando eu faço su - para ir para o root, meu diretório atual é configurado para a raiz do usuário. Existe alguma maneira de manter o diretório atual em que eu estava, muito parecido com sudo -s . Ou a resposta é usar o sudo?

    
por Rory 17.06.2009 / 16:45

8 respostas

18

É sempre melhor usar o sudo, se possível, porque você não precisa saber (ou dar a alguém) a senha do root. Definir a senha de root para algo longo e horrível e, em seguida, bloqueá-lo em um cofre.

Se você quiser negar acesso a alguém mais tarde, basta remover o acesso deles ao sudo, em vez de ter que ensinar a todos os outros uma nova senha de root.

No entanto, você não precisa usar o parâmetro '-' se não quiser. Você receberá um shell como root, mas ele não será um shell de login (para que ele não seja executado root .profile.)

    
por 17.06.2009 / 16:47
16

Concordo que o sudo é quase sempre uma resposta melhor, mas para responder à outra parte da questão ...

O '-' em 'su -' indica que você deseja emular um login de superusuário, em vez de apenas executar com privilégios de superusuário.

Se você usar o simples 'su' em vez de 'su -', você permanecerá no mesmo diretório; no entanto, você também estará executando no mesmo ambiente, portanto, talvez seja necessário modificar seu caminho para acessar alguns comandos do administrador.

    
por 17.06.2009 / 16:51
9

Se você usa su sem o - , deve mantê-lo em sua atual diretório. - , -l ou --login diga su para:

Provide an environment similar to what the user would expect had the user logged in directly.

Ou apenas use o sudo, ele tem muitas outras vantagens. Ou chaves ssh.

    
por 17.06.2009 / 16:51
5

Você definitivamente deve usar o sudo.

su -m
-m (-p): do not reset environment variables (generally not recommended)

Isso manterá você na pasta quando mudar para o root.

Benefícios do uso do sudo

    
por 17.06.2009 / 16:50
3

Use o sudo :). Sério, você não precisa de su. 'sudo' é melhor, pois você só o usa para comandos privilegiados e pode ajudar a evitar erros. Você também ganha responsabilidade.

    
por 17.06.2009 / 16:49
2

Se você usa "su", ele faz um shell interativo. Isso é o mesmo que "sudo -s". "su -" cria um shell de login, que substituirá o ambiente. "sudo -i" é o equivalente com o sudo. Se você está tentando obter um shell interativo, você deve sempre usar o sudo -i (ou su -), ou é possível acabar com as permissões de arquivos estranhos no diretório inicial do usuário.

    
por 17.06.2009 / 16:50
2

Se você realmente quiser usar su , há uma maneira de permanecer no mesmo diretório.

su - <user> -c "cd 'pwd'; bash"

O que está acontecendo aqui:

  • su - <user> = faça login como
  • -c que significa "executar um comando no shell do novo
  • -c "cd 'pwd'" o comando que damos é mudar para o diretório atual ( pwd ) - mas como usamos os backticks, o comando pwd é avaliado antes de executarmos o comando su para que realmente mudemos para o diretório Estamos no AGORA como o antigo usuário. O único problema aqui é que o novo shell sai logo após a execução do comando, então adicionamos:
  • -c "cd 'pwd'; bash" , o que significa "executar bash (novo shell) depois de executar o comando cd e o shell bash não sai até sairmos dele.
por 16.01.2014 / 08:57
0

você deve modificar a origem do su para realizar esse trabalho. Há uma chamada chdir em um procedimento de inicializar variâncias do ambiente. comente os estados incluídos nessa chamada. e agora, você pode fazer "su -" mas mantém o diretório atual.

    
por 20.02.2010 / 11:01

Tags