在linux下,使用php 5.3
如果我在php脚本中使用mkdir创建文件夹,那么我可以完全访问此文件夹以添加文件或在其中创建文件夹。
如果我然后通过ssh在服务器上登录,则创建第二个文件夹,chown(递归或不递归)到完全相同的user:group,作为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组中的用户运行。 mkdir()确实使用此用户和组创建新目录 exec(“whoami”)也会返回amade。 但仍然没有。
编辑2关于SELIDUX by GUIDO的评论 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
我该如何解决这个问题?
由于
答案 0 :(得分:1)
可从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
要修复标签,请运行(more info):
chcon -t httpd_sys_content_t <directory>