Linux 服务器 - 集中用户管理

Linux 服务器 - 集中用户管理

我正在设置几个 Linux 服务器(使用 ssh、apache、gitolite),但我想要集中式用户管理。到目前为止,我已经设置了 LDAP 目录支持,效果很好。但问题在于:我希望某些用户 U 对服务器 A 和服务器 B 具有不同的访问权限。假设我希望用户 U 具有如下访问规范:- 服务器 A:仅访问主文件夹 - 服务器 B:访问主文件夹和 /mnt/ 文件夹 - 服务器 C:在此服务器上,用户 U 是 root 用户

我还希望能够快速更改权限:恢复/授予用户权限,例如授予用户 U 更改 /mnt 中的所有内容。

所以主要问题是:我应该研究什么(kerberos,radius,......?)来支持不同服务器上的不同访问规则(权限)。

谢谢

答案1

大多数发行版中的 /etc/security/access.conf 下都提供了一种简单但有用的登录限制机制,用于定义“用户 A 可以登录主机 A、B 和 C,但不能登录 D”类型配置的访问规则。您可以按组、按用户、从主机、从子网等指定。

正如其他人提到的,您可以使用 cfengine 或 puppet 等工具来控制此类更改的部署。

而且正如其他人提到的,您可以使用“sudo”(通过 /etc/sudoers 配置)来控制 LDAP 中帐户或组对特定二进制文件的 root 级访问。它非常灵活。man sudo / man sudoers

正如其他人提到的那样,如果经典的用户/组/其他 rwx 权限不足以控制组或用户对文件系统对象的访问,则可以使用 POSIX ACL。

答案2

如果你正在谈论文件系统权限,那么你可以使用以下方法通过详细的 ACL 设置来执行你想要的操作:POSIX acls以及分层组,并通过 LDAP 传递您的组信息。

如果您的权限级别相当静态,那么设置具有逻辑权限块(如“完全访问 /mnt”)的基本组可能就足够了,然后使用 LDAP 来处理从用户帐户中添加/删除该组。

如果您想要更动态地控制权限,那么您必须了解如何更改相关系统上的权限或 ACL。一种推送 ACL 或文件系统权限更改的方法是通过类似木偶或者厨师,它允许您跨机器管理配置更改。您可以通过这些工具之一处理所有事情(例如,包括帐户创建和组成员身份),或者您可以将帐户/组信息存储在 LDAP 中并仅推送 ACL 更改。

就“在此服务器上,用户 U 是 root 用户”而言,我认为没有任何东西可以让您这样做。root 用户是 root 用户,其他用户不是 - 故事结束。您可以将其他用户的 uid 更改为 0,但这太丑陋了。您可以做的是使用组成员身份来控制谁可以使用 sudo 命令获得 root 权限,并再次使用 LDAP 将组成员身份传递给相关服务器。

请记住,组成员身份更改会在您登录时生效,因此某些更改可能会延迟,并且还要考虑在您的环境中完成的任何 LDAP 结果的 NSS 缓存(例如,通过 nscd)

答案3

前两项可以由所有权和有或没有 LDAP 的组来处理。

如果您使用可以使用用户 ID 和组的 ACL,则更改访问权限应该更容易。

让用户在服务器上成为 root 权限将使他们成为所有服务器上的 root 权限。要成为 root 权限,UID 必须为 0。允许任何用户以 root 权限登录都是不安全的做法。 sudo这是向用户授予 root 权限的常规方法,具有完全限制主机和/或主机组访问的能力。通常主机组是 ALL。更改的内容/etc/sudoers不会终止任何正在运行的进程。

您可能需要实施cfenginepuppet或类似工具来实施您的更改。这将简化计划中的访问更改,并为您所做的事情提供一些文档。如果需要,可以快速完成更改,但如果需要频繁快速更改,我会非常担心。

用户拥有的组已设置登录名,因此撤销组不会修改已登录用户的访问权限。文件访问权限的更改将立即对新访问权限产生影响。我尚未验证对打开文件的影响,但预计原始访问权限将适用。

查看可以与 LDAP 和 pam 一起使用的某些选项pam_check_/etc/ldap.conf

答案4

如果您在 LDAP 中创建组 AdminServerC,然后在服务器 C 上添加/etc/sudoers以下语句,会怎么样?:

%AdminServerC        ALL=(ALL) ALL

相关内容