Eu tenho um aplicativo Go que possui um serviço systemd básico que é executado com o usuário web
. O NGiNX fala com ele via proxy reverso e fala com o banco de dados MySQL no mesmo servidor. As políticas do NGiNX e do MySQL foram fáceis de configurar com o SELinux, no entanto, eu não posso fazer o SELinux funcionar com meu aplicativo Go personalizado.
Estou recebendo um erro de permissão negada, no entanto, quando desabilito o SELinux, tudo funciona bem, então tenho certeza de que é o SELinux.
Sobre o Aplicativo
- Abre a porta 8080
- Fala com o MySQL pela porta 3306
Eu tentei seguir este guia da RedHat sobre como configurar um aplicativo personalizado, mas por algum motivo meu aplicativo sempre permanece como unconfined_t
depois de usar o sepolicy
script.
Nota : Isso está em um servidor Fedora 36.
Finalmente resolvi. Simplesmente necessário adicionar meu binário personalizado ao
bin_t
rótulo. Eu usei este comandosemanage fcontext -a -t bin_t "/path/to/binary"
, em seguida, useirestorecon -v /path/to/binary
. Em seguida, um rápidosystemctl restart mybinary.service
e parece funcionar perfeitamente.Eu também adicionei o conteúdo estático do meu site
httpd_sys_content_t
usando os mesmos comandos e, em seguida, recarregando o NGiNX.