Parece que você pode ter alguma confusão entre o que o sudo e o su são usados. Ambos permitem que um usuário execute comandos como se fossem outro usuário com diferentes privilégios, mas existem diferenças distintas.
Uma generalização excessiva seria:
- su - obtém um shell com uid / gid de outro usuário, autenticando-se com essa senha de usuário.
- sudo - executa um comando com uid / gid de outro usuário, autenticando-se com sua senha.
SU
Em geral, a maioria das pessoas utiliza su para iniciar um shell com (s) ubstitue (u) ser id e / ou group id. Isso é mais comumente feito para obter privilégios de root, mas também pode ser usado por qualquer usuário do sistema.
Se o usuário que está executando o su não for root, ele pedirá a senha do usuário que você está tentando su como.
-
su -
login como root com um shell de login que terá um ambiente semelhante a um login real. Precisa da senha do root. -
su - alice
login como alice com um shell de login que terá um ambiente semelhante a um login real. Precisa da senha de alice. -
su
ousu alice
como exemplos acima com a diferença de que o ambiente inicial do usuário é mantido, com exceção das variáveis de ambiente USER, SHELL e HOME. Isso pode ter conseqüências inesperadas. Como exemplo, como o PATH não é alterado, ao tentar alterar a senha, você pode não estar executando o comando / usr / bin / passwd mas / usr / local / bin / passwd ou até mesmo / home / {$ ORIGUSER} / bin / passwd. -
su -c command -
execute o comando como root com um shell de login e saia para o shell do usuário original. -
su -c command - alice
executa o comando como alice com um shell de login e sai para o shell original do usuário.
Referências
- man su
SUDO
O sudo permite mais flexibilidade que o su. O mais óbvio para o usuário final é que ele está autenticando usando sua própria senha ou até mesmo sem senha, se configurado dessa forma.
Utilizando o arquivo de configuração visudo, os privilégios permitidos pelo usuário podem ser controlados com muito mais controle.
Como exemplo, você pode permitir que um usuário execute alguns comandos sem necessidade de senha e outros comandos podem exigir uma senha.
Por favor, veja as man pages associadas para ter uma ideia de todas as variações que podem ser feitas.
Referências
Os dois benefícios mais visíveis do sudo vs su
- A capacidade de dar a certos grupos de usuários os privilégios de raiz de apenas um subconjunto de comandos sem precisar fornecer a senha de root. Isso permite uma maneira de ter uma camada restritiva de usuários de nível de administrador com acesso raiz somente aos comandos necessários para realizar seu trabalho.
- Como você está executando apenas um comando como root, reduz os riscos de danos acidentais. Por exemplo, você acha que está em seu diretório de usuários / home / user / myjunkdocs e executa
rm -rf
, mas na verdade está no diretório raiz e exclui o software do sistema.