我以 root 身份运行CentOS 6.2
和安装nginx
。安装后,我将安装的所有者和组更改为它自己的用户和组,以保持更安全。
我以 root 身份登录并运行yum update
更新nginx
,我注意到很多文件所有者组都恢复为 root。
有没有办法在执行更新时保留我想要的所有权?也许以nginx
用户身份登录并执行更新(这是否可能或推荐?)
答案1
你所做的事情很糟糕。停下来。
如果应用程序nginx
由用户拥有nginx
并以用户身份运行,nginx
那么当应用程序被利用时,它可以覆盖自己的文件。你不想要这个。
应用程序二进制文件几乎始终应归root
.服务几乎应该始终作为nobody
或另一个类似的非特权帐户运行。
同样,您也不希望您的 Web 内容由运行 Web 服务器的同一用户拥有,因为这会导致攻击者更改您的内容(即破坏您的网站)。
您希望使用尽可能多的权限分离和尽可能少的权限。
- 应用程序拥有者
root
(因此只root
允许修改它们) - 由非特权用户执行的服务(因此他们很少或根本无法访问系统)
- 只要有可能,服务用户不应拥有该服务的内容
答案2
nginx 不需要能够写入您指定的任何文件;事实上,它这样做的能力存在安全风险。入侵 nginx 的攻击者可以将他想要的任何内容写入您的 Web 目录或配置文件。这就是为什么它们首先由 root 拥有。
因此,您似乎降低了服务器的安全性,而不是提高了服务器的安全性。
对于 Web 目录,实际上不需要移动默认目录。相反,创建一个新的 nginxserver
配置块,并将网站的文件放置在与默认文件分开的公共位置,例如用户的主目录或/srv
.然后,这些文件可由将要处理它们的用户/组拥有。