mod_perl 看不到 /tmp 中的文件

Posted

技术标签:

【中文标题】mod_perl 看不到 /tmp 中的文件【英文标题】:mod_perl can't see files in /tmp 【发布时间】:2015-03-20 21:28:42 【问题描述】:

我有一些 mod_perl 代码试图访问 /tmp 下的文件...但它会引发“没有这样的文件或目录”错误。我在我的代码中添加了一个“ls -al /tmp”来查看 Perl 在目录中看到的内容,它只给了我 .和..:

drwxrwxrwt.  2 root root        6 Jan 21 13:36 .
drwxrwxrwx. 18 root sysadmin 4096 Nov 22 22:14 ..

实际上,/tmp 下有多种文件,包括一些归 Apache 用户所有的文件。将我的代码更改为“ls -al /”会给出正确的目录列表(什么都没有)。

我尝试对 Apache 用户进行 sudo'ing,并且可以在 /tmp 文件下看到,所以它必须与 mod_perl 相关。

想法?我在 CentOS 7 下运行 mod_perl 2.0.8 和 Apache 2.4。SELinux 设置为 permissive。

【问题讨论】:

我无法准确回答,但我想知道是否正在进行某种 chrooting。例如。 /tmp 就 mod_perl 而言与真正的 /tmp 不同。我建议从 mod_perl 在 /tmp 创建一个文件,看看它是否如您所愿。 Bingo,这是一个名为 PrivateTmp 的功能,是 RHEL 7 的新功能:securityblog.redhat.com/2014/04/09/… 【参考方案1】:

因此,根据 cmets,这里的答案是 - 它是 RHEL 7 功能。 https://securityblog.redhat.com/2014/04/09/new-red-hat-enterprise-linux-7-security-feature-privatetmp/

PrivateTmp=

采用布尔参数。如果 true 设置一个新的文件系统 已执行进程的命名空间并挂载私有 /tmp 里面的目录,不被外部的进程共享 命名空间。这对于保护对临时文件的访问很有用 进程,但通过 /tmp 在进程之间进行共享 不可能的。默认为 false。

【讨论】:

这是我寻找两天的答案。谢谢你:)

以上是关于mod_perl 看不到 /tmp 中的文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥ios中的沙盒路径找不到文件

solaris 10,java 6,file.exists 看不到现有文件

解决Springboot文件上传报错,java.io.FileNotFoundException: D:SystemTemp omcat.819...00.tmp (系统找不到指定的文件。)

解决Springboot文件上传报错,java.io.FileNotFoundException: D:SystemTemp omcat.819...00.tmp (系统找不到指定的文件。)

解决Springboot文件上传报错,java.io.FileNotFoundException: D:SystemTemp omcat.819...00.tmp (系统找不到指定的文件。)

解决Springboot文件上传报错,java.io.FileNotFoundException: D:SystemTemp omcat.819...00.tmp (系统找不到指定的文件。)