为什么把根文件写入不属于root的目录是不好的?

这是对另一个问题的评论,如果有人能够向我解释这个原因,我会喜欢它。

我build议让Apache将给定VHost的错误logging到用户的主目录中。 这被击倒,因为它是不安全的。 为什么?

我在回复评论中要求澄清,但是我得到的只是在根目录下没有root权限的文件夹中写入是不安全的。 再次,有人可以解释吗?

谢谢,

巴特。

因为恶意用户可以恶意地尝试指向文件root正在写入不同的位置 。 这不是那么简单,但真的有可能。

例如,如果一个用户会find从假定的Apache日志到/ etc / shadow的方式创build符号链接的方法,那么您将会突然发现一个不可用的系统。 Apache( root )会覆盖你的用户凭证,导致系统故障。

 ln -s /etc/shadow /home/eviluser/access.log 

如果access.log文件不能被用户写入,则可能难以劫持它,但是避免这种可能性更好!

一个可能是使用logrotate来完成这个工作 ,创build一个不存在的文件的链接,但是logrotate只要日志增长就会被覆盖:

 ln -s /etc/shadow /home/eviluser/access.log.1 

注意

符号链接方法只是一个可能的攻击,作为概念certificate。

安全性必须以白名单的心态进行 ,而不是将我们所知道的问题列入黑名单。

没有进程的一般原则写入他们不拥有或信任的目录是一个好的方法。 但在这种情况下,相信Apache代码用O_NOFOLLOW等打开日志是O_NOFOLLOW :login到用户的主目录是一个常见的设置。