php 为什么使用自定义临时目录时上传的文件会获得httpd_tmp_t标签?

myzjeezk  于 2023-05-21  发布在  PHP
关注(0)|答案(1)|浏览(115)

当我使用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
hsvhsicv

hsvhsicv1#

有一个文件转换说,当一个类型为httpd_t的进程在一个类型为tmp_t的目录中创建一个文件时,它将应用类型httpd_tmp_t
如果您希望在此目录中创建的文件的类型为httpd_sys_rw_content_t,则应将此类型设置为目录:

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/project/tmp(/.*)?"
restorecon -RF /var/www/project/tmp

相关问题