comando sudo tentando procurar por hostname

8

Recentemente, alterei o arquivo sudoers e o nome do host por meio de / etc / hostname. Depois de alterar esses arquivos, meu comando sudo está demorando muito. Além disso, ele diz que o sudo não consegue resolver o host kaagini (nome de host da minha máquina).

Por que o sudo precisa saber o nome do host para fornecer permissão para algo?

Meu arquivo sudoers possui um comando "Defaults env_reset". Eu vi algumas perguntas semelhantes, mas o contexto não é um login remoto aqui. O erro está aparecendo em um host local.

O googling inicial do problema diz que o arquivo / etc / hosts deve ter o nome do host real para 127.0.0.1. Isso resolveu meu problema. Mas a minha pergunta é: por que precisamos disso para o sudo? O sudo deve funcionar independentemente do local de login.

    
por prathmesh.kallurkar 28.05.2012 / 20:20

2 respostas

10

O arquivo /etc/sudoers foi projetado para ser distribuído entre vários servidores. Para conseguir isso, cada permissão no arquivo tem uma porção de host.

Isso geralmente é definido como ALL= , o que significa que a permissão é válida para qualquer servidor, mas pode ser configurada para hosts específicos:

%sudo    kaagini=(ALL) ALL

Para que o sudo saiba se esta regra deve ser aplicada, ele precisa procurar o host em que está sendo executado. Ele usa uma chamada que depende do /etc/hosts sendo correto, e é por isso que ele falha se não estiver certo.

Pode-se argumentar que sudo não precisa se preocupar em fazer uma pesquisa de nome se a parte do host estiver definida como ALL= para todas as permissões, mas isso não funciona dessa maneira - parece funcionar onde ele é executado antes de processar as regras.

Isto é realmente para facilitar a manutenção, já que o sudo só lê o / etc / sudoers para ver o que o usuário pode fazer na máquina atual. Mas como um administrador com 100 servidores, isso pode exigir 100 arquivos diferentes do / etc / sudoers para serem mantidos. Como os sudoers têm uma parte do host nas permissões, você pode manter um único arquivo sudoers e distribuí-lo para todas as máquinas, mas ainda assim ter granularidade sobre o que os usuários podem fazer em cada máquina.

    
por 29.05.2012 / 03:06
0

O Puppet é um software de gerenciamento de configuração que é capaz de configurar uma frota de servidores automaticamente lendo arquivos Puppet Manifests. Esse arquivo pode incluir uma definição de seu arquivo / etc / sudoers, que pode então ser enviado para todos os seus "agentes" fantoches do seu "mestre" de fantoches. Então, todos os hosts receberão a mesma cópia de seu arquivo / etc / sudoers, que pode (e deve) incluir definições de HOST, então você pode conceder alguns usuários alguns comandos em alguns hosts (mas não em outros) .

    
por 13.08.2016 / 06:06