As alterações feitas nos arquivos /etc/sudoers.d
permanecem em vigor se você atualizar o sistema. Isso pode impedir o bloqueio do usuário quando o sistema é atualizado. O Ubuntu tende a gostar desse comportamento. Outras distribuições também estão usando esse layout.
Foi minha experiência que as regras sobre os arquivos neste diretório são mais flexíveis do que para /etc/sudoers
. Isso inclui:
- Erros no arquivo não causaram
sudo
falha. No entanto, o arquivo foi ignorado.
- As regras de permissão parecem menos rigorosas. Permite que o grupo ou outro aplicável leia o arquivo. Não acredito que isso fosse possível
/etc/sudoers
. As permissões de gravação devem ser restritas root
para manter a segurança. A versão atual do Ubuntu do sudo permite permissões de leitura para grupos ou outros. (Esse recurso permite que o acesso ao sudo seja auditado usando sem a necessidade de acesso root.)
O visudo
comando é padronizado apenas como /etc/sudoers
. Ele editará e verificará qualquer arquivo que você especificar com a -f
opção Eu uso esse recurso para editar arquivos que serão automaticamente instalados como /etc/sudoers
ou no /etc/sudoders.d
. No entanto, definições de outros arquivos podem não ser encontradas. É melhor tornar o arquivo independente.
A capacidade de ter arquivos independentes torna simples para um aplicativo habilitar o sudo
recurso na instalação e removê-los quando não estiver instalado. Ferramentas de configuração automatizada também podem usar esse recurso.
Eu usei esse recurso para isolar as alterações necessárias para conceder acesso a grupos de usuários específicos em sistemas específicos.
sudo
falha'. Eu quebrei o sudo no RHEL com sintaxe incorreta em um arquivo de /etc/sudoers.d. Isso exigiu um esforço significativo para corrigir e acho que a recomendação deve ser sempre usarvisudo -f
para editar esses arquivos.Sim, você pode usar
visudo
para editar esses arquivos. Tudo o que você precisa fazer é especificar o nome do arquivo que você deseja editar com a-f
opção Por exemplo:Ou, se necessário:
Documentação
De
man visudo
:Em suma:
Sintaxe: Ambos
visudo
evisudo -f
executam a mesma verificação de sintaxe .Permissões / Propriedade: como um recurso adicionado para auxiliar a administração de sistemas grandes , os arquivos editados em
visudo -f
não são verificados quanto à propriedade ou permissões: isso permite a verificação de sintaxe de um arquivo offline ou como parte de um sistema de controle de revisão.Por que usar
/etc/sudoers.d/
Normalmente,
/etc/sudoers
está sob controle do gerenciador de pacotes da sua distribuição. Se você fez alterações nesse arquivo e o gerenciador de pacotes deseja atualizá-lo, será necessário inspecionar manualmente as alterações e aprovar como elas são mescladas na nova versão. Ao colocar suas alterações locais em um arquivo no/etc/sudoers.d/
diretório, você evita esta etapa manual e as atualizações podem prosseguir automaticamente.Quando
sudo
ignora um arquivo/etc/sudoers
?Se o seu
/etc/sudoers
arquivo contiver a linha:em seguida,
sudo
irá ler arquivos no diretório/etc/sudoers.d
.As exceções são:
~
.
caractereIsso é feito (a) para conveniência dos gerenciadores de pacotes e também (b) para que os arquivos de backup dos editores sejam ignorados.
fonte
visudo -f
seguro?visudo -f
edita de maneira segura, como normalmentevisudo
. É por isso que temosvisudo
e por que ele fornece a-f
opção.-f
pois isso pode dar um byte a alguém que as copia no /etc/sudoers.d/ sem verificar duas vezes./etc/sudoers.d/mysudorules.sudo
e não consegui descobrir por que as regras não foram aplicadas antes de ler sua resposta./sudoers.d/mysite.co.uk
não estava funcionando e depois de renomear paramysite
ele funciona! :)Porque é mais fácil para ferramentas automatizadas (como Chef ou Puppet) soltar arquivos individuais nesse diretório, em vez de fazer alterações
/etc/sudoers
, o que pode ser frágil.Os arquivos
/etc/sudoers.d
são (com efeito) concatenados. Você verá várias outras instâncias desse padrão em/etc
, como/etc/cron.d
e/etc/logrotate.d
.fonte
Outro benefício de usar
visudo -f
como mencionado em algumas respostas é que existe uma opção correspondente-c
ou--check
que verifica se você não possui informações inválidas em um arquivo sudoers.d ou em qualquer outro arquivo que você queira colocar em sudoers.d. Isso é MUITO útil nos casos mencionados com ferramentas automatizadas, pois você pode executar, por exemplo,Isso verifica silenciosamente o arquivo (sem saída devido a -q) e somente se isso NÃO retornar um erro (saída 1 significa um arquivo de sudoers inválido), ele copiará o arquivo para sudoers.d, dessa forma, você poderá criar o arquivo e trabalhe nele sem precisar
sudo visudo -f /etc/sudoers.d/myfile
corrigi- lo da primeira vez (o uso deve ser bem-sucedido ou ele descarta o conteúdo se você não o corrigir).Além disso, uma palavra de cautela sobre essas declarações das outras respostas.
Os arquivos em /etc/sudoers.d precisam seguir a mesma sintaxe que os / etc / sudoers, porque, por baixo das coberturas, o sistema simplesmente concatena todos os arquivos com o último em "vitória" se houver várias entradas para a mesma cenário singular.
Se as permissões estiverem horrivelmente incorretas (graváveis em todo o mundo) nos arquivos em /etc/sudoers.d/, elas serão ignoradas. Isso pode ter causado o esquecimento dos arquivos inválidos; caso contrário, você poderá violar seriamente o
sudo
comando com um sudoers inválido. d arquivo com permissões corretas.Você pode permitir que os arquivos do sudoers sejam legíveis mundialmente, se você acidentalmente permitir 'other' a permissão de gravação necessária para sudo como outro usuário ou a partir de um terminal raiz, execute este comando. Isso também pode ser interrompido se o arquivo pertencer a alguém que não seja root: root.
Acabei de confirmar que, se eu executar,
chmod o+w /etc/sudoers.d/vagrant
não posso mais usar o sudo como usuário vagante, ele solicita minha senha e falha.Quando corri
sudo -l
para exibir as permissões de comando aplicadas como outro usuário sudo válido, também recebi um aviso sobre as permissões de arquivo. Este é o mesmo comando que eu usei para confirmar que o usuário 'vagrant' perdeu o sudo quando apliqueio+w
permissões ao arquivo, concedendo a ele permissões de sudo.fonte
Apenas um pequeno complemento para qualquer resposta geral ... nenhuma das outras respostas resolveu meu problema, que era essa ordem.
Se suas linhas funcionarem em sudoers, mas não em sudoers.d, tente mover o #include, ou altere a ordem dos arquivos sudoers.d (prefixando um número). Parece que a coisa mais específica deve ser a primeira no arquivo.
Eu tinha algo como:
E o segundo não teve efeito porque o primeiro já correspondia. NOPASSWD não é uma condição, mas uma maneira de modificar a ação.
E não era óbvio porque não estava em um único arquivo, devido ao diretório sudoers.d.
fonte