我有一些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,并且可以在/ tmp文件下看到,所以它必须与mod_perl相关。
想法?我在CentOS 7下运行mod_perl 2.0.8和Apache 2.4.SELinux设置为允许。
答案 0 :(得分:3)
因此,根据评论,这里的答案是 - 它是RHEL 7的一项功能。 https://securityblog.redhat.com/2014/04/09/new-red-hat-enterprise-linux-7-security-feature-privatetmp/
PrivateTmp =
采用布尔参数。如果为true则设置新的文件系统 已执行进程的命名空间并挂载私有/ tmp 其中的目录,不由外部进程共享 命名空间。这对于保护对临时文件的访问非常有用 该过程,但通过/ tmp在进程之间进行共享 不可能。默认为false。