Eu escrevi um serviço / aplicativo binário único que estou tentando executar no Fedora 24, ele roda usando systemd, o binário é implantado no /srv/bot
este serviço / aplicativo que escrevi precisa criar / abrir / ler e renomear arquivos nesse diretório.
Comecei a criar uma nova política baseada no SELinux: permitir que um processo crie qualquer arquivo em um determinado diretório
mas quando meu aplicativo precisou renomear, a saída recebeu um aviso:
#!!!! WARNING: 'var_t' is a base type.
allow init_t var_t:file rename;
Pesquisei no Google e descobri que deveria usar um rótulo SELinux mais específico do que um tipo base, mas todos os exemplos online mostram rótulos existentes em httpd / nginx / etc.
Existe uma maneira de criar um rótulo personalizado apenas para meu próprio aplicativo?
Minha idéia é criar algo como myapp_var_t, use
semanage fcontext -a -t my_app_var_t '/srv/bot(/.*)?'
restorecon -R -v /srv/bot
e um .pp
arquivo personalizado que usará esse tipo personalizado
Se existe uma maneira melhor de resolvê-lo, isso também funciona.
obrigado
Atualizar
Após mais pesquisas, acho que o termo adequado para o que quero fazer é criar um novo types
que me levou a
https://docs.fedoraproject.org/en-US/Fedora/13/html/SELinux_FAQ/index.html#id3036916
que basicamente diz, corra
sepolgen /path/to/binary
e pude obter um modelo que eu possa compilar em um arquivo pp e carregar, ainda obter alguns erros, mas parece que estou mais perto do que quero fazer.
Se eu conseguir funcionar, atualizarei esta postagem
sepolgen /path/to/binary
cospe um erro de sintaxe para mim. Estou no RHEL 7.6. Eu acho quesepolgen --application /path/to/binary
é a sintaxe adequada se o seu objetivo é escrever uma política para uma aplicação específica?.te
arquivo também lança um erro de sintaxe para mim quando compilar o módulo:app.te:5:ERROR 'This block has no require section.' at token 'files_type' on line 5:
. E se eu adicionar umarequire
seção, recebo:ERROR 'syntax error' at token 'files_type' on line 13: