Como desfazer uma regra em sudoers?

1

Agora os sudoers suportam a subpasta /etc/sudoers.d , onde podemos definir regras personalizadas.

Eu quero usá-lo e evitar alterar o arquivo principal /etc/sudoers .

Portanto, em um arquivo em /etc/sudoers.d/99_adjusts , desejo des-definir a regra principal de especificação do usuário:

ALL   ALL=(ALL) ALL

Estou tentando evitar comentá-lo em /etc/sudoers .
Eu gostaria de algo que revogue esse conjunto de regras antes:

!ALL   ALL=(ALL) ALL

Mas o acima, infelizmente, não funciona;! olhando para as páginas de manual, não consigo descobrir se existe algum truque para fazer isso.

    
por ceinmart 25.08.2017 / 16:32

2 respostas

2

AFAIK, não é possível remover as regras do sudo em um arquivo de configuração do sudo.

Você deve remover o arquivo de configuração principal /etc/sudoers e escrever suas regras apenas em /etc/sudoers.d/* . Usar ambos é fonte de confusão.

    
por 25.08.2017 / 16:52
2

I would want something which revokes this rule set before:

!ALL ALL=(ALL) ALL

But the above unfortunately does not work

Naturalmente não. O !ALL no início significa "conceda permissões de sudo a nenhum usuário", então a regra não faz nada. Não importa o que segue na linha, não pode corresponder a nada.

É possível substituir /etc/sudoers via /etc/sudoers.d , conforme indicado na sudoers man page :

When multiple entries match for a user, they are applied in order. Where there are multiple matches, the last match is used (which is not necessarily the most specific match).

Como o conteúdo do diretório sudoers.d é enviado ao arquivo sudoers de nível superior por meio de uma diretiva #includedir normalmente colocada no final do arquivo, adicionar uma regra em /etc/sudoers.d/* substituirá qualquer regra na parte superior arquivo de nível que é uma correspondência equivalente.

A sintaxe correta para substituir a regra em questão é:

ALL ALL = (ALL) !ALL

O que isso diz, da esquerda para a direita, é:

  1. ALL usuários ...
  2. em ALL hosts ...
  3. pode executar os seguintes comandos como qualquer um dos conjuntos de ALL usuários, com o padrão de raiz ...
  4. quais comandos são !ALL

Como o último bit significa "sem comandos", substitui completamente a regra "conceder a todos os direitos para executar todos os comandos" em seu principal sudoers file .

Em seguida, você precisa adicionar as regras desejadas no arquivo /etc/sudoers principal depois disso para restaurar as concessões de permissão. Essa é uma simples tarefa de copiar e colar seletiva do arquivo /etc/sudoers . Lembre-se: o último jogo vence.

AVISO: Se você não colocar nada após a linha acima em um arquivo, você terá removido as permissões sudo de todos usuários. Em um sistema em que o usuário root está desabilitado, para que o comando su não funcione, você corre um grande risco de se travar acidentalmente fora da máquina, mexendo com isso. Sugiro que você mantenha um terminal root separado aberto enquanto testa isso em outro terminal.

Isso foi verificado em um sistema macOS 10.12, mas deve ser aplicado a qualquer sistema que tenha a diretiva #includedir na parte inferior do arquivo sudoers principal.

    
por 25.08.2017 / 20:15

Tags