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 中的文件的主要内容,如果未能解决你的问题,请参考以下文章
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 (系统找不到指定的文件。)