我们越来越多的外部开发人员(来自不同的客户)开始需要一种比临时添加到我们的服务器和向他们添加我们的公司组(它拥有 /var/www/ 中的所有内容 - 我们的工作区)更好的策略
最佳解决方案是能够嵌套组,所以如果我可以@ourcompany 将是组@ourcompany 的所有成员。
ourcompany:xxx:john,joe,bob guestcompany:xxx:guest1,guest2,@ourcompany
但这是不可能的。我正在玩弄拥有一个模板系统的想法,我在其中做一些简单的 sed 东西来替代并创建一个新的 /etc/group
(我不想要 guestcompany:xxx:guest1,guest2,john,joe,bob 的原因是因为如果我们在公司中添加或删除人员,则必须有人通过并确保所有内容都已更新,这可能会下降离开边缘)
我想下一个合乎逻辑的步骤是 ACL,但根据我过去的经验,它们处理起来有点麻烦,所以我只是想看看你们中是否有人知道任何其他可行的解决方案。
我并不是建议你这样做,但我已经通过使用 Active Directory 来管理我的集中式身份验证并实施了类似打开来验证我的 Linux 机器来解决这个问题。LWO 为所有机器提供一致的 UID 和 GID,因为它们基于散列。这使得像 NFS 和 rsync 这样的事情很容易处理。它还很好地解决了嵌套组。
您是否使用任何类型的集中式身份验证,例如 NIS 或 LDAP?
我建议使用Linux 受托人。它的灵感来自很久以前 Novell 的受托人,它(恕我直言)优于我所见过的任何其他东西。
无需过多介绍,您只需维护一个配置文件;尝试使用 ACL 等,您的可见性不是那么好,因为您必须单独查询文件。
对于 Linux 受托人,您还可以选择 AND 与 Unix 权限,或一起忽略它们。
唯一的缺点是它是一个内核模块(这本身并不是一件坏事),但您可能需要在适当的支持下重新编译内核(根据受托人文档)。这也不是问题,但是如果您有支持,例如来自 Red Hat,那么重新编译/修改内核将不是一个选项。
我根本不会让他们访问您的工作区。我会设置它们访问 git 或 subversion 存储库,然后将它们的更改拉到您的系统上进行部署。您可以编写测试服务器脚本以定期从您的存储库更新,以便无需开发人员干预即可测试更改。
我知道 ACL 可能很麻烦。每当我没有明确要求它们时,我都会避开它们。但在你的情况下,它们似乎是最好的选择。
如果...您已经拥有 Windows AD 以及许多需要以这种方式获得权限的潜在机器,我会做 LWO。
也许是时候使用集中式系统了,比如 LDAP?我会推荐 FreeIPA:非常灵活、漂亮的 UI、很多功能。它只是工作。