使用 chmod 命令后,/var/www/html 中的文件仍然无法写入

使用 chmod 命令后,/var/www/html 中的文件仍然无法写入

我在尝试在 Linux 系统上安装一些应用程序时遇到了一些问题。据说我放置这些应用程序的 /var/www/html/xxx 目录中的文件不可写入。我chmod 777 xxx尝试使用命令使其工作,但当我再次打开应用程序时错误仍然存​​在。

具体来说,我想在我的系统上安装 phpFreeChat,所以我把这些文件放在 /var/www/html/freechat 目录中,然后cd在bash 上输入 。结果如下:chmod 777 data/privatechmod 777 data/publiclist -al data

drwxr-xr-x.  4 root root 4096  Jun 17 15:07 .
drwxr-xr-x. 13 root root 4096  Jun 17 15:22 ..
drwxrwxrwx.  2 root root 4096  Jun 17 15:07 private
drwxrwxrwx.  3 root root 4096  Jun 17 15:07 public

在我看来,这些都很好,直到我http://localhost/freechat在浏览器中输入。结果如下:

phpFreeChat 无法初始化,请更正以下错误:

/var/www/html/freechat/src/../data/private 不可写入 /var/www/html/freechat/src/../data/private/cache 无法创建 /var/www/html/freechat/src/../data/private/cache 不可写入 /var/www/html/freechat/src/../data/private/cache 不可读 无法创建 /var/www/html/freechat/src/../data/public/themes/default 无法创建 /var/www/html/freechat/src/../data/public/themes/default /var/www/html/freechat/src/../data/private/chat 无法创建 /var/www/html/freechat/src/../data/private/chat 不可写入 /var/www/html/freechat/src/../data/private/chat 不可读无法创建 /var/www/html/freechat/src/../data/private/chat/s_d0ba868e1391b6c0d897996049a68ada /var/www/html/freechat/src/../data/private/chat/s_d0ba868e1391b6c0d897996049a68ada 不可写入 /var/www/html/freechat/src/../data/private/chat/s_d0ba868e1391b6c0d897996049a68ada 不可读

我对此感到很困惑,因为这种情况不仅发生在安装此应用程序时,而是在所有应用程序时都发生。一定是我犯了错误,但这是什么呢?

答案1

该问题已通过命令解决setenforce 0,该命令将关闭 SELinux。

我太傻了!我从来没想过这些事情。

无论如何,感谢 Flimzy 和 njd。

答案2

您需要执行递归 chmod,以影响 data/private 和 data/public 中包含的所有文件和子目录:

chmod -R 777 /var/www/html/freechat/private
chmod -R 777 /var/www/html/freechat/public

现在,话虽如此,你应该不是使用模式 777。 尤其如果除您之外的任何人在该服务器上都有登录帐户。777 表示所有人可读、可写和可执行。实际上,您系统上的任何用户都可以读取、写入、删除或以其他方式处理这些文件。

至少,你应该将其更改为模式 774,这意味着只有用户和组(目前都是 root)可以写入文件,但任何用户都可以读取它们。

理想情况下,您还会让所有文件都归运行 freechat 软件的同一个非 root 用户所有,并且只授予该用户/组读/写权限。

至少,将模式更改为 770,以便只有 root 用户和 root 组有权访问

答案3

如果你查看每个目录的权限:

ls -ld / /var /var/www /var/www/html /var/www/html/freechat

并注意第一列,您应该看到如下开头的行:

drwxr-xr-x  

至少应该有一个X在第一列的末尾:如果没有它,网络服务器将无法访问 freechat 目录的内容。

所以你可能需要

chmod o+x /var/www/html

乃至

chmod o+x /var/www

答案4

正确的做法是,在不杀死 SE 的情况下这样做

管理上下文-a-t httpd_sys_rw_content_t'/var/www/html/freechat/data(/.*)'

restorecon -R /var/www/html/freechat/data 快速说明:

第一段说“以 /var/www/html/freechat/data 开头的所有内容都应该具有默认上下文‘httpd_sys_rw_content_t’”

另一条说“将 httpd_sys_rw_content_t 中文件/目录的所有上下文(递归地)设置为默认值(刚刚更改)”

相关内容