Wenn Sie sich den Kontextsatz für das Verzeichnis / var / log ansehen, werden Sie die folgenden Dinge bemerken.
Erstens hat das Verzeichnis /var/log
den folgenden Selinux-Kontextsatz:
$ ls -Z /var | grep "log$"
drwxr-xr-x. root root system_u:object_r:var_log_t:s0 log
Zweitens hat die Protokolldatei /var/log/messages
keinen zusätzlichen Kontext:
$ ls -Z /var/log/messages
-rw------- root root ? /var/log/messages
Es scheint also, dass Sie nur einen ähnlichen Kontext wie in dem /var/log
Verzeichnis festlegen müssen, in das Sie diese zusätzliche Protokolldatei schreiben möchten . So etwas sollte es tun.
Methode 1: Replizieren des Selinux-Labels
Im Folgenden wird der zugehörige Kontext kopiert /var/log
und ebenfalls angewendet /opt/blah
.
$ mkdir /opt/blah
$ ls -Z /opt | grep blah
drwxr-xr-x root root ? blah
# label directory with context
$ chcon --reference /var/log /opt/blah
# see the newly added context
$ ls -Z /opt/ | grep blah
drwxr-xr-x. root root system_u:object_r:var_log_t:s0 blah
Methode 2: Kontext direkt anwenden
Sie können sie auch direkt wie folgt anwenden:
$ chcon system_u:object_r:var_log_t:s0 /opt/blah
Ich bin nicht in einem System, in dem ich bestätigen kann, dass diese Befehle ausgeführt werden müssen, aber ich glaube, Sie müssen SELinux anweisen, diese neu angewendeten Kontexte auch im Dateisystem zu übernehmen.
$ semanage fcontext -a -t var_log_t "/opt(/.*)?"
$ restorecon -R -v /opt
Änderungen bestätigen
# confirm identical to /var/log context
$ ls -Z /var/ | grep "log$"
drwxr-xr-x. root root system_u:object_r:var_log_t:s0 log
Verweise