logrotate не может повернуть файл журнала для нашего приложения на CentOS 7. Похоже, это из-за этой ошибки AVC:
type=AVC msg=audit(1441112694.305:19502): avc: denied { write } for pid=9146 comm="logrotate" name="autuitive.log" dev="xvda1" ino=26262388 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:usr_t:s0 tclass=file
Я передал ошибку в утилиту audit2allow, чтобы создать разрешающее правило, но когда я пытаюсь включить правило, я получаю следующую ошибку:
[root@app1 ~]# semodule -i logrotate.pp
libsepol.print_missing_requirements: logrotate's global requirements were not met: type/attribute logrotate_t (No such file or directory).
libsemanage.semanage_link_sandbox: Link packages failed (No such file or directory).
semodule: Failed!
Вот собственно сгенерированное правило:
[root@app1 ~]# cat logrotate.te
module logrotate 1.0;
require {
type logrotate_t;
type usr_t;
class file write;
}
#============= logrotate_t ==============
allow logrotate_t usr_t:file write;
Я думаю, это вызвано тем, что в системе уже будет файл logrotate.pp (/etc/selinux/targeted/modules/active/modules/logrotate.pp
).
Вы должны создать свою локальную политику с другим именем, например
audit2allow -M MY_logrotate <somefilewithmessages
тогда используйте
semodule -i MY_logrotate.pp
установить его. Да, это не лучшее из сообщений об ошибках.