Go to main content
Oracle® Linux Fault Management Architecture ソフトウェアユーザーズガイド

印刷ビューの終了

更新: 2015 年 10 月
 
 

SELinux が実行中の場合に fmd デーモンが起動しないことがある

SELinux が実行中の場合に fmd デーモンが起動しないことがあります。SELinux は、特定のディレクトリとファイルへのアクセスを保護します。特に、/var/opt/fma/fm/fmd 内のログファイルへのアクセスは拒否されることがあります。

この問題は、fmadm コマンドを実行しようとしたときに発生します。たとえば、次のエラーが表示されます。

fmadm: failed to connect to fmd: RPC: Program not registered

さらに、次のようなエラーメッセージをシステムログで見つけることができます。

May 28 03:07:14 sca05-0a81e7e6 setroubleshoot: SELinux is preventing logrotate from read access on the directory /var/opt/fma/fm/fmd. For complete SELinux messages. run sealert -l 9eb4cb40-9d2b-4428-980f-c4e46606aec1

  1. ログファイルに指定された sealert を実行するための指示に従います。例:

    sealert -l 9eb4cb40-9d2b-4428-980f-c4e46606aec1

    出力表示は次のようになります。

    [root@testserver16 ~]# sealert -l 9eb4cb40-9d2b-4428-980f-c4e46606aec1
    SELinux is preventing logrotate from read access on the directory /var/opt/fma/fm/fmd.
    
    *****  Plugin catchall_labels (83.8 confidence) suggests  ********************
    
    If you want to allow logrotate to have read access on the fmd directory
    Then you need to change the label on /var/opt/fma/fm/fmd
    Do
    # semanage fcontext -a -t FILE_TYPE '/var/opt/fma/fm/fmd'
    where FILE_TYPE is one of the following: abrt_var_cache_t, var_lib_t, configfile, domain, 
    var_log_t, var_run_t, cert_type, configfile, net_conf_t, inotifyfs_t, logrotate_t, 
    sysctl_kernel_t, mailman_log_t, sysctl_crypto_t, admin_home_t, varnishlog_log_t, 
    openshift_var_lib_t, user_home_dir_t, var_lock_t, bin_t, device_t, devpts_t, locale_t, 
    etc_t, tmp_t, usr_t, proc_t, abrt_t, device_t, lib_t, logrotate_var_lib_t, root_t, 
    etc_t, usr_t, sssd_public_t, sysfs_t, httpd_config_t, logrotate_tmp_t, logfile, 
    pidfile, named_cache_t, munin_etc_t, mysqld_etc_t, acct_data_t, security_t, var_spool_t, 
    nscd_var_run_t, sysctl_kernel_t, nfs_t.
    Then execute:
    restorecon -v '/var/opt/fma/fm/fmd'
    
    *****  Plugin catchall (17.1 confidence) suggests  ***************************
    
    If you believe that logrotate should be allowed read access on the fmd directory by 
    default.
    Then you should report this as a bug.
    You can generate a local policy module to allow this access.
    Do
    allow this access for now by executing:
    # grep logrotate /var/log/audit/audit.log | audit2allow -M mypol
    # semodule -i mypol.pp
  2. ログファイルで推奨されているように、次のコマンドを実行します。

    grep logrotate /var/log/audit/audit.log | audit2allow -M name

    semodule -i name.pp

    ここで、name は、カスタムポリシーモジュールファイルの名前です。

  3. SELinux ファイルのアクセスの失敗すべてについて手順 1 と 2 を繰り返します。.pp ファイルごとに別の名前を付けます
  4. 完了したら、システムをリブートします。

    これで、fmadm コマンドを実行すると、失敗メッセージなしの正しい出力が返されます。