o guia completo do ficheiro Master Sudoers.

Harsa Koushik

Siga

Abr 18, 2020 · 10 min de leitura

o Que é o Arquivo Sudoers?

o ficheiro Sudoers é igual a qualquer outro ficheiro do sistema operativo Linux., Mas ele desempenha um papel vital na gestão do que um” usuário “ou” usuários em um grupo ” pode fazer no sistema.

por que o nome Sudoers?

a palavra Sudo é a abreviatura do termo “Super User Do”. Como claramente sugere – é como dizer ao Kernel / OS ” você não tem escolha, basta fazê-lo!”. Então os usuários com permissão do Sudo são chamados de usuários do Sudo. A gestão de todos esses usuários do sudo é feita através de um arquivo chamado de arquivo Sudoers. Este ficheiro também vive na pasta /etc, Tal como qualquer outro ficheiro de configuração.,

Imagem-1. Ficheiro Sudoers na pasta /etc. Sistema Operacional: Kali Linux 2019.4

Why Sudoers File?

um usuário normal no Linux terá muitas restrições no sistema. Por exemplo-o Usuário não será capaz de iniciar um serviço, alterar um arquivo de configuração ou executar um script no sistema por padrão. Do ponto de vista da segurança, isto parece perfeito.,

mas, vamos tomar um exemplo de-você como um administrador de sistema tem que gerenciar todos os usuários e seus controles. Você tem um site hospedado no Apache em um de seus servidores. Você já tem um Web-Admin para geri-lo. Um usuário deve ser criado para ele no servidor Web. Este Utilizador deve poder fazer duas coisas que um utilizador normal não pode fazer:

  • Iniciar / Reiniciar o serviço Apache no caso de parar.
  • edite o ficheiro de configuração do Apache.

você tem duas opções de usuário por padrão:

  1. root User que tem todas as permissões no sistema, incluindo o Apache.,
  2. um usuário normal, que por padrão não será capaz de iniciar um serviço ou editar quaisquer arquivos de configuração no sistema.

Este é o momento em que um ficheiro sudoers lhe será útil. No ficheiro Sudoers podemos definir exactamente:

  • o utilizador Web-Admin só pode iniciar o serviço Apache &
  • Ele só pode editar o ficheiro Apache Config.

jogando com o arquivo Sudoers

teoria suficiente, vamos começar a fazer as coisas reais agora. Vou explicar cada seção no arquivo Sudoers com alguns exemplos., Por padrão, um arquivo Sudoers parece que este —

Imagem-2. Ficheiro Dos Sudoers Não Editados. Sistema Operacional: Kali Linux 2019.4

principalmente podemos ver cinco secções no ficheiro — as três primeiras secções do Ficheiro estão relacionadas com o nome de máquina, utilizador e Cmnd., Vamos falar sobre ALIAS mais tarde, primeiro vamos falar sobre o núcleo de secção :

#Usuário Privilégio Especificação

root ALL = (ALL:ALL) ALL

Nota: ‘#’ indica comentário no arquivo, o sistema operacional irá ignorar esta linha durante a execução.,

a Sintaxe do Utilizador: <espaço> OnHost = (Runas-de Usuário:Grupo) <espaço> Comandos

Exemplo: root ALL = (ALL:ALL) TODOS

Lê-lo como Usuário Root pode Executar Qualquer Comando como Qualquer Usuário de Qualquer Grupo em Qualquer Host.

→ o primeiro ALL é usado para definir HOSTS. Podemos definir Hostname / Ip-Address em vez de todos. Tudo significa qualquer hospedeiro.

→ Second ALL: Third ALL is User: Group., Em vez de tudo, podemos definir usuário ou usuário com o grupo como User:Group. ALL: tudo significa todos os usuários e todos os grupos.

→ Last ALL is the Command. Em vez de tudo, podemos definir um comando ou conjunto de comandos. Tudo significa todos os comandos.

para colocá-lo muito simples, é “quem onde = (as_whom) o quê”.

Nota: A maioria das pessoas compreende as máquinas como máquinas remotas. É o nome da máquina LOCAL/endereço IP., HOSTS campo será usado raramente, se você quiser saber mais sobre HOSPEDA no Sudoers, por favor, consulte → https://www.sudo.ws/man/1.7.10/sudoers.man.html

Basicamente podemos permitir que um usuário para fazer algo em apenas duas maneiras —

  1. Directamente dar-lhe a permissão para executar o comando, modificando a permissão do arquivo.
  2. Permite-lhe executar o comando como um outro utilizador que já tem a permissão para executar este comando.

no ficheiro Sudoers iremos implementar este último.,

Vamos usar outro exemplo, para compreender claramente os campos na sintaxe:

Exemplo : sysadmin ALL = (raiz) /usr/bin/cat /etc/shadow

Leia isso como Utilizador “administrador do sistema” pode Executar o comando “/usr/bin/cat /etc/shadow” como utilizador de RAIZ em todos os HOSTS.

Aqui no exemplo acima, na secção de comandos — eu adicionei algo mais do que um comando, isto é para mostrar a flexibilidade do ficheiro Sudoers. A parte “/ usr/bin / cat” é um executável binário ou um comando usado para ver o conteúdo de um arquivo., A parte “/ etc/shadow” é um ficheiro confidencial que guarda senhas, por isso significa que o utilizador “sysadmin” só pode executar “/usr/bin/cat” no ficheiro “/etc / shadow”, se este utilizador tentar ver o conteúdo de qualquer outro ficheiro em que não tenha permissões de leitura, não será capaz de o fazer.,

a Sintaxe do comando Sudo: sudo <comando>

Exemplo: sudo cat /etc/shadow

Agora, se o usuário “administrador do sistema” usa o sudo antes de qualquer comando, OS irá pedir-lhe a Senha de Usuários, verifica a palavra-passe e, em seguida, vai para o arquivo Sudoers e verifica se ele é autorizado a emitir este comando como qualquer usuário. Se ele for permitido-sucesso, caso contrário ele relatará uma dessas duas coisas –

→ Usuário não está no arquivo Sudoers. Este incidente será relatado.,

Note : You can see this reported incident in /var/log/auth.log

Image-3. Incident Report — Sudoers. Operating System: Kali Linux 2019.,4

→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>

Image-4. Cannot Execute Command in Sudoers. Operating System: Kali Linux 2019.,4

Aqui, o utilizador webadmin só pode executar “cat/etc / shadow”. Mas ele tentou executar o comando’ cat ‘ em “/etc/gshadow”, o que não é permitido.

Como temos bastante aderência nos campos na sintaxe do ficheiro Sudoers, vamos avançar e compreender outras secções do ficheiro. Todas as outras secções dependerão da secção central que já discutimos.,

A próxima seção é a Seção de GRUPO, que é

#Permite que os membros do grupo sudo para executar quaisquer dos comandos

%sudo ALL = (ALL:ALL) ALL

Percentil símbolo ‘%’ é usado para representar um grupo no Arquivo Sudoers. Todos os campos e suas funcionalidades nesta seção são exatamente os mesmos que foram discutidos na seção anterior — a seção do Usuário. Podemos atribuir os mesmos privilégios de Sudo a um grupo em vez de um utilizador, especificando o nome do grupo — %<nome do grupo>., Assim, todos os membros do grupo herdarão os mesmos privilégios dados ao grupo.

Por omissão existe um grupo SUDO definido no ficheiro Sudoers. Podemos ver que essas permissões são exatamente as mesmas que as permissões de usuários do ROOT no arquivo. Então, se um usuário é um membro deste grupo SUDO, ele pode executar todos os comandos que um usuário ROOT pode executar.

vamos definir um grupo personalizado e entender a sintaxe mais claramente. Tomemos o mesmo velho exemplo de administração do sistema para o fazer. Assume o não. de funcionários são mais agora, então os administradores do sistema são 3 agora., Cada um deles precisa das mesmas permissões que tínhamos dado ao primeiro administrador do sistema. Uma coisa que podemos fazer para conseguir isso é ter três entradas para todos os três administradores do sistema no arquivo Sudoers. Se avançarmos com esta abordagem, estaremos a insultar as capacidades de um ficheiro Sudoers.

A melhor coisa a fazer é, agrupar todos os três administradores de sistema em um grupo chamado ‘SystemAdminGroup’., Vamos definir necessárias permissões desse grupo com —

%SystemAdminGroup ALL = (raiz) /usr/bin/cat /etc/shadow

Agora, todos os três administradores podem executar o privilégio de Comando. Fizemos isso de uma só vez usando a definição de grupo.

Sudoers File is capable of making this whole process more efficient using various functionalities. As três primeiras secções — pseudónimos são utilizados para o efeito., Como a palavra já sugere, usamos um pseudônimo para algo que podemos usar em todo o arquivo, é como uma variável GLOBAL em um Script. Como é que isto torna tudo mais eficiente? Podemos definir o conjunto de comandos, hosts e usuários em uma linha, atribuímos esta linha a um nome de ALIAS, este alias será usado sempre e onde for necessário, sem definir todos os comandos/hosts/usuários novamente.

I want to include one more ALIAS which is not listed in Sudoers file by default which is “Run_ as ALIAS”., Agora temos quatro ALIASES

  1. ALIAS do Usuário como User_Alias
  2. Executar-Como ALIAS como Runas_Alias
  3. Host ALIAS como Host_Alias
  4. Comando ALIAS como Cmnd_Alias

Nota : o nome do Alias deve ser definido em letras maiúsculas e podem conter número, o alfabeto e o carácter de sublinhado (_). O nome falso deve começar pelo alfabeto.,3e”>Nome de ALIAS> = <username><username> <username>…

Exemplo: User_Alias SYSADMINS = joão,tim,tom

Uso: TODOS os SYSADMINS = (raiz) /usr/bin/cat /etc/shadow

Se eu quiser algum conjunto de sudo permissões definidas para os usuários — joão, tim e tom, eu não preciso definir três vezes, em vez disso, pode definir um Alias e usar este Nome de Alias ao delegar o sudo acesso a eles.,

Image-5. User Alias in Sudoers File. Operating System: Kali Linux 2019.,figcaption>

Run As ALIAS Syntax —

Runas_Alias <ALIAS Name> =<username>,<username>,<username>…

Example: Runas_Alias MGRS = root,sradmin

Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow

If i want to define the set of users a user can run a command as, i can use Runas_Alias., Não se confunda aqui, apenas lembre-se do mestre mantra – quem onde = (as_whom) o quê. Estamos a usar um nome falso para incluir um não. de utilizadores no campo “as_whom”.

Imagem-6. Runas também conhecido no ficheiro Sudoers. Sistema Operacional: Kali Linux 2019.,4

Host ALIAS Sintaxe

Uso: systemadmin HOSTS = (raiz) /usr/bin/cat /etc/shadow

Se precisar de definir um conjunto de nomes de máquinas, endereços ip ou intervalo de endereços ip em que um usuário tem permissão para emitir o Privilegiado/comandos Sudo, eu posso conseguir isso usando o Alias de Host. Mais uma vez, esta parte pertence ao campo “onde” na frase Mestre.

Imagem-7. Nome alternativo da máquina no ficheiro Sudoers., Sistema Operacional: Kali Linux 2019.,iv id=”1ffdf0e914″>

Cmnd_Alias <ALIAS Name> = <cmd1>,<cmd2>, <cmd3>…

Example: Cmnd_Alias SYSADMIN = /usr/sbin/apache2, /usr/bin/cat

Usage: systemadmin ALL = (root) SYSADMIN

If i need to permit a user to execute a set of commands as SUDO, i can define them under a Cmnd_Alias Section and use this ALIAS name while delegating the access., Esta parte pertence ao campo” o que ” na frase Mestre.

Imagem-8. Nome do Cmnd no ficheiro Sudoers. Sistema operativo: Kali Linux 2019.4

NOPASSWD modo:

esta é mais uma funcionalidade especial nos Sudoers que permitirá que um utilizador no ficheiro Sudoers execute um comando privilegiado sem introduzir a senha., Isto é muito útil ao executar scripts automatizados no sistema como um usuário normal, o script pode ter que executar um comando privilegiado. Mas já sabemos o que acontece se algum usuário usar SUDO, ele terá que digitar sua senha!

lembre-se que, mesmo que seja um script ou processo, ele deve ser executado como um usuário, ele não pode ser executado por conta própria.

Todos os scripts automatizados não são inteligentes o suficiente para introduzir senha quando solicitado. Mas é possível introduzir automaticamente a senha. Por enquanto, não pensemos em guiões inteligentes., Assim, para concluir, um comando privilegiado pode ser usado por um usuário sem introduzir a senha.

exemplo de um script que necessita de NOPASSWD: Supervisor no Linux.Discutiremos sobre Supervisor em outro artigo.

Sintaxe : sysadmin ALL = (raiz) NOPASSWD : /usr/sbin/apache2

Parâmetro de Exclusão em ALIASES

podemos também adicionar parâmetros que devem ser excluídos em ALIASES. Por exemplo –

User_ Aiias EXCEPT_ROOT = ALL,!,raiz

sysadmin ALL = (EXCEPT_ROOT) /usr/sbin/apache2

Este User_Alias podem ser usados para certificar-se de que um USUÁRIO pode executar o comando especificado como “todos os usuários exceto o ROOT”.

Este tipo de exclusão pode ser feito em todos os outros nomes, não apenas User_ Aiias. Em qualquer pseudónimo, a sintaxe de exclusão continua a ser a mesma.

a lidar com o ficheiro Sudoers com cuidado

deve ter entendido o que um ficheiro Sudoers pode fazer e como é importante lidar com o ficheiro com cuidado. O Linux já implementa um mecanismo para se certificar de que o arquivo Sudoers é tratado corretamente.,

é sempre recomendado não editar directamente o ficheiro / etc/sudoers. Há uma ferramenta chamada “visudo”. Isto é usado para fazer alterações seguras num ficheiro sudoers. Quando editar o ficheiro sudoers usando o visudo, o visudo tem uma funcionalidade incorporada para verificar a sintaxe antes de gravar o ficheiro, se cometer um erro, irá apontar imediatamente a linha para onde a sintaxe não é apropriada. Esta funcionalidade do visudo evitará causar qualquer dano acidental ao arquivo e sistema.

conclusão:

o ficheiro Sudoers desempenha sempre um papel importante na gestão do controlo do utilizador., Embora existam muitas maneiras de gerenciar e controlar o que um usuário pode e não pode fazer no sistema, o método Sudoers sempre será eficiente e robusto o suficiente para gerenciar e controlar qualquer não. de utilizadores. Um outro método semelhante a este que vale a pena mencionar é SUID e SGID. Falaremos sobre SUID e SGID noutro artigo.