Zainstalowałem niedawno Baculę – system do wykonywania kopii zapasowych zasobów dyskowych. Na cele magazynu, w którym będą składowane kopie zapasowe (backupy) przewidziałem pewien katalog (/bkp
), jednak SELinux nie pozwalał Baculi na zapis do tego katalogu mimo, że nadałem mu odpowiednie uprawnienia dla właściciela procesu Bacula – użytkownika bacula. Rozwiązanie tego problemu opisuję poniżej.
Jeżeli w CentOS nie ma zainstalowanej komendy semanage to trzeba zlokalizować w jakim pakiecie yum się znajduje:
1 |
<span class="pun">#</span><span class="pln"> yum provides semanage</span> |
i oczywiście zainstalować:
1 |
<span class="pln"># yum -y install policycoreutils</span><span class="pun">-</span><span class="pln">python</span> |
Identyfikacja kontekstu Baculi:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# semanage fcontext -l | grep bacula /bacula(/.*)? all files system_u:object_r:bacula_store_t:s0 /etc/bacula.* all files system_u:object_r:bacula_etc_t:s0 /var/bacula(/.*)? all files system_u:object_r:bacula_store_t:s0 /var/run/bacula.* regular file system_u:object_r:bacula_var_run_t:s0 /var/lib/bacula.* all files system_u:object_r:bacula_var_lib_t:s0 /var/log/bacula.* all files system_u:object_r:bacula_log_t:s0 /usr/sbin/bacula.* regular file system_u:object_r:bacula_exec_t:s0 /var/spool/bacula.* all files system_u:object_r:bacula_spool_t:s0 /var/spool/bacula/log(/.*)? all files system_u:object_r:var_log_t:s0 /etc/rc\.d/init\.d/bacula.* regular file system_u:object_r:bacula_initrc_exec_t:s0 /usr/sbin/bat regular file system_u:object_r:bacula_admin_exec_t:s0 /usr/sbin/bconsole regular file system_u:object_r:bacula_admin_exec_t:s0 |
A zatem kontekst ma nazwę “system_u:object_r:bacula_store_t:s0”.
1 2 3 |
# chcon system_u:object_r:bacula_store_t:s0 /bkp # semanage fcontext -a -t bacula_store_t "/bkp(/.*)?" # restorecon -R -v /bkp |
To samo rozwiązanie zadziała jeżeli CentOS odmówi Baculi prawa do zapisu danych do katalogu, do którego będą przywracane backupy (restore).