If you google "named custom logs selinux" you will find quite a bit of chatter about setting up custom logs outside of /var/log for DNS (named). These posts are interesting, but they tend to be run on posts about learning selinux and becoming an expert on named.
What you need to know? If you have setup custom logging locations in your /etc/named.conf file, such as:
channel default_file {
file "/var/log/named/default.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
What you need to know? If you have setup custom logging locations in your /etc/named.conf file, such as:
channel default_file {
file "/var/log/named/default.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};
Then you will likely see errors like this in /var/log/messages:
Oct 26 11:41:13 namedsvr setroubleshoot: SELinux is preventing /usr/sbin/named from write access on the directory /var/named/chroot/var/log/named. For complete SELinux messages. run sealert -l 6eab4aaf-e615-4ade-9e88-4efdc789eaf2
Then you run the sealert command as suggested by the very friendly selinux audit log and you are told:
#============= named_t ==============
#!!!! The source type 'named_t' can write to a 'dir' of the following types:
# tmp_t, named_cache_t, var_log_t, var_run_t, named_var_run_t, named_log_t, named_tmp_t, cluster_var_lib_t, cluster_var_run_t, root_t, cluster_conf_t
This is important information because your custom log locations are not labeled correctly, as in:
[root@namedsvr log]# ls -Z /var/named/chroot/var/log
drwxr-xr-x. named named unconfined_u:object_r:named_conf_t:s0 named
This named_conf_t type is very critical here. What you want to do now is change this type to be named_log_t:
chcon -t named_log_t /var/named/chroot/var/log/named
Restart named and error messages should go away.
Where did this named_conf_t type come from?
> more /etc/selinux/targeted/contexts/files/file_contexts
Run that more command see look at all of those labels. You want to find the named "chroot" labels and eventually work your way down to the /var/named/chroot/var/log paths. Then you want to add your own rule for the var/log/named path so that it sets the proper type to named_log_t. That way this change will survive reboot and restorecon, which is also very important.
A good place to start learning selinux: