Arquivamento do SELinux booleanos

1

Estou tentando obter numba em execução no meu servidor Debian no modo de imposição do SELinux. O Numba é baseado no compilador jm do LLVM . O problema é que o LLVM insiste em ter memória, que é gravável e executável ao mesmo tempo. Um relatório de erros já está pendente já há anos e não há correção à vista.

Existe uma variável booleana no SELinux, allow_execmem , que eu poderia definir em todo o sistema, para permitir a execução do LLVM. No entanto, não estou com vontade de ter um cenário tão inseguro.

O que eu gostaria de fazer é criar outra variável booleana, executar uma determinada classe de programas com esse conjunto de direitos ou criar um contexto de arquivo, que concede os mesmos direitos a alguns executáveis. Criar um novo booleano provavelmente seria bem parecido com httpd_execmem .

O que eu vi é que há apenas um conjunto restrito de permissões que posso definir no nível do arquivo:

# ls /sys/fs/selinux/class/file/perms
append  audit_access  create  entrypoint  execmod  execute 
execute_no_trans  getattr  ioctl  link  lock  mounton  open  
quotaon  read  relabelfrom  relabelto  rename  setattr  swapon  
unlink  write

Então, se eu ver isso corretamente, simplesmente criar um tipo e adicionar permissões para algum usuário não funcionará. Existe alguma maneira direta de fazer isso? Como posso criar um novo booleano como httpd_execmem ?

    
por Michael 22.03.2016 / 13:05

1 resposta

0

O que parece funcionar foi criar um módulo próprio com o seguinte:

module llvm 1.0;

require {
        class process { execmem };
};
type llvm_t;    
allow llvm_t self:process execmem;

Infelizmente, não consegui definir nenhum tipo de arquivo em meu diretório pessoal, pois eles estavam contidos em uma montagem ecryptfs. Então acabei permitindo todo o domínio não confinado com execmem. Isso é mais permissivo do que eu esperava, mas ainda muito melhor do que permitir todos os processos no sistema execmem.

module llvm 1.0;

require {
        type unconfined_t;
        class process { execmem };
};
allow unconfined_t self:process execmem;
    
por 24.03.2016 / 13:45