owncloud のデータディレクトリを容量の大きなパーティションに変更して
インストールしました。
/var/www/html/owncloud/config/config.php 'datadirectory' => '/data/owncloud',
データベースも/dataに保存場所を変更しましたので、コンテキストを
変更してmysqlコマンドは動作するようになりました。
$ sudo semanage fcontext -a -t mysqld_db_t /data/mysql_data $ sudo restorecon /data/mysql_data $ mysql -p -u root Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g.
owncloudのディレクトリに関してもコンテキストを変更したと考えているのですが、
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/data' $ sudo restorecon '/var/www/html/owncloud/data' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/config' $ sudo restorecon '/var/www/html/owncloud/config' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/apps' $ sudo restorecon '/var/www/html/owncloud/apps' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/config/config.php' $ sudo restorecon -v '/var/www/html/owncloud/config/config.php' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/.user.ini' $ restorecon -v '/var/www/html/owncloud/.user.ini' $ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/.htaccess' $ restorecon -v '/var/www/html/owncloud/.htaccess'
SELinuxが有効になっていると、ブラウザには下記のメッセージが表示されます。
Exception occurred while logging exception: Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [2002] Permission denied #0 /var/www/html/owncloud/lib/composer/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429): OC\DB\Connection->connect() #1 /var/www/html/owncloud/lib/composer/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(389): Doctrine\DBAL\Connection->getDatabasePlatformVersion() (以下省略)
エラーログには下記のメッセージが出ています。
denied { name_connect } for pid=11965 comm="httpd" dest=3306 \ scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 \ tclass=tcp_socket permissive=0
これまで、ls -Z で既定の場所のコンテキスト確認して、それをsemanageで追加することしか
行ったことがなく、ポートのコンテキストタイプがあることを初めて知りました。
TCP:3306番ポートのコンテキストタイプに、scontextに書かれている"httpd_t"を追加すれば
解決できるのでしょうか。
semanage port -a -t httpd_port_t -p tcp 3306
追加するコンテキストはhttpd_tとするのか、httpd_port_tとするのか(それともまったく違うのか)、
と、その理由をご教示いただけないでしょうか。
使用できるポートを調べてみました。
$ sudo semanage port -l | grep mysql mysqld_port_t tcp 1186, 3306, 63132-63164 mysqlmanagerd_port_t tcp 2273 $ sudo semanage port -l | grep httpd $
"httpd_port_t"ではなく、"http_port_t"("d"は含まない)ですね。
$ sudo semanage port -l | grep -w http_port_t http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
それならエラーログ中に「"http_port_t"ポートのコンテキストがおかしいよ」
と書いてくれれば、わかりやすいかと思うのですが、このエラーの解決方法は
semanage port -a -t http_port_t
-p tcp 3306 になりますか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/17 01:10
2019/04/17 03:57