Por que sudo -s é melhor que sudo su?


28

Eu já vi muitos comentários aqui no Ask Ubuntu sobre preferências de uso em sudo -svez de sudo su.

Para mim, esses dois comandos fazem exatamente o mesmo. Mas por que sudo -sdeveria ser melhor?


1
Eu acho que sudo -iou sudo sué melhor do que sudo -s, por motivos mencionados aqui: ubuntuforums.org/showpost.php?p=6188826&postcount=4 também: esta é uma possível duplicata de superuser.com/questions/29/...
organizar

Eu acho que esta questão deve ser movido para unix.stackexchange.com
IGI

Respostas:


26

Eu acho que sudo -snão é "melhor", é apenas diferente.

sudo -s

mantém seu diretório $ HOME; portanto, quando você inicia os programas, eles usam seus arquivos de configuração (e não os da raiz) etc. Desvantagem: eles também podem alterar a propriedade dos seus arquivos no diretório $ HOME, exemplo típico é o .Xauthorityarquivo, mas eu nunca tive um problema com isso.

sudo su ou sudo -i

Os programas usarão o diretório inicial da raiz e seus arquivos de configuração. Isso pode ser mais intuitivo, mas também significa que não usará nenhuma configuração que você tenha definido (aliases, histórico do bash, ...).


1
Ok, agora eu entendo a diferença. Obrigado!
Fitojb 4/10/11

1
"sudo su" não é equivalente a "sudo -i". "sudo -i" é equivalente a "sudo su -" mas "sudo su -" mantém o diretório de trabalho atual, enquanto "sudo -i" o move para a casa de raiz
Gregory Pakosz

13

Porque sudo -snão mudará suas variáveis ​​de ambiente, principalmente $HOME, as que permanecerão HOME=/home/USER. Se você usar, sudo suisso mudará para o HOME=/rootque pode ter efeitos colaterais negativos quando os programas iniciados tentam acessar o diretório pessoal do usuário.

Então, basicamente, é como sudovs gksudoao executar programas gráficos.


5

Além das diferenças já mencionadas nas variáveis ​​de ambiente, acho sudo subobo e inútil porque você está pedindo sudopara executar sucomo root e pede para executar um shell como root. Por que pedir a um programa que solicite a um programa um shell raiz, quando você pode apenas ter o primeiro programa desse shell? Isso importa em algum sentido prático? Não, eu sou apenas pedante.


Você está certo, é um pouco redundante.
Fitojb 4/10

Bem, não completamente: se você estiver usando sudo supara ser root, sim, basta ir sudo -i, por exemplo. Mas isso não ajuda quando você quer se tornar um usuário diferente: sudo su - myuser.
Hggdh 04/10

2
Há outra diferença: sudo -imudará para o /rootdiretório e sudo supermanecerá no diretório que você é.
laurent

1
@hggdh sudo -u myuser,.
psusi

3

Discordo de outras respostas ao considerar os casos em que você deseja fazer login como um usuário que não possui um shell. Esse é um caso muito comum com usuários atribuídos a serviços.

O uso de "sudo su" iniciará o shell especificado pelo usuário. No entanto, no caso de um usuário atribuído ao processo do servidor, o shell é / usr / bin / false e o log falhará. Em vez disso, você deve inserir como:

sudo -sHu <server-user>

que fará o logon e o cd no caminho inicial, mesmo se o usuário não tiver um shell atribuído

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.