Existe alguma diferença entre o sudo su - root eo sudo -u root -H / bin / bash?

2

Como o título diz, há uma diferença entre esses dois comandos:

sudo su - root
sudo -u root -H /bin/bash

Estou usando o GNU / Linux, se isso faz diferença.

    
por David 21.03.2012 / 16:30

4 respostas

8

Se você deseja se tornar root, a melhor maneira de fazer isso é sudo -i , que simula o login inicial (fornecendo todos os caminhos e variáveis associados a um login root). Se você quiser fazer o login sem obter os usuários root .files , você pode usar apenas sudo su (não é necessário especificar o usuário root).

    
por 21.03.2012 / 16:41
6
su - # causes the user to run a login shell aka bash --login
     # the same as if the user had logged in as the root from the login prompt

e sudo su - são iguais a sudo su - root , especificando que a raiz é redundante.

sudo -u root -H /bin/bash novamente, o -u root é redundante, sudo é executado como root por padrão, mas o -H /bin/bash é executado como um sudoer, o env vars SUDO_USER, SUDO_UID e SUDO_COMMAND são definidos para os chamadores name / uid e bash respectivamente.

Mas, neste caso, o bash não é executado como um shell de login.

    
por 21.03.2012 / 23:20
2

Obviamente, eles podem diferir se o shell root não for / bin / bash - isso é possível para ambientes Linux pequenos ou incorporados, ou tradicional para sistemas BSD que preferem / bin / [t] csh para usuário root. Além disso, 'su -' descarta todo o ambiente, exceto algumas variáveis relacionadas ao terminal. O comportamento do sudo no ambiente é configurável (veja env_reset em / etc / sudoers). Então, tenha cuidado com os detalhes ...

    
por 21.03.2012 / 21:40
0

A maior diferença entre os dois comandos listados é que executar su - fará com que o shell seja um shell de login. Isso significa que os scripts de login do shell do root serão executados (.bash_profile por exemplo, se for bash), o PWD será definido como $ HOME e determinadas partes do ambiente do usuário serão inicializadas. sudo bash apenas executa um novo shell como o shell do usuário de destino e o -H apenas inicializa uma variável, $ HOME, no diretório inicial do usuário de destino. Outras variáveis não serão definidas, e algumas serão transportadas para o novo shell, conforme definido em sua política sudo.

    
por 22.03.2012 / 01:20

Tags