Como conceder ao usuário modificar somente arquivos protegidos específicos pelo sudo

1

Eu preciso permitir que o usuário modifique alguns arquivos pelo sudo que tenham somente acesso somente leitura.

Por exemplo, desejo conceder ao usuário ' hosteditor ' modificar 'o arquivo / etc / hosts '. Eu adicionei aos sudoers siga a linha:

hosteditor ALL=(root) /usr/bin/vim /etc/hosts

Agora, user hosteditor pode usar o vim apenas para modificar o arquivo / etc / hosts. Mas se esse usuário, ao modificar o arquivo, entrar em ! / Bin / sh ele terá permissão para executar todos os comandos com permissão de root.

O que devo fazer para conceder ao usuário modificar apenas um arquivo específico sem o sistema de hack de possibilidade.

    
por Vladislav Koroteev 02.11.2014 / 20:22

3 respostas

3

Depois de estudar esse problema, encontrei a terceira variante da solução desse problema.

Ao editar sudoers, podemos dar permissão ao usuário para executar sudoedit . É uma maneira segura de modificar arquivos somente de raiz, sem possibilidade de invasão. Então a resposta é

hosteditor ALL=(root) sudoedit /etc/hosts
    
por 09.11.2014 / 13:56
2

Não use o SUDO para isso. Em vez disso, adicione o host em um grupo e delegue o acesso de gravação a esse grupo, usando as ACLs do arquivo POSIX. Consulte o link para obter um comando para gerenciar as listas de controle de acesso e link para o write-up real em ACLs no Linux. Isso pressupõe, obviamente, que você esteja usando um sistema de arquivos e um sistema de autenticação que suporta Listas de Controle de Acesso a Arquivos POSIX. Para garantir que as permissões permaneçam aplicadas, você provavelmente desejaria delegar o aplicativo da ACL a uma ferramenta de gerenciamento de configuração. O Puppet pode fazer ACLs POSIX (consulte link ). CFEngine pode fazer isso (veja link ), e eu tenho certeza que o Chef pode, também.

A outra opção é fornecer um comando ou serviço que o host pode usar para gerar o arquivo / etc / hosts a partir de um banco de dados / planilha e um modelo. Isso aumentaria a flexibilidade e permitiria que você colocasse controles no comando ou serviço.

Tenho certeza de que há outras maneiras de resolver isso também, incluindo uma instância DNS separada (ou mesmo uma exibição DNS separada, se estiver usando o BIND9) e dando à conta do host a capacidade de adicionar e remover registros usando o NSUPDATE comando (veja link )

Boa sorte.

    
por 02.11.2014 / 20:34
1

Qualquer comando pode ser executado a partir do vi, incluindo um shell, portanto, permitir que um usuário execute o vi através do sudo não é seguro. Uma opção mais segura seria definir permissões como a resposta anterior sugere. Se você não puder fazer isso, configure o sudo para permitir a cópia no arquivo:

Cmnd_Alias CP_ETC_HOSTS = / bin / cp -v ./hosts / etc / hosts

Eles podem editar uma cópia do arquivo e copiar sua versão modificada para / etc / hosts.

    
por 02.11.2014 / 23:57

Tags