Ich habe eine Dienst- / Einzel-Binär-App geschrieben, die ich auf Fedora 24 ausführen möchte. Sie wird mit systemd ausgeführt, für die die Binärdatei bereitgestellt wird /srv/bot
Dieser Dienst / diese App, die ich geschrieben habe, muss Dateien in diesem Verzeichnis erstellen / öffnen / lesen und umbenennen.
Ich habe zuerst begonnen, eine neue Richtlinie basierend auf SELinux zu erstellen: Erlaube einem Prozess, eine beliebige Datei in einem bestimmten Verzeichnis zu erstellen
Aber als meine App umbenannt werden musste, hatte die Ausgabe eine Warnung:
#!!!! WARNING: 'var_t' is a base type.
allow init_t var_t:file rename;
Ich habe herumgegoogelt und herausgefunden, dass ich ein spezifischeres SELinux-Label als einen Basistyp verwenden sollte, aber alle Online-Beispiele zeigen Ihnen vorhandene Labels von httpd / nginx / etc.
Gibt es eine Möglichkeit, ein benutzerdefiniertes Etikett nur für meine eigene App zu erstellen?
Meine Idee ist es, so etwas wie myapp_var_t zu erstellen, verwenden
semanage fcontext -a -t my_app_var_t '/srv/bot(/.*)?'
restorecon -R -v /srv/bot
und eine benutzerdefinierte .pp
Datei, die diesen benutzerdefinierten Typ verwendet
Wenn es einen besseren Weg gibt, das zu lösen, funktioniert das auch.
Vielen Dank
Aktualisieren
Nach eingehender Suche denke ich, dass der richtige Begriff für das, was ich tun möchte, darin besteht, neue zu erstellen types
, die mich zu
https://docs.fedoraproject.org/en-US/Fedora/13/html/SELinux_FAQ/index.html#id3036916 führten
was im Grunde sagt, laufen
sepolgen /path/to/binary
und ich konnte eine Vorlage erhalten, die ich dann in eine pp-Datei kompilieren und laden kann. Es werden immer noch einige Fehler angezeigt, aber es sieht so aus, als wäre ich näher an dem, was ich tun möchte.
Wenn es funktioniert, werde ich diesen Beitrag aktualisieren
sepolgen /path/to/binary
spuckt einen Syntaxfehler für mich aus. Ich bin auf RHEL 7.6. Ich denke,sepolgen --application /path/to/binary
ist die richtige Syntax, wenn Ihr Ziel ist, eine Richtlinie für eine bestimmte Anwendung zu schreiben?.te
Datei wirft beim Kompilieren des Moduls auch einen Syntaxfehler für mich auf :app.te:5:ERROR 'This block has no require section.' at token 'files_type' on line 5:
. Und wenn ich einenrequire
Abschnitt hinzufüge , bekomme ich:ERROR 'syntax error' at token 'files_type' on line 13: