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'ing 到 Apache 用户,并且可以在 /tmp 文件下看到,所以它必须与 mod_perl 相关。

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

4

1 回答 1

3

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

PrivateTmp=

接受一个布尔参数。如果 true 为已执行的进程设置一个新的文件系统命名空间,并在其中挂载一个私有 /tmp 目录,则该目录不被命名空间之外的进程共享。这对于保护对进程临时文件的访问很有用,但无法通过 /tmp 在进程之间进行共享。默认为假。

于 2015-01-22T12:48:59.003 回答