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

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

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

  1. Nome_do_Usuário: Este é o nome do usuário ‘sudo‘.
  2. Nome_do_Máquina: Este é o nome do host, onde 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. Esta coluna permite que os usuários executem Comandos de Sistema.
  4. 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/