Wie ändere ich den Sicherheitskontext in einem Verzeichnis in CentOS mit SELinux?

4

Ich habe versucht, es zu ändern, aber es ließ mich nicht.

# ls -dZ /usr/local/spamassassin
drwx------. spam spam system_u:object_r:usr_t:s0       /usr/local/spamassassin

# chcon -v --type=spamd_t /usr/local/spamassassin
changing security context of `/usr/local/spamassassin'
chcon: failed to change context of `/usr/local/spamassassin' to `system_u:object_r:spamd_t:s0': Permission denied
audit.log
type=AVC msg=audit(1483587389.449:354941): avc:  denied  { append } for  pid=31588 comm="spamd" name="spamfilter.log" dev=xvde ino=24109 scontext=unconfined_u:system_r:spamd_t:s0 tcontext=unconfined_u:object_r:usr_t:s0 tclass=file

CentOS Release 6.8 (endgültig)

Chloe
quelle

Antworten:

2

Der Grund für die Verweigerung der Berechtigung ist, dass der Typ spamd_t kein gültiger SELiunx-Typ ist. Möglicherweise müssen einige Pakete installiert werden, um einen gültigen Typ festzulegen. Da bin ich mir nicht sicher. Aber ich werde Ihre Antwort durchgehen, um sicherzustellen, dass Sie die Best Practices befolgen.


semanage fcontext -a -t spamc_home_t "/usr/local/spamassassin(/.*)?"

Dadurch wird eine Regel hinzugefügt, nach der der SELinux-Typ spamc_home_tfür alle Elemente unter /usr/local/spamassassineinschließlich des Verzeichnisses selbst rekursiv geändert wird. Diese Änderungen werden jedoch nicht sofort wirksam.

Damit diese Änderungen sofort wirksam werden, würde ich unmittelbar nach dem obigen Befehl Folgendes ausführen:

restorecon -rv /usr/local/spamassassin

Dadurch werden die Standard-SELinux-Kontexte basierend auf den Regeln des Systems wiederhergestellt. Tatsächlich dasselbe Verhalten wie beim Neustart des Systems oder beim Erstellen einer neuen Datei. Es ist besser als die Verwendung von, chconweil es aus dem Regelsatz (den Sie gerade mit dem obigen Befehl geändert haben) liest, als eine nicht persistente Ad-hoc-Änderung vorzunehmen.

Matthew Sanabria
quelle
1
# chcon -vR --type=spamc_home_t /usr/local/spamassassin
changing security context of `/usr/local/spamassassin/.bash_profile'
changing security context of `/usr/local/spamassassin/.bash_logout'
changing security context of `/usr/local/spamassassin/.bashrc'
changing security context of `/usr/local/spamassassin/spamfilter.log'
changing security context of `/usr/local/spamassassin'


# semanage fcontext -a -t spamc_home_t "/usr/local/spamassassin(/.*)?"


# service spamassassin restart
Stopping spamd:                                            [  OK  ]
Starting spamd:                                            [  OK  ]

https://wiki.centos.org/HowTos/SELinux#head-0f6390ddacfab39ee973ed8018a32212c2a02199

ich benutzte

# grep spamd_t /var/log/audit/audit.log | audit2allow

die in einem Kommentar eine Reihe von Kontexten ausspucken und ich musste nur raten, auf welchen. Ich weiß nicht, wie ich den richtigen aussuchen soll.

Chloe
quelle