O Sistema Linux é muito mais seguro do que qualquer outro. Uma das maneiras de implementar segurança no Linux é a política de gerenciamento de usuários e permissões de usuário e os usuários normais não são autorizados a realizar operações de sistema.
Se um usuário normal precisa realizar alguma alteração no sistema, ele precisa usar o comando ‘su‘ ou ‘sudo‘.

NOTA – Este artigo é mais aplicável a distribuições baseadas no Ubuntu, mas também é aplicável à maioria das distribuições populares do Linux.
‘su’ Vs ‘sudo’
‘su‘ obriga você a compartilhar sua senha de root com outros usuários, enquanto ‘sudo‘ permite executar comandos de sistema sem a senha de root. ‘sudo‘ permite usar sua própria senha para executar comandos do sistema, ou seja, delega responsabilidade do sistema sem senha de root.
O que é ‘sudo’?
‘sudo‘ é um binário raiz setuid, que executa comandos de root em nome de usuários autorizados e os usuários precisam inserir sua própria senha para executar comando do sistema seguido de ‘sudo‘.
Quem pode executar ‘sudo’?
Podemos executar ‘/usr/sbin/visudo‘ para adicionar/remover a lista de usuários que podem executar ‘sudo‘.
$ sudo /usr/sbin/visudo
A screen shot of ‘/usr/sbin/visudo‘ file, looks something like this:
A lista sudo parece com a seguinte string, por padrão:
root ALL=(ALL) ALL
Nota: Você precisa ser root para editar o arquivo /usr/sbin/visudo.
Concedendo Acesso sudo
Em muitas situações, o Administrador do Sistema, especialmente os novatos na área, encontram a string “root ALL=(ALL) ALL” como um modelo e concedem acesso ilimitado a outros, o que pode ser potencialmente muito prejudicial.
Editar o arquivo ‘/usr/sbin/visudo’ para algo como o padrão abaixo pode ser realmente muito perigoso, a menos que você confie completamente em todos os usuários listados.
root ALL=(ALL) ALL adam ALL=(ALL) ALL tom ALL=(ALL) ALL mark ALL=(ALL) ALL
Parâmetros do sudo
A properly configured ‘sudo‘ is very flexible and number of commands that needs to be run may be precisely configured.
A Sintaxe da linha ‘sudo’ configurada é:
User_name Machine_name=(Effective_user) command
A Sintaxe acima pode ser dividida em quatro partes:
- Nome_do_usuário: Este é o nome do usuário ‘sudo‘.
- Nome_do_Computador: Este é o nome do host, no qual o comando ‘sudo’ é válido. Útil quando você tem muitas máquinas hospedeiras.
- (Usuário_Efetivo): O ‘Usuário efetivo’ que tem permissão para executar os comandos. Essa coluna permite que os usuários executem Comandos de Sistema.
- Comando: comando ou conjunto de comandos que o usuário pode executar.
Leitura sugerida: 10 Configurações Úteis de Sudoers para Configurar o ‘sudo’ no Linux
Algumas situações e suas linhas ‘sudo’ correspondentes:
Q1. Você tem um usuário mark que é um Administrador de Banco de Dados. Você deve fornecer a ele todo o acesso no Servidor de Banco de Dados (beta.database_server.com) apenas e não em nenhum outro host.
Para a situação acima, a linha ‘sudo’ pode ser escrita como:
mark beta.database_server.com=(ALL) ALL
Q2. Você tem um usuário ‘tom‘ que deve executar comandos do sistema como usuário que não seja root no mesmo Servidor de Banco de Dados, conforme explicado acima.
Para a situação acima, a linha ‘sudo’ pode ser escrita como:
mark beta.database_server.com=(tom) ALL
Q3. Você tem um usuário sudo ‘cat‘ que deve executar apenas o comando ‘dog‘.
Para implementar a situação acima, podemos escrever ‘sudo’ como:
mark beta.database_server.com=(cat) dog
Q4. E se o usuário precisar receber vários comandos?
Se o número de comandos que o usuário deve executar for menor que 10, podemos listar todos os comandos separados por espaços em branco, conforme mostrado abaixo:
mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...
Se esta lista de comandos varia para o intervalo, onde literalmente não é possível digitar cada comando manualmente, precisamos usar aliases. Aliases! Sim, a utilidade do Linux em que um comando longo ou uma lista de comandos pode ser referida por uma palavra-chave curta e fácil.
A few alias Examples, which can be used in place of entry in ‘sudo‘ configuration file.
User_Alias ADMINS=tom,jerry,adam user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top
É possível especificar um Grupo de Sistema, em vez de usuários, que pertence a esse grupo apenas sufixando ‘%’ como abaixo:
%apacheadmin WEBSERVERS=(www) APACHE
Q5. E quanto à execução de um comando ‘sudo‘ sem inserir a senha?
Podemos executar um comando ‘sudo‘ sem inserir a senha usando a bandeira ‘NOPASSWD‘.
adam ALL=(ALL) NOPASSWD: PROCS
Aqui o usuário ‘adam‘ pode executar todos os comandos com alias sob “PROCS”, sem inserir a senha.
Leitura sugerida: Deixe o Sudo Insultar Você Quando Você Digitar a Senha Incorreta
“sudo” oferece a você um ambiente robusto e seguro com muita flexibilidade em comparação com ‘su‘. Além disso, a configuração do “sudo” é fácil. Algumas distribuições Linux têm o “sudo” ativado por padrão, enquanto a maioria das distribuições de hoje exige que você o habilite como uma Medida de Segurança.
Para adicionar um usuário (bob) ao sudo, basta executar o comando abaixo como root.
adduser bob sudo
Isso é tudo por agora. Estarei de volta em breve com outro artigo interessante. Até lá, fique ligado e conectado ao Tecmint. Não se esqueça de nos fornecer seu feedback valioso na nossa seção de comentários.
Source:
https://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/