読み取り専用データベースへの書き込み試行 - SELinux エラーが発生した Django 質問する

読み取り専用データベースへの書き込み試行 - SELinux エラーが発生した Django 質問する

私は CentOS サーバーを所有しており、そのサーバーには Apache、Django、Django CMS、mod_wsgi がインストールされています。Django プロジェクト ファイルは/srvディレクトリに保存されており、セキュリティ上の理由から SELinux が有効になっています。

Django-CMS を Django に正常に統合することができ、ローカル IP にアクセスするとページが表示されます。ただし、/admin (CMS 機能を利用できるようになる場所) にアクセスしようとすると、次のエラーが表示されますDatabaseError at /admin/ attempt to write a readonly database

わかった。

.sqliteプロジェクト フォルダーにファイルがあるので、ls -lそれに対して を実行すると、次の結果が返されました。

-rw-r--r--.  1 root root 133120 Jan 5 11:53   DATABASE.sqlite

さて、Apache は何らかの権限上の理由でそのファイルを読み取れないのではないかと考え、Stackoverflow で同様の問題についていろいろ調べた後、次のコマンドを実行しました。

> chmod 664 DATABASE.sqlite
> chown apache /srv/mysite
> chown apache /srv/mysite/DATABASE.sqlite

出力は次ls -lのようになります。

-rw-rw-r--.  1 apache root 133120 Jan 5 11:53  DATABASE.sqlite

残念ながら、Django アプリで /admin にアクセスしようとすると、同じエラーが引き続き発生します。どなたか助けていただければ幸いです。おそらく SELinux の権限に関係していると思われますが、権限の問題が何なのかを診断するにはどこから始めればよいのかわかりません。

編集:

私は走った

> chown apache:apache /srv/mysite
> chown apache:apache /srv/mysite/DATABASE.sqlite

すると、ディレクトリとファイルls -lの所有者が現在 であることがすぐにわかります。ただし、ページにアクセスしようとすると、まだエラーが発生します。ディレクトリを 757 に、ファイルを 756 に設定しました。これが、権限を正常に機能させる最善の方法だからです。これはセキュリティ上のリスクであると聞きましたが、権限を少なくしてエラーを回避する方法がわかりません。SELinux が原因でしょうか?mysite.sqliteapache/adminchmod/srv/mysiteDATABASE.sqliteunable to read/open database file

参考までに、私は CentOS の通常のユーザー アカウントで操作しており、昇格する必要があるときは常に sudo を使用しています。

[noblerare@localhost ]$

ベストアンサー1

SQLite データベースが保存されているディレクトリに書き込み権限を追加する必要があります。 を実行するとchmod -R u+w /srv/mysite/役立つはずです。

サーバーがカスタム ユーザー (例www-data) を使用してデータベースにアクセスしている場合、解決策としてはデータベースの所有者を変更することが考えられます。

chown www-data:www-data /srv/mysite
chown www-data:www-data /srv/mysite/DATABASE.sqlite

おすすめ記事