Diferença Entre su e sudo e Como Configurar o sudo no Linux

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‘.

Linux: su v/s 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:

  1. Nome_do_usuário: Este é o nome do usuário ‘sudo‘.
  2. Nome_do_Computador: Este é o nome do host, no qual o comando ‘sudo’ é válido. Útil quando você tem muitas máquinas hospedeiras.
  3. (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.
  4. 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/