【发布时间】:2014-01-30 00:17:37
【问题描述】:
我有一个 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 页面时,我仍然会遇到错误。我chmoded /srv/mysite 目录到 757 和 DATABASE.sqlite 文件到 756,因为这是我能做的最好的事情来获得锻炼的权限。有人告诉我这是一个安全风险,但我似乎无法弄清楚如何给予它更少的权限并通过unable to read/open database file 错误获得通过。是因为 SELinux 吗?
仅供参考,我在 CentOS 的普通用户帐户下操作,每当我需要提升权限时使用 sudo:
[noblerare@localhost ]$
【问题讨论】: