刚刚开始与一小群前端 Web 开发人员合作,他们都以 root 身份登录专用的 WHM/Apache 生产服务器来修改客户端网站。他们声称不想登录每个单独的网站帐户,因为帐户数量太多了。
我不是一位经验丰富的系统管理员,但我知道这是错误的。
为这些开发人员创建登录名并分配对 /home/ 目录中所有客户端资产具有完全 rwx 权限的权限的最佳方法是什么?
附加信息:* 我所说的开发人员指的是 CSS/HTML 前端设计师。我们的开发人员使用 git 作为 CVS,在我们推出 CMS 的新版本之前,他们不会在服务器上工作。
答案1
我不是一位经验丰富的系统管理员,但我知道这是错误的。
实际上,真正错误的是,你的生产机器上有开发人员。:-/(当你有另一台机器供他们测试他们的更改,并且有脚本方式将这些更改应用于生产设置时,你的生活会更好。你的生活将真的当他们将代码检查到中央源代码存储库(svn 或类似物)并将其部署到暂存环境进行测试,然后再投入生产时,情况会变得更好。)
不幸的是,如果不了解您的情况的更多细节,我不确定我能否提供很多建设性的建议,但以下几点可能会有所帮助:
- 设置 sudo 以允许您的开发人员以个人客户端身份执行操作
- 对相关目录使用组可写模式
答案2
创建一个开发者组,并将所有文件 chown 为该组。然后为所有文件赋予 g=rwx。
此外,我认为让开发人员编辑网站是工作流程不佳的表现。我建议的简单发布管理是:
使用类似 subversion 的工具将网站签入代码存储库。然后让他们创建带有部署说明的标签。然后管理员可以使用这些标签和部署说明进行部署,并理想地自动化该过程。此外,管理员可以确保有一个恢复策略。
答案3
从安全角度来看,我建议将各个站点完全放在不同的目录结构中,并通过虚拟主机链接到它们。例如 /var/www/client1、/var/www/client2。从那里创建一个名为 webdev(或任何其他名称)的新组,并授予该组对 /var/www/client* 树的写入权限。
话虽如此,我还建议建立一个测试和/或 Q/A 环境来进行更改,然后在验证后将其推广到生产服务器。理想情况下,Web 开发人员将无法访问生产系统,而由单独的 Web 管理员或网站管理员来推出新页面。您的文化是否能够支持这种职责分离则完全是另一回事。
答案4
由于 cPanel 需要对某些文件夹/文件具有某些权限,因此上述某些功能将无法工作(在其他区域可以,但使用 cPanel/WHM 则不行)。
我会做以下一项或两项:
1) 在 WHM 中创建一个可以访问帐户的经销商,以便开发人员可以根据需要进入 WHM,但您可以自定义经销商在服务器修改方面的权限。这样,开发人员就可以为客户做 cPanel 相关的事情,而不会搞砸整个服务器。
2) 使用 ssh 密钥以拥有文件的用户身份让他们进入。由于您使用的是 cPanel,因此 ssh 密钥将进入。/home/username/.ssh/authorized_keys
您可以保留一个“主”authorized_keys 文件,并根据需要将其分发到 /home/username 目录。
使用此方法,如果开发人员离开,您只需从“主”authorized_keys 文件中提取他的密钥并减去旧密钥即可。
我也同意上述 Luke 的回答。