Quais são os benefícios do sudo sobre o su?

19

Qual é o benefício real que o Ubuntu (ou derivados do Debian) obtém ao desativar o usuário root?

Em todos os lugares que leio, ele diz para evitar danos não intencionais para usuários inexperientes. Eu quero saber exatamente o que, pois sudopode executar todos os comandos (que eu conheço / uso).

Então, em que caso a raiz pode causar danos, enquanto sudonão pode?

PS: Eu sei como sudofunciona.

Web-E
fonte

Respostas:

31

Então, em que caso a raiz pode causar danos, enquanto o sudo não pode?

Como você normalmente deve invocar sudocada vez que quiser fazer algo que exija privilégios, o raciocínio é que você "pensará antes de saltar", ou seja, não apenas colocará o sudo na frente de algo sem pensar por um segundo qual é o comando que você está executando vai fazer.

Por suoutro lado, quando você entra, entra. Você tem carta branca (uma licença aberta) para fazer tudo e qualquer coisa, e o raciocínio é que você pode esquecer por um momento que possui esses privilégios e se tiver azar, execute algo que afetará / danificará seriamente seu sistema - se você não tivesse seus privilégios, o comando não faria nada sério.

ish
fonte
8
A lógica "pense antes de pular" é tão ingênua quanto os usuários que pensam para parar de pensar quando uma caixa de diálogo diz "Deseja realmente instalar o TrashTheComputer.Virus: Sim / não?" reduzirá as taxas de infecção por malware.
Dan Neely
9
@ DanNeely - acho que não. Eu digito muitos comandos, e a maioria deles não exige sudo, então não o uso. Quando eu uso, me dá um momento de pausa. Sim, estou falando como programador, não como um usuário comum, mas, novamente, os usuários comuns não usam a linha de comando.
Nathan Long
2
@ NathanLong não é bem verdade no Linux, a razão pela qual essa pergunta existe mostra um "usuário médio" sem entender por que usar sudomais su. Com muita frequência, as pessoas dizem "use sudo porque é mais seguro que su" - o que é ingênuo pensar, pois não é nada mais seguro. Esquecer que você usou sunão é desculpa, isso é apenas incompetência abaixo da direita se você executar um comando como root acidentalmente.
ash
1
@ash Ainda digo que um usuário médio não perguntaria sobre as implicações comparativas de segurança de dois métodos para aumentar o privilégio do usuário. De fato, o OP tem perguntas sobre o StackOverflow. Mas, à parte, OP, lembrar o que você fez 15 segundos atrás é mais fácil do que lembrar o que você fez ontem, e você pode facilmente ter uma sessão de terminal por dias. Então, sim, cabe a você não esquecer quando usa su, mas pessoalmente prefiro não montar bombas do que assumir que vou me lembrar de desarmá-las.
Nathan Long
16

Na IMO, as principais vantagens do sudo sobre o su são que o sudo possui um registro superior de quais comandos foram executados e o sudo oferece um controle mais preciso sobre o que os usuários podem fazer.

su é all ou none, mas o sudo pode ser configurado para permitir o acesso a alguns, mas não a todos os comandos.

Veja https://help.ubuntu.com/community/RootSudo para uma discussão mais completa, incluindo vantagens e desvantagens.

Pantera
fonte
11

su -

Quando logado como root , qualquer tarefa iniciada, ação iniciada ou evento aleatório causado pela visita a um determinado site, etc. será executado como superusuário .

sudo

Quando você chama o sudo , ao executar um comando, apenas esse comando será executado como superusuário .

Você será solicitado a fornecer sua senha antes que o comando seja executado. Portanto, a interação do usuário por você também é necessária .

Tentativas de invocar o sudo também podem ser registradas .

david6
fonte
2
Na verdade, ele pede a senha do usuário atual, o que facilita o gerenciamento da senha root. Se uma conta for removida do sistema, a senha root não precisará ser redefinida. Melhor ainda, a conta raiz nem sequer exige uma senha; portanto, a conta raiz não pode ser comprometida por força bruta.
jippie
Os estados de boas práticas gerais do @jippie removem / bloqueiam / invalidam a senha root e permitem apenas o acesso via sudo su. enquanto o hífen -é uma bandeira aceito por sue trata sua concha como se você estiver conectado como o usuário (é executado um conjunto diferente de arquivos de ambiente ie .bashrc / .profile)
ash
3

Trata-se de gerenciamento de usuário / senha para administradores de sistemas.

Se você tiver vários usuários, todos deverão ter contas separadas e poderão ser rastreados usando essas contas. Isso significa que as pessoas não podem esconder sua identidade. Além disso, se você precisar revogar permissões específicas de um usuário, também não precisará redefinir a senha root. Para dar a todas as pessoas em um ambiente com mais de 2 administradores, a senha root cria um pesadelo quando uma pessoa sai. Você deve não apenas alterá-lo, mas comunicá-lo, etc. Todas essas coisas também precisam acontecer quando um deles tem um laptop roubado ou coisas assim. Uma conta com uma senha por pessoa simplifica a administração. É semelhante à filosofia por trás de por que cada serviço deve ter sua própria conta. Se uma conta estiver comprometida, você não precisará reconfigurar outra dúzia de serviços (como tarefas de backup) para usar uma conta diferente.

Também acho pessoalmente conveniente não ter outra senha para acompanhar, perder e comprometer. No RHEL, desabilito especificamente a conta root depois de configurar o sudo, para que não seja necessário rastreá-la. De vez em quando, um usuário executa o arquivo sudo, mas isso pode ser corrigido no modo de usuário único. (Naturalmente, geralmente é uma máquina de produção.)

NOTA: 'sudo bash' permitirá que você pule a digitação do sudo para cada comando ...

flickerfly
fonte
Eu sempre sudo mc: D
Rony
A única resposta aqui digna de votação antecipada responde claramente à questão sem mais desambiguar a questão ou induzir as pessoas a um falso senso de informação.
ash ash
@ flickerfly, acredito que em "redefinir a senha root para o mesmo usuário", a "para o mesmo usuário" deve ser removida - será mais preciso assim.
Richlv
@ Richlv, você está certo. Eu fiz a edição que você sugeriu. Não tenho certeza do que eu pretendia lá.
precisa saber é o seguinte
2

Acho que primeiro, precisamos analisar o que su e sudo realmente são

su - significa Substituto usuário. Você usa isso para alternar para um shell como outro usuário usando a senha do usuário. Comumente usado com raiz. Não requer uma senha quando executada como root.

sudo - permite que um usuário permitido execute um comando especificado como outro usuário. Também comumente usado com raiz. No entanto, isso permite que você gerencie especificamente quais comandos podem ser executados como outro uso. (Por exemplo, você pode dar ao usuário a capacidade de executar um script init.d, mas nada mais.)

Observe que você sempre pode executar sudo suou sudo -ie isso fornecerá um shell raiz. No entanto, nenhuma senha root significa que não é necessário fazer login diretamente como root ... o que significa que ninguém pode invadir esse usuário.

EDIT: talvez a resposta que você esteja procurando seja: não ter uma senha root o força a usar sudo, o que, por sua vez, o alinha naturalmente à sudofilosofia que sugere que você imponha maior controle sobre as ações executadas como root.

user606723
fonte
Eu escrevi isso mesmo ....
user606723
2

Além disso, há considerações de log a serem consideradas entre sudo e su. Ser su simplesmente faz tudo como root, sem nenhuma entrada além de uma linha no log de autenticação, dizendo que você se tornou root.

Sudo, por outro lado - sempre é registrado como seu ID de usuário com privilégios escalonados.

kd1s
fonte
0

Geralmente, o login como su é mais fácil ao executar tarefas administrativas. No entanto, há pelo menos uma exceção: quando a propriedade do arquivo é importante. Se você precisar que um usuário seja o proprietário de um arquivo, efetue login como esse usuário e use sudo para descarregar ou copiar arquivos. Exemplos simples são arquivos de favoritos e papéis de parede. Se um usuário não possuir o arquivo, os favoritos "Restaurar" do Firefox "Do arquivo" falharão. Quando você define um papel de parede da área de trabalho, ele pode não funcionar, a menos que você seja o proprietário do arquivo. Às vezes, você pode apenas definir privilégios ou ativar como um arquivo executável, mas algumas configurações ou programas falham se você não for o proprietário de um arquivo.

DotheMath45
fonte
Você faz login como root e usa o Firefox para navegar na web? Penso que esta é a razão para desativar a conta root. Isso elimina a possibilidade de apenas fazer login como root para uso diário.
Adempewolff