Selinux 拒绝访问 mysqld

She*_*009 5 shell rhel permissions selinux mysql

我有一个转储 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
Run Code Online (Sandbox Code Playgroud)

mysqlbackup.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
Run Code Online (Sandbox Code Playgroud)

编辑:这是我从命令中得到的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.
Run Code Online (Sandbox Code Playgroud)

另外,我的mysql服务器已经安装在这台机器上。所以我想这是一个官方回购。

小智 -1

我只是运行以下建议的命令audit2why

% echo "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" | audit2allow 
Run Code Online (Sandbox Code Playgroud)

该命令返回:

#============= mysqld_t ==============
allow mysqld_t httpd_sys_content_t:file write;
Run Code Online (Sandbox Code Playgroud)

这可能就是您需要的 SeLinux 策略允许规则。

但我不知道允许这个规则是否安全......

  • 它允许 MySQL 写入您的所有网站内容,而这绝对没有合法的理由。 (3认同)