mod_perl无法查看/tmp目录中的文件。

4

我有一些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 /' 可以得到正确的目录列表(没有遗漏)。
我尝试使用 sudo 切换到 Apache 用户,并可以在 /tmp 文件夹下看到文件,所以这一定与 mod_perl 有关。
有什么想法吗?我正在运行 mod_perl 2.0.8 和 Apache 2.4 在 CentOS 7 下,SELinux 设置为宽容模式。

我无法给出确切的答案,但我会想知道是否正在进行某种chrooting。例如,就mod_perl而言,/tmp与真实的/tmp并不相同。我建议从mod_perl中在/tmp中创建一个文件,并查看它是否按预期显示。 - Sobrique
3
好的,这是一篇关于 RHEL 7 中新功能 PrivateTmp 的文章:Bingo,它是一个名为 PrivateTmp 的特性,在 RHEL 7 中首次出现。https://securityblog.redhat.com/2014/04/09/new-red-hat-enterprise-linux-7-security-feature-privatetmp/ - AndyT
1个回答

3
根据评论,这里的答案是 - 这是一个 RHEL 7 功能。 https://securityblog.redhat.com/2014/04/09/new-red-hat-enterprise-linux-7-security-feature-privatetmp/ PrivateTmp= 采用布尔值参数。 如果为真,则为执行的进程设置新的文件系统名称空间,并在其中挂载一个私有 /tmp 目录,该目录不与名称空间外的进程共享。 这对于保护进程的临时文件很有用,但使通过 /tmp 在进程之间共享变得不可能。 默认值为 false。

这就是我寻找了两天的答案。谢谢 :) - llanfair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接