1

linux下,使用php 5.3

如果我在 php 脚本中使用 mkdir 创建文件夹,那么我可以完全访问该文件夹以在其中添加文件或创建文件夹。

如果我然后通过 ssh 登录服务器,创建第二个文件夹,chown(递归或不递归)到与 php mkdir() 创建的用户完全相同的用户:组,并将其 chmod 到与第一个文件夹然后尝试访问此文件夹以添加文件或在其中创建新文件夹将引发权限被拒绝。

尝试 chmod 777 也不起作用。我一生都无法弄清楚两者之间的区别:

drwxr-xr-x.  2 amadeous psacln     4096  6 oct.  02:38 test
drwxr-xr-x.  2 amadeous psacln     4096  6 oct.  02:39 testtest

任何想法表示赞赏。

注释后编辑 apache 用户与组 psacln 中的用户 amadeous 一起运行。mkdir() 确实使用此用户创建新目录,并且组 A exec("whoami") 也返回 amadeous。但是还是不行。

GUIDO ls -Z 对 SELINUX 发表评论后编辑 2 确实给出了不同的结果,尽管我不知道该怎么做:

drwxr-xr-x. amateous psacln system_u:object_r:httpd_sys_rw_content_t:s0 test
drwxr-xr-x. amateous psacln unconfined_u:object_r:user_tmp_t:s0 testtest

我该如何解决这个问题?

谢谢

4

1 回答 1

2

可从 httpd apache 进程访问的文件和目录的正确标签是 httpd_sys_content_t; 而生成的文件有user_tmp_t

ls -Z
drwxr-xr-x. amateous psacln system_u:object_r:httpd_sys_rw_content_t:s0 test
drwxr-xr-x. amateous psacln unconfined_u:object_r:user_tmp_t:s0 testtest

要修复标签,请运行(更多信息):

chcon -t httpd_sys_content_t <directory>
于 2013-10-06T11:47:09.393 回答