J'ai écrit un service / une seule application binaire que j'essaie d'exécuter sur Fedora 24, il fonctionne à l'aide de systemd, le binaire est déployé sur /srv/bot
ce service / application que j'ai écrit doit créer / ouvrir / lire et renommer des fichiers dans ce répertoire.
J'ai d'abord commencé à créer une nouvelle politique basée sur SELinux: autoriser un processus à créer n'importe quel fichier dans un certain répertoire
mais lorsque mon application devait être renommée, la sortie contenait un avertissement:
#!!!! WARNING: 'var_t' is a base type.
allow init_t var_t:file rename;
J'ai cherché sur Google et j'ai découvert que je devrais utiliser une étiquette SELinux plus spécifique qu'un type de base, mais tous les exemples en ligne vous montrent des étiquettes existantes de httpd / nginx / etc.
Existe-t-il un moyen de créer une étiquette personnalisée uniquement pour ma propre application?
Mon idée est de créer quelque chose comme myapp_var_t, utilisez
semanage fcontext -a -t my_app_var_t '/srv/bot(/.*)?'
restorecon -R -v /srv/bot
et un .pp
fichier personnalisé qui utilisera ce type personnalisé
S'il existe un meilleur moyen de le résoudre, cela fonctionne aussi.
Merci
Mise à jour
Après plus de recherches, je pense que le terme approprié pour ce que je veux faire est d'en créer de nouvelles types
qui m'ont conduit à
https://docs.fedoraproject.org/en-US/Fedora/13/html/SELinux_FAQ/index.html#id3036916
qui dit essentiellement, exécutez
sepolgen /path/to/binary
et j'ai pu obtenir un modèle que je peux ensuite compiler dans un fichier pp et charger, toujours obtenir des erreurs mais il me semble que je suis plus proche de ce que je veux faire.
Si je le fais fonctionner, je mettrai à jour ce post
sepolgen /path/to/binary
crache une erreur de syntaxe pour moi. Je suis sur RHEL 7.6. Je pense quesepolgen --application /path/to/binary
c'est la syntaxe appropriée si votre objectif est d'écrire une politique pour une application particulière ??.te
fichier lance également une erreur de syntaxe pour moi lors de la compilation du module:app.te:5:ERROR 'This block has no require section.' at token 'files_type' on line 5:
. Et si j'ajoute unerequire
section, j'obtiens:ERROR 'syntax error' at token 'files_type' on line 13: