PHP会话模式一直使用0600权限

时间:2018-10-27 14:40:40

标签: php codeigniter session

我一直在尝试更改新会话文件的权限。根据{{​​3}},我需要在php.ini文件的session_save_path配置中更改 mode 。我将其更改为0777,默认值为0600。仍在使用0600权限创建新的会话文件。我已经检查过,正确的php.ini已加载并保存了更改。我已将其配置为:0;0777;/var/lib/php/sessions(N; MODE; / path)。有人可以向我解释为什么在我将文件配置为0777的情况下仍然创建具有0600权限的文件吗?

文件存储在/var/lib/php/sessions中,我正在使用Codeigniter。

1 个答案:

答案 0 :(得分:0)

/var/lib/php/sessions/目录通常在其上设置了“粘滞”位-

drwx-wx-wt 2 root root 4096 Oct 15 11:21 /var/lib/php/sessions/

这是通过chmod 1733完成的。请记住,在目录上使用setuid / setgid / sticky位会影响如何在该目录和任何子目录中创建文件(默认所有者/组和权限),而与系统umask的值无关,等等。

此页面-http://www.filepermissions.com/articles/sticky-bit-suid-and-sgid-是有关* nix文件权限的3篇文章系列的一部分,非常好。

  

“粘性位”是文件权限中的一项特殊设置,有助于   限制访问超出普通文件权限所能提供的范围。在   简而言之,粘性位可确保只有文件/目录的所有者是   能够删除或重命名文件。但是应该注意的是   root也可以编辑和删除文件。

1733模式下,系统上的其他人无法读取会话数据文件。这是一件好事。

您为什么要让世界可读的会话存储?

编辑-

如果您真的想破坏它,请创建一个具有适当权限的新目录,并更改会话存储路径以使用该目录。请注意,PHP可能会进行内部检查,使其拒绝将会话数据存储在它认为“不安全”的位置,就像SSH拒绝使用带有不安全权限的密钥一样。