Ainda sobre sudo e root, acho que vale muito a pena entender melhor dois pontos dessa questão: primeiro, por que algumas distribuições não trazem uma senha root definida por padrão e, segundo, quais são as principais vantagens do sudo. Meu objetivo aqui não é determinar o que é melhor ou pior, mas tentar apresentar mais informações que podem nos ajudar a decidir quando e como utilizar ambos os recursos.
Antes de mais nada, é preciso ter em mente que existem dois tipos de ações que podemos realizar no Linux: as que afetam apenas a conta do próprio usuário e as que envolvem todo o restante do sistema. Podemos definir esses dois tipos como atividades do usuário local e atividades administrativas. De forma simplificada, as atividades administrativas são realizadas através de um tipo especial de conta pré-existente no sistema, chamada de conta "root", ou conta de "super usuário". Esta conta possui direitos e permissões para realizar qualquer coisa no sistema.
Em instalações corporativas, as funções administrativas, bem como o acesso à conta root e suas permissões, são realizadas por alguém especializado nisso, um administrador do sistema, por exemplo, e apenas essa pessoa terá autorização para utilizar a conta root. Mas, em instalações domésticas e pessoais, que é o tipo de instalação que nos interessa aqui, o mais comum é que a mesma pessoa realize tarefas comuns, de usuário local, e administrativas. É aí que a questão do sudo (ou qualquer outra forma de acesso à conta root) se torna relevante.
Em muitas distribuições, como é o caso do Debian, o usuário deve (ou pode) definir uma senha para a conta root, que ele irá utilizar (através do comando "su", "switch user"/"mudar de usuário") quando precisar fazer algo como super usuário. Outras distribuições, como o Ubuntu, adotam outra filosofia, não registrando uma senha para a conta root e atribuindo poderes de super usuário à primeira conta criada na instalação através do comando "sudo" ("super user do", "super usuário, faça...").
Essas distribuições geralmente apresentam os seguintes argumentos contra o acesso direto (e persistente) à conta root:
- Quando você faz o login como root, todas as suas ações estão sujeitas a erros, seja por distração ou desconhecimento, durante todo o tempo da sessão, aumentando em muito as chances de se causar problemas graves.
- A necessidade de ganhar privilégios administrativos é pontual e limitada a algumas poucas tarefas, o que não justificaria os riscos envolvidos.
- Numa tentativa de invasão do sistema, o mundo inteiro sabe que toda máquina rodando Linux tem uma conta root com privilégios totais, e essa conta seria a primeira a ser explorada. Sem uma senha definida, não há nada para ser descoberto.
- O usuário poderia esquecer o terminal aberto e logado em root, possibilitando todo tipo de desastre em ambientes físicos compartilhados.
- Simplesmente não é necessário, porque existem meios que, mesmo que tenham brechas de segurança, elas só podem vir a configurar uma ameaça durante a execução de um comando por vez.
Para ser mais exato, ninguém discorda desses argumentos A questão aqui gira apenas em torno de se radicalizar mais ou menos quanto às limitações de acesso à conta root. Ela pode ter uma senha definida na instalação, pode estar destrancada para uma posterior definição, ou pode estar completamente trancada. As boas práticas, nesse ponto, não são absolutas e são diretamente dependentes do tipo de utilização que se dará à distribuição.
Mas, em havendo o acesso à conta root por parte de usuários que não sejam administradores, valem muito mais o cuidado e o bom senso, porque os riscos são reais e não são pequenos. É preciso trocar a senha root periodicamente, não se deve deixar uma sessão root indefinidamente aberta... coisas assim.
Contudo, existem comandos, principalmente em cadeia, que só vão funcionar se forem executados como root. Na maioria das demais situações, o sudo é a forma mais prática, rápida e segura de realizar tarefas como super usuário.
Basicamente, as vantagens do sudo são:
- Ele só atribui privilégios de super usuário um comando por vez.
- Cada ação como sudo é registrada em um log, permitindo localizar o problema na eventualidade de um erro.
- As políticas de segurança e privilégios podem ser configuradas e graduadas conforme a necessidade.
- A autenticação expira após algum tempo e pode até ser configurada para expirar imediatamente. Observe que, aqui, estamos falando da expiração da senha, e não da necessidade de se utilizar o comando sudo para tarefas administrativas subsequentes.
- Cada usuário que precisar de privilégios de super usuário pode (e deve) utilizar a sua própria senha, evitando divulgar a senha do root entre várias pessoas.
- Permite administrar quem pode ou não pode realizar tarefas administrativas apenas gerenciando a participação no grupo sudo.
Só para evitar mal-entendidos, eu me refiro a "vantagens" no sentido do valor do sudo em si, não em comparação com qualquer outra forma de operação. Também não estou defendendo a erradicação do acesso ao root. Cada coisa tem seu valor e sua aplicação, e a palavra chave aqui é "situações". Cada situação vai exigir um tipo de ferramenta, e nós só precisamos saber qual é a mais adequada naquele momento. É por isso que, na minha opinião, é sempre bom ter todas as ferramentas à disposição e aprender a utilizá-las de forma correta.
Para finalizar, o comando sudo não é a única forma de dar privilégios temporários ao usuário comum. Como já disse, em breve falaremos do pkexec e do fim do equivalente gráfico do sudo, o gksudo. Então, o assunto não está esgotado, mas espero ao menos ter conseguido trazer mais um pouco de perspectiva sobre o que está envolvido nessa discussão.
Fonte da imagem: https://www.reddit.com/r/linux/comments/f9gj6/

Nenhum comentário:
Postar um comentário