O Sistema Linux é muito mais seguro do que qualquer um de seus concorrentes. Uma das formas de implementar segurança no Linux é a política de gestão de usuários e permissões de usuário, e os usuários normais não estão autorizados a realizar operações de sistema.
Se um usuário normal precisa realizar quaisquer mudanças em todo o sistema, ele precisa usar o comando ‘su‘ ou ‘sudo‘.

NOTA – Este artigo é mais aplicável às distribuições baseadas em Ubuntu, mas também aplicável à maioria das populares distribuições Linux.
‘su’ Vs ‘sudo’
‘su‘ obriga você a compartilhar sua senha de root com outros usuários, enquanto ‘sudo‘ torna possível executar comandos de sistema sem senha de root. ‘sudo‘ permite usar sua própria senha para executar comandos de sistema, ou seja, delega a responsabilidade do sistema sem a senha de root.
O que é ‘sudo’?
‘sudo‘ é um binário root setuid, que executa comandos de root em nome de usuários autorizados e os usuários precisam inserir sua própria senha para executar o comando de sistema seguido por ‘sudo‘.
Quem pode executar ‘sudo’?
Nós 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-se com a seguinte string, por padrão:
root ALL=(ALL) ALL
Nota: Você deve ser root para editar o arquivo /usr/sbin/visudo.
Concedendo Acesso ao sudo
Em muitas situações, o Administrador de Sistema, especialmente aquele novo na área, acha a string “root ALL=(ALL) ALL” como um modelo e concede acesso irrestrito 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 configurada do ‘sudo‘ é:
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_Máquina: Este é o nome do host, onde 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. Esta coluna permite que os usuários executem Comandos de Sistema.
- Comando: comando ou um conjunto de comandos que o usuário pode executar.
Leitura sugerida: 10 Configurações Úteis de Sudoers para Definir o ‘sudo’ no Linux
Algumas das 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ê possui um usuário ‘tom‘ que deve executar comando do sistema como usuário que não é o root no mesmo Servidor de Banco de Dados, conforme explicado anteriormente.
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 ‘gato‘ que deve executar apenas o comando ‘cão‘.
Para implementar a situação acima, podemos escrever o ‘sudo’ da seguinte forma:
mark beta.database_server.com=(cat) dog
Q4. E se o usuário precisar receber acesso a vários comandos?
Se o número de comandos que o usuário deve executar for inferior a 10, podemos listar todos os comandos em conjunto, com espaço em branco entre eles, como mostrado abaixo:
mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...
Se esta lista de comando varia na extensão, a ponto de não ser literalmente possível digitar cada comando manualmente, precisamos usar aliases. Aliases! Sim, a utilidade do Linux onde um comando longo ou uma lista de comandos pode ser referida por uma palavra-chave pequena 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 pertencem a esse grupo, apenas acrescentando ‘%’ como abaixo:
%apacheadmin WEBSERVERS=(www) APACHE
Q5. E sobre executar um comando ‘sudo‘ sem digitar a senha?
Podemos executar um comando ‘sudo‘ sem digitar 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 digitar a senha.
Leitura Sugerida: Deixe o Sudo Insultar Você Quando Você Digitar a Senha Incorreta
“sudo” oferece um ambiente robusto e seguro com muita flexibilidade, se comparado 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 hoje em dia exige que você o ative 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 aqui novamente 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/