刚刚开始与一小部分前端Web开发人员合作,他们都以root身份login到专用的WHM / Apache生产服务器来修改客户端网站。 他们声称,他们不想login到每个单独的网站帐户,因为有这么多。
我不是一个有经验的系统pipe理员,但我知道这是错的。
为这些开发人员创buildlogin名并将权限分配给/ home /目录中所有客户端资产的权限都是最好的方法是什么?
其他信息:*当我说开发者是指CSS / HTML前端devise师。 我们的开发人员使用git作为CVS,并且不会在服务器上工作,除非我们推送CMS的新版本。
我不是一个有经验的系统pipe理员,但我知道这是错的。
其实,真正错误的是你的生产机器上有开发人员。 : – /(当你有另外一台机器让他们testing他们的改变并用脚本方式把这些改变转移到生产环境时,你的生活将会变得更好,当他们将代码检查到一个中央时,你的生活会变得更好源代码库(svn等),并将其部署到临时环境进行testing,然后才能生产。)
不幸的是,我不确定在不了解有关您的情况的更多细节的情况下,我可以提供很多build设性的build议,但是有几件事可能会有所帮助:
创build一个开发人员组,并将所有文件作为该组进行分配。 然后给所有的文件g = rwx。
另外,让开发人员编辑网站,我认为这是一个糟糕的工作stream程的迹象。 我build议简单的发布pipe理将是:
让网站使用类似subversion的东西签入代码库。 然后让他们用部署指令创build标签。 然后,pipe理员可以使用这些标签进行部署并部署指令,并使该stream程自动化。 另外,pipe理员可以确保有一个恢复策略。
从安全angular度来看,我build议将各个站点完全放在不同的目录结构中,并通过虚拟主机链接到它们。 即/ var / www / client1,/ var / www / client2。 从那里创build一个叫做webdev(或其他)的新组,然后给这个组写权限给/ var / www / client *树。
也就是说,我还build议搭build一个testing和/或Q / A环境来进行更改,然后一旦validation它们就会转到生产服务器。 理想情况下,webdevs将无法访问生产系统,而单独的Webpipe理员或网站pipe理员将成为推出新页面的人员。 你的文化能否支持这种职责分离完全是另外一回事。
就我个人而言,我认为开发人员不应该对生产环境拥有任何权利,这是因为我来自非常严格的背景,我们使用Rational Unified Process作为法律。 开发是他们做他们想要的东西,接受他们有限的权利,但变化通过我(系统pipe理员)和生产他们没有权利,任何/所有的变化通过我在计划的一天,除非变化是紧急的。 究竟什么是你的pipe理政策是在这个问题上。 如果它只是一个小店,那么显然我刚才所描述的是巨大的矫枉过正,但仍然需要考虑。 最好的事情是以最小的特权心态去,只给他们他们需要的东西。 所有其他的失败只是确保你得到了很好的备份来回滚任何改变可能会使事情变得糟糕(使用虚拟机的快照对于这些改变是一种天赐之物,只是不要让快照活动超过48小时或者膨胀)。
由于cPanel需要某些文件夹/文件的某些权限的方式上面的一些将无法正常工作(在其他地区是的,与cPanel / WHM,没有)。
我会做一个或两个以下:
1)在WHM中创build一个可以访问帐户的经销商,这样开发者可以根据需要进入WHM,但是您可以自定义经销商在服务器修改方面的权限。 这样开发者可以为客户做cPanel相关的事情,但不能把整个服务器搞砸。
2)使用ssh键让他们进入拥有文件的用户。 由于您使用的是cPanel,因此ssh密钥会放在/home/username/.ssh/authorized_keys您可以保留一个“master”authorized_keys文件,并根据需要将其分发到/ home / username目录。
有了这个方法,如果一个开发者离开了,你可以从“master”authorized_keys文件中拉出他的密钥,并将新的密钥减去旧的密钥。
我也同意卢克的答案。
mkdir /var/www chown root:www-data /var/www chmod 2775 /var/www
将用户放入www-data组。