Eu já vi muitos comentários aqui no Ask Ubuntu sobre preferências de uso em sudo -s
vez de sudo su
.
Para mim, esses dois comandos fazem exatamente o mesmo. Mas por que sudo -s
deveria ser melhor?
command-line
sudo
su
fitojb
fonte
fonte
sudo -i
ousudo su
é melhor do quesudo -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/...Respostas:
Eu acho que
sudo -s
nã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
.Xauthority
arquivo, mas eu nunca tive um problema com isso.sudo su
ousudo -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, ...).
fonte
Porque
sudo -s
não mudará suas variáveis de ambiente, principalmente$HOME
, as que permanecerãoHOME=/home/USER
. Se você usar,sudo su
isso mudará para oHOME=/root
que pode ter efeitos colaterais negativos quando os programas iniciados tentam acessar o diretório pessoal do usuário.Então, basicamente, é como
sudo
vsgksudo
ao executar programas gráficos.fonte
Além das diferenças já mencionadas nas variáveis de ambiente, acho
sudo su
bobo e inútil porque você está pedindosudo
para executarsu
como 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.fonte
sudo su
para ser root, sim, basta irsudo -i
, por exemplo. Mas isso não ajuda quando você quer se tornar um usuário diferente:sudo su - myuser
.sudo -i
mudará para o/root
diretório esudo su
permanecerá no diretório que você é.sudo -u myuser
,.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:
que fará o logon e o cd no caminho inicial, mesmo se o usuário não tiver um shell atribuído
fonte