当我使用PHP的move_uploaded_file
函数将文件上传到目录中时,这些文件具有标签httpd_sys_rw_content_t
并继承父目录的ACL。如果我将PHP配置为使用自定义创建的临时目录,则上传的文件将被标记为httpd_tmp_t
并丢失ACL。
是什么导致了这种情况的发生?
临时目录位于/var/www/project/tmp
中。它的模式为1777,标签为tmp_t
。
upload目录位于/var/www/project/uploads
中,PHP进程可写,标签为httpd_sys_rw_content_t
。在它内部创建的文件也有这个标签,并继承其父级的ACL,除了这种奇怪的情况。
我会说这是将文件从一个位置移动到另一个位置的结果,但是为什么它不对/tmp
这样做呢?
- Rocky Linux 8
- PHP 8.1
1条答案
按热度按时间hsvhsicv1#
有一个文件转换说,当一个类型为
httpd_t
的进程在一个类型为tmp_t
的目录中创建一个文件时,它将应用类型httpd_tmp_t
。如果您希望在此目录中创建的文件的类型为
httpd_sys_rw_content_t
,则应将此类型设置为目录: