como fazer com que um script não privilegiado derrube até mesmo os privilégios que ele tem em um arquivo

7

É possível, a partir de um bash em execução como um usuário não privilegiado, marcar o arquivo como imune, de modo que ele não possa ser alterado de nenhum modo de qualquer processo executado como esse usuário? Está tudo bem se outros usuários ou um root puderem alterá-lo.

Meu caso de usuário é preparar um arquivo de configuração antes de iniciar outro processo. Eu quero impedir que o processo faça qualquer modificação no arquivo através de um bug ou através de uma exploração deliberada.

Usar chmod a-w path ou similar não é bom, pois pode ser desfeito. Não consigo alterar a propriedade do arquivo, pois o processo não é raiz. Eu também não posso usar chattr +i path porque o processo não tem CAP_LINUX_IMMUTABLE.

A única opção é ter um programa setuid / sudo ou um programa com CAP_LINUX_IMMUTABLE configurado em seu executável que faça tal alteração?

    
por Igor Bukanov 09.01.2016 / 11:05

2 respostas

1

Apparmor e selinux podem ser usados para um controle refinado sobre as permissões de um processo. Isso inclui dar a um processo a capacidade de ler por não gravar em um arquivo.

O

firejail é mais fácil para o usuário wrapper para isso.

A opção --read-only pode ser usada para eliminar o acesso de gravação a um arquivo quando você gerar um novo processo - o que parece ser exatamente o que você deseja.

    
por 16.01.2018 / 19:05
0

Eu imagino que o mais seguro possível, sem acls ou qualquer outro usuário disponível via sudo ou setuid, seja por chmod 444 'o arquivo.

Para tornar chmod'ing o arquivo de volta para o+w more difícil para qualquer processo filho, você pode tentar configurar um script wrapper que invoque bash -r --rcfile restricted.rc , onde restricted.rc define PATH para evitar chmod. Isso não impede que os scripts que invocam o bash ou algum outro processo invoquem um script com seu próprio caminho e modifiquem o arquivo, mas é improvável que alguém se incomode em fazê-lo explicitamente.

No entanto, criar os arquivos sem u+w de permissões como um usuário diferente é ainda mais operacional, se você não puder chattr ou chflags .

    
por 16.02.2016 / 16:12