我有一个 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
显示mysite
目录和.sqlite
文件的所有者现在是apache
. 但是,我在尝试访问该/admin
页面时仍然遇到错误。我chmod
将目录编辑/srv/mysite
到 757 并DATABASE.sqlite
归档到 756,因为这是我能做的最好的事情来获得工作权限。有人告诉我这是一个安全风险,但我似乎无法弄清楚如何给予它更少的权限并通过unable to read/open database file
错误获得通过。是因为 SELinux 吗?
仅供参考,我在 CentOS 和 sudo 中的常规用户帐户下操作,每当我需要提升时:
[noblerare@localhost ]$