Como evitar que um conjunto de pastas seja gravado por um processo específico?

2

Eu gostaria de ter uma maneira em que um conjunto de pastas não permita acesso de gravação para um processo específico. Por exemplo, eu adoraria ter uma maneira na qual o YUM / RPM não possa gravar em / usr / bin

    
por Thejdeep 14.06.2015 / 19:54

1 resposta

2

Você pode chroot o software em um bind mount setup onde estes diretórios são montados somente para leitura.

mkdir /foo
mount --bind / /foo
mount --rbind /dev /foo/dev
mount --bind /proc /foo/proc
mount --bind /run /foo/run
mount -t tmpfs tmpfs /foo/tmp
mount --bind /sys /foo/sys
mount --bind /usr/bin /foo/usr/bin
mount -o remount,ro /foo/usr/bin
chroot /foo rpm …

Note que processos hostis executados como root podem escapar de um chroot, então isso não é um confinamento seguro, apenas uma maneira de garantir que um processo não malicioso não esteja sendo escrito onde não deveria.

Uma abordagem alternativa seria configurar as regras SELinux . Estas restrições restringem até mesmo os processos executados como raiz, portanto, se configurado corretamente (o que não é trivial e requer mais do que bloqueio de acesso a arquivos), pode ser um confinamento seguro.

Se o processo não estiver sendo executado como root, apenas certifique-se de que as permissões no diretório não permitem que o usuário escreva lá. Você pode usar uma ACL que exclui um usuário específico, por exemplo

setfacl -m user:alice:0 /some/dir

para tornar /some/dir inacessível ao usuário alice ou

setfacl -R -m user:alice:rX /some/dir

para torná-lo e arquivos legíveis, mas não graváveis.

    
por 14.06.2015 / 21:40