我有以下用户“架构”:
- root 访问权限被禁用。
- 管理员用户只能访问其主目录。
- Apache 作为 root 服务运行(root 是唯一有权访问 Web 服务器文件的服务)
- 我已经安装了 jenkins CI,它正在使用“管理员”权限构建我的项目。
我想将最新的构建文件复制到我的网络服务器位置作为构建后操作。如果只有“root”用户有权访问我的目标目录,我该如何实现这一点?也许我的“用户架构”一开始就是错误的?
答案1
也许我的“用户架构”一开始就是错误的?
是的。不想向你透露,但就是这样。您应该如何更改它:
- 以自己的用户身份运行 Apache,最好是在 chroot 中。这称为最小特权原则 - 其想法是限制在某些内容受到损害时可能造成的损害。假设某事将要妥协,然后从那里开始工作。您没有理由以特权用户身份运行 Apache。
- 作为自己的用户运行 Jenkins CI。同样的原则也适用。
- 提供某种方式让文件到达网络服务器目录。例如,您可以将 Jenkins 用户添加到 Apache 组。这应该让 Jenkins 构建服务器能够访问 webserver 目录。更安全的方法是以 Apache 用户身份运行 cron 作业或 systemd 计时器,并使用它来复制文件。为什么这样更安全?如果 Jenkins 受到威胁,攻击者将无法访问您的网络服务器目录。