Come posso cambiare il contesto di sicurezza su una directory in CentOS con SELinux?


5

Ho provato a cambiarlo, ma non me lo permetteva.

# 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 versione 6.8 (finale)

Risposte:


2

Il motivo per cui hai ricevuto il permesso negato è che il tipo spamd_t non è un tipo SELiunx valido. Potrebbe essere necessario installare alcuni pacchetti per renderlo un tipo valido. Non sono sicuro che ci sia. Ma esaminerò la tua risposta per assicurarti di seguire le migliori pratiche.


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

Questo aggiungerà una regola per cambiare in modo ricorsivo il tipo SELinux in spamc_home_t per qualsiasi cosa sotto /usr/local/spamassassin inclusa la directory stessa ma queste modifiche non avranno effetto immediatamente.

Per rendere effettive immediatamente queste modifiche, eseguirò quanto segue subito dopo il comando sopra riportato:

restorecon -rv /usr/local/spamassassin

Questo ripristinerà i contesti SELinux predefiniti in base alle regole del sistema. Effettivamente lo stesso comportamento che si verifica quando il sistema viene riavviato o viene creato un nuovo file. È meglio che usare chcon perché legge dal set di regole (che hai appena modificato con il comando precedente) piuttosto che apportare una modifica non persistente ad-hoc.


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

ero solito

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

che sputava un sacco di contesti in un commento e dovevo solo indovinare a quale dei due. Non so come scegliere quello corretto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.