Skip to content

Bacula NFS利用とSELinux設定

2018/4/25

Baculaの記事の最後に、NFSとSELinuxについて書いておきたい。
自分が今回構築した環境では、バックアップデータの書き込み先はNFSでマウントした場所にしている。
NFSサーバが別に用意されている。
SELinuxがEnforcingである場合、SELinuxのポリシーを変更しないと、バックアップデータを書き込むことができず、バックアップに失敗する。

過去に書いたSELinuxの設定方法について一通り書いた記事は以下
食わず嫌いのSELinux

設定方法について一通り記事にしておく。
ちなみにサーバOSはCentOS7となっている。

まずはSELinuxのブロッキング情報が記録されるaudit.logを確認してみる。

# audit2allow -a

#============= bacula_t ==============

#!!!! This avc is allowed in the current policy
allow bacula_t nfs_t:dir { add_name write };

#!!!! This avc is allowed in the current policy
allow bacula_t nfs_t:file { create write };
allow bacula_t nfs_t:filesystem getattr;

bacula_tとnfs_tについていくつか設定しないといけないことがわかる。
SELinuxの記事に書いたとおり、fstabに書くことで対処もできたが、めんどくさいのでaudit2allowでやってみる。

# audit2allow -a -M bacula

生成された.teファイルの中身を確認する。

# cat bacula.te 

module bacula 1.0;

require {
        type nfs_t;
        type bacula_t;
        class file { create write };
        class dir { add_name write };
        class filesystem getattr;
}

#============= bacula_t ==============

#!!!! This avc can be allowed using the boolean 'use_nfs_home_dirs'
allow bacula_t nfs_t:dir { add_name write };

#!!!! This avc can be allowed using the boolean 'use_nfs_home_dirs'
allow bacula_t nfs_t:file { create write };
allow bacula_t nfs_t:filesystem getattr;

見てみると、'use_nfs_home_dirs'のブール値を変えてあげることで解決できてしまうらしい。
調べてみるとnfsマウントしたものはこのブール値を変更すれば書き込み権限が与えられる。
参考(SELiinuxのマニュアルページ)

もし厳しく設定したいのであれば、いろいろ考える必要もあるが、今回はブール値変更で対応することにした。

# setsebool -P use_nfs_home_dirs on

設定変更結果を確認してみる。

# sesearch -A -C -s bacula_t | grep nfs
ET allow userdom_home_manager_type autofs_t : dir { getattr search open } ; [ use_nfs_home_dirs ]
ET allow userdom_home_manager_type autofs_t : dir { getattr search open } ; [ use_nfs_home_dirs ]
ET allow userdom_home_manager_type autofs_t : dir { getattr search open } ; [ use_nfs_home_dirs ]
ET allow userdom_home_manager_type autofs_t : dir { ioctl read getattr lock search open } ; [ use_nfs_home_dirs ]
ET allow userdom_home_manager_type nfs_t : dir { ioctl read write getattr lock add_name remove_name search open } ; [ use_nfs_home_dirs ]
ET allow userdom_home_manager_type nfs_t : dir { ioctl read write getattr lock add_name remove_name search open } ; [ use_nfs_home_dirs ]
ET allow userdom_home_manager_type nfs_t : dir { ioctl read write create getattr setattr lock unlink link rename add_name remove_name reparent search rmdir open } ; [ use_nfs_home_dirs ]
ET allow userdom_home_manager_type nfs_t : file { ioctl read write create getattr setattr lock append unlink link rename open } ; [ use_nfs_home_dirs ]
ET allow userdom_home_manager_type nfs_t : lnk_file { ioctl read write create getattr setattr lock append unlink link rename } ; [ use_nfs_home_dirs ]

許可設定が追加されていることがわかる。

この設定後、バックアップデータは問題なく書き込むことができるようになった。
SELinuxで詰まったらこんな感じで解決していくと良いですね。