Então, eu estive lendo as diferenças entre usar su
e sudo
, e todos parecem concordar que a sudo
abordagem é mais segura do que permitir o acesso à própria conta raiz. Dizem que, com a conta root, você pode quebrar todo o sistema com apenas um único comando. Isso eu entendo. MAS o usuário inicial criado no sistema também tem acesso a todos os comandos usando o sudo. Isso eu posso descobrir executando su -l
. Se for esse o caso, eu posso simplesmente correr sudo <game-ending command>
para arruinar meu sistema. Então, como essa abordagem é melhor ou mais segura do que permitir acesso direto à conta do superusuário? Eu posso executar todos os mesmos comandos ...
É porque usando sudo
na linha de comando eu digo explicitamente ao computador que acho que sei o que estou fazendo? Eles acham que as pessoas esquecerão que estão sob a conta de superusuário, a menos que o digam explicitamente?
As pessoas também afirmam que, se o sistema fosse comprometido e inserido por alguém estrangeiro, estar na conta raiz permitiria que eles fizessem coisas terríveis no meu sistema. Mas parece-me que eles já têm acesso à minha conta e sabem minha senha. Eles podem fazer essas mesmas coisas terríveis usando o sudo e inserindo a minha senha, pois nem precisam saber a senha do super usuário. O que não estou chegando aqui?
fonte
Respostas:
Pessoalmente, não o considero necessariamente mais seguro e a maioria dos benefícios (do sudo) está em um sistema multiusuário. Em um sistema de usuário único, provavelmente é uma lavagem.
Os benefícios são (em nenhuma ordem específica):
sudo -i
é provavelmente o melhor método para isolar as variáveis ambientais da raiz do seu usuário. Ocorre de tempos em tempos, mas é moderadamente esotérico. Consulte https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shellsProvavelmente há mais benefícios, mas esses são os principais, IMHO.
Veja também - https://help.ubuntu.com/community/RootSudo
Para tentar responder a alguns de seus outros pensamentos:
Portanto, embora você tenha observado problemas ou falhas no sudo, o su tem exatamente as mesmas vulnerabilidades e o su não é superior ao sudo nesses aspectos, IMHO
fonte
Imagine que você tem 20 minutos para fazer algo complexo. Você está um pouco de ressaca e precisa se apressar. "Vamos usar su", você diz. "Isso vai economizar tempo" é o seu raciocínio.
Por acidente, você digita
ao invés de
Seu sistema agora está em quarentena e você tem 10 minutos até o prazo.
Se você escolher explicitamente quando precisa de root, poderá minimizar a chance de isso acontecer. A raiz pode não ser necessária,
rm -r ./*
então por que usá-la? Por que correr o risco?É isso que "segurança" significa aqui. Minimizar o risco de usuários (todos os usuários, não apenas iniciantes) cometerem um erro fatal.
Obviamente, este é um exemplo extremo que não deve acontecer em um ambiente de produção (garanto que aconteceu em um ambiente de produção).
Em termos de segurança, há algumas coisas para as quais o sudo também é melhor. Como o @Panther diz - log, restrições, senha root é SPOF, etc.)
fonte
chown -R nobody:nobody /
ou mesmochown -R nobody ../
como raiz.chmod
é claro que também tem problemas semelhantes no modo recursivo. Mas o melhor ponto que você defende é que você só deve ser raiz quando precisar; quanto menos privilégio seu login for, melhor para o uso normal.sudo
? Você escreve emsudo rm -rf /*
vez desudo rm -rf ./*
e lança novamente.sudo rm -rf ./*
. Você provavelmente tem acesso de gravação ao material no diretório atual, portanto não precisa do sudo para esse comando. Assim, as extremidades comando typoed sendorm -rf /*
, que rende uma longa seqüência de "Permissão negada" mensagens, permitindo que você saiba que você precisactrl-c
antes que fique com o que você realmente pode excluir, em vez de apenas apagar tudo/bin
,/boot
,/dev
, e metade/etc
antes você até percebe que algo está errado.Quero acrescentar um pouco de perspectiva histórica às outras respostas. Infelizmente, não tenho nenhuma fonte pronta, exceto minhas próprias lembranças de discussões da Usenet e artigos de revistas.
Algum tempo atrás, na década de 1990, as distribuições estavam facilitando a instalação do Linux em seu próprio hardware, mesmo com pouco conhecimento em informática. algum dialeto UN * X. Em vez disso, muitos estavam acostumados a sistemas (usuário único) como o Windows 95/98. E eles aprenderam que a maioria das tarefas de administração do sistema Linux tornava necessário trabalhar sob essa estranha conta "raiz".
Assim, alguns usuários fizeram login como root e usaram essa conta para todo o trabalho diário. Por que eles devem digitar
su
a senha root e outra vez ou fazer login em um novo tty apenas para alguns comandos de administrador? Mas usar o root para tudo não é, obviamente, uma boa ideia, pois você pode causar muito mais dano ao seu sistema com algum comando desatento no lugar errado. Isso até levou alguma distro (foi SuSE?) A modificar o plano de fundo da área de trabalho para o usuário root exibir um grande aviso de que você deveria usar essa conta apenas para tarefas administrativas.Portanto, a maneira como o Ubuntu
sudo
tem algumas vantagens (além das já listadas pela Panther ).sudo
armazena em cache suas credenciais; portanto, para vários comandos de administrador em sequência, você só precisa digitar sua senha uma vez (em contraste comsu
). Isso reduz o desejo de abrir apenas um shell ou um novo terminal com privilégios de root .¹ E para aqueles que não se atrevem a fazê-lo, houve festas de instalação.
² Mas você pode usar um comando como
sudo -i
ousudo su - root
para obter um shell raiz depois de fazer o login como um usuário normal.³ Mas você sabe, é claro, que não deve simplesmente copiar e colar comandos da Internet , certo?
fonte
sudo su -
ousudo su - root
? Porque eu já vi alegações semelhantes, por exemplo, de que o MacOS X não possui raiz, mas isso é completamente errado quando é preciso apenas executar o primeiro comando ... #root
e uma senha no prompt de login ou na caixa de diálogo de login do X e iniciar sua sessão como root. Mas você pode usar um de seus comandos (eu prefirosudo -i
que seja mais curto e com preguiça) para obter um shell raiz.Foi possível desativar o login root através do ssh por décadas. A maneira como o Ubuntu desabilita a conta root e faz as pessoas sudo tudo não passa de um truque. Apenas "sudo -s" e você terá um shell raiz. Desative o login root através do ssh e deixe lá.
fonte
Dependendo da configuração,
sudo <game ending command>
não funcionará necessariamente. Obviamente, se asudoers
configuração exibir "usuário ALL = (ALL) ALL"),sudo
não oferecerá proteção adicional. No entanto, você pode especificar uma lista de comandos privilegiados que precisa executar frequentemente, como instalar novos pacotes, e deixar de fora comandos perigososrm
.Dessa forma, você pode executar todos os comandos se fizer login como
root
, mas como você precisará disso ocasionalmente, o risco de execução<game ending command>
será substancialmente reduzido.fonte
Esse sudo permite que você permita apenas determinados comandos não é o único benefício do sudo sobre o su.
Na maioria das lojas, esse não é o benefício mais importante.
Com o sudo, você sabe quem executou um comando específico.
Agora, talvez isso não importe para você. Por exemplo, você pode ser o único usuário do seu computador. Nesse caso, sudo possivelmente não é melhor que su.
Mas muitos hosts têm mais de um administrador.
O sudo se torna muito útil porque, se alguém faz a coisa errada, o sudo informa quem o fez.
Isso permite que você entenda por que os erros ocorreram e instrua as pessoas a evitar erros recorrentes ou, se necessário, remover as ferramentas de alguém.
Como bônus, quando as pessoas sabem que suas ações são registradas, geralmente são um pouco mais cuidadosas.
Sudo não é perfeito.
Se duas pessoas fazem "sudo sh" ao mesmo tempo, pode ser difícil atribuir comandos a uma ou a outra.
E um administrador mal-intencionado sempre pode remover ou editar logs - embora fazer isso de forma limpa nem sempre seja tão fácil quanto as pessoas pensam, especialmente se você tiver um log centralizado.
O sudo não necessariamente interrompe uma ação estúpida ou maliciosa, por todos os motivos identificados na pergunta original.
Mas isso oferece uma chance muito maior de impedir a recorrência.
fonte
sudo
permite tudo. Claro, você pode configurá-lo para limitar os comandos que um usuário pode executar, mas acho que não é o caso da pergunta, conforme solicitado.