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

问题描述 投票:0回答:1

当我使用 PHP 的

move_uploaded_file
函数将文件上传到目录时,这些文件具有标签
httpd_sys_rw_content_t
并继承父目录的 ACL。如果我将 PHP 配置为使用自定义创建的临时目录,上传的文件将改为标记为
httpd_tmp_t
并丢失 ACL。

是什么原因导致这种情况发生?

临时目录位于

/var/www/project/tmp
。它的模式为 1777,标签为
tmp_t
.

上传目录位于

/var/www/project/uploads
,PHP进程可写,标签为
httpd_sys_rw_content_t
。在其中创建的文件也具有此标签并继承其父级的 ACL,除了这种奇怪的情况。

我会说这是将文件从一个位置移动到另一个位置的结果,但为什么它不这样做

/tmp

  • 洛基 Linux 8
  • PHP 8.1
php linux selinux tmp
1个回答
0
投票

有一个文件转换说当类型为

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
© www.soinside.com 2019 - 2024. All rights reserved.