Selinuxはmysqldへのアクセスを拒否します。

Selinuxはmysqldへのアクセスを拒否します。

mysqlデータベースをダンプするスクリプトがあります。その後、ファイルを圧縮し、cronを使用して自分のホームフォルダに保存します。問題は、エラーメッセージが表示されるようです。

mysqldump: "'auth_group' のフィールド表示" を実行できません: '/tmp/#sql_151e_0.MYI' ファイルを作成/書き込みできません (エラーコード: 13) (1) c2duo_db-22072011.sql

今私のcentosサーバーのグラフィックの観点から、selinxはmysqldへのアクセスを拒否したと表示されます。もちろん、selinuxを無効にすると正常に動作します。ただし、selinuxを有効にする必要があります。この問題を解決する方法はありますか?

予約されたこと

10 11 * * 5 /home/sh/mysqlbackup.sh

MySQLバックアップ.sh

  #!/bin/sh

    mysqldump -uroot -ppassword --opt c2duo_db > /home/sh/c2duo_db-`date +%d%m%Y`.sql

    cd /home/sh
    tar -zcvf c2duo_db.tgz *.sql

編集する:これが私がコマンドから得たものですgrep mysqld /var/log/audit/audit.log | tail | audit2why

type=AVC msg=audit(1311581788.889:12363): avc:  denied  { write } for  pid=22102 comm="mysqld" path="/tmp/#sql_151e_0.MYI" dev=dm-0 ino=103481390 scontext=root:system_r:mysqld_t:s0 tcontext=root:object_r:httpd_sys_content_t:s0 tclass=file
        Was caused by:
                Missing or disabled TE allow rule.
                Allow rules may exist but be disabled by boolean settings; check boolean settings.
                You can see the necessary allow rules by running audit2allow with this audit message as input.

また、このコンピュータにはmysqlサーバーがすでにインストールされています。だから私はこれが公式リポジトリだと思います。

ベストアンサー1

ディレクトリのファイルコンテキストが正しくない可能性があります/tmp。私たちに一度見てくださいls -ldZ /tmp

内部の一時ファイルはどのようにfcontextを/tmp持つことができますかhttpd_sys_content_t

type=AVC msg=audit(1311581788.889:12363): avc:  denied  { write } for  pid=22102 comm="mysqld" path="/tmp/#sql_151e_0.MYI" dev=dm-0 ino=103481390 scontext=root:system_r:mysqld_t:s0 tcontext=root:object_r:httpd_sys_content_t:s0 tclass=file
        Was caused by:
                Missing or disabled TE allow rule.
                Allow rules may exist but be disabled by boolean settings; check boolean settings.
                You can see the necessary allow rules by running audit2allow with this audit message as input.

RHELでは次のようになります。

ls -ldZ /tmp
drwxrwxrwt. root root system_u:object_r:tmp_t:s0       /tmp

もちろん、バックアップファイルのパスとは何の関係もありません。特権の問題の場合は、次のメッセージが表示されます。

# su -s /bin/bash nobody -c 'mysqldump -uroot -p123456 --opt test > /root/test-`date +%d%m%Y`.sql'
bash: /root/test-13112013.sql: Permission denied

strace -f -ff -o /tmp/strace mysqldump -uroot -ppassword --opt c2duo_dbこれを使用して、どのファイルを開こうとしているかを確認して使用できます。

おすすめ記事