root
与(能够做所有事情)不同的是,可以分配多个管理员来仅进行管理部分一个系统的?
例如,一个系统可以有 3 个管理员:
Application Administrator
- 他可以安装或删除程序,但不能更改网络设置或添加或删除用户Network Administrator
- 他可以设置网络设置,但无法安装程序或添加/删除用户。User Administrator
- 他可以添加或删除用户,但无法安装程序或配置网络设置。
3 名管理员应该只能管理分配给他们的任务,因此给他们所有的root
帐户是不可取的,因为这会使他们干扰彼此的工作。
处理这种划分的正确方法是什么?
答案1
您必须让某人有权访问 root 帐户才能提供额外的权限。除此之外,您还可以用来sudo
限制其他管理员的控制范围,而无需授予他们 root 权限。但总的来说,您所描述的似乎更多是政治/培训问题,而不是技术问题。雇用合适的员工,他们不会互相妨碍,他们会在必要时互相帮助。
答案2
sudo 可以让用户通过 sudo 访问部分命令,但不是全部命令。
您可以使用该visudo
命令安全地编辑 /etc/sudoers 文件,并在真正保存文件之前进行一些语法检查。
在文件内部,您可以添加一行,例如
mike ALL=(root) /usr/bin/aptitude, /usr/bin/apt-get
让 mike 通过 sudo 访问 aptitude 和 apt-get,但不能添加任何其他命令。
请注意,这不是很安全。程序通常假设如果它们以 root 身份运行,那么运行它们的人就拥有完全的 root 访问权限,因此它们没有针对漏洞的特殊保护。当命令运行时,用户以 root 身份登录,有时会出现一些技巧,可以在仍然是 root 的情况下执行任意命令。您不应该为不信任的用户执行此操作,但对于您的用例来说,这似乎没问题。
详细信息取自这里: https://ubuntu-tutorials.com/2007/03/01/allowing-limited-sudo-access-with-visudo/
答案3
简单的事实是,如果一个人可以任意安装程序,那么他们可能可以安装一个在 root 权限下运行的程序,这样他们就可以安装授予他们其他类型访问权限的程序。 IE 任何可以安装或修改以 root 身份运行的东西的人都是或可以轻松成为 root。
如果您想分离您的身份验证,您确实应该考虑某种形式的集中式目录服务,该服务仅由您的身份验证管理员管理。因此,不要让任何人创建本地用户,并构建一个删除/标记任何创建的本地用户的系统。然后只需将所有系统链接到您的中央目录即可。
如今,这些任务中的大部分可能应该尽可能通过配置管理系统间接处理。然后,您可以对配置管理系统实施某种检查,仅允许某些组管理某些事物。也许您可以简单地让一些人在配置管理文件应用于生产系统之前批准对它们的更改。然后,该人将检查每项更改是否是由授权人员进行的。
答案4
Sudo 将是首选工具,您可以按组划分访问权限。
创建您想要作为管理员的 3 个组,并在每个组中添加您想要的用户。
在 /etc/sudoers 中设置命令别名
Cmnd_Alias APPADM = /usr/bin/yum
Cmnd_Alias USEADM = /usr/sbin/useradd
Cmnd_Alias NETADM = /usr/bin/服务网络 *
然后组访问
%appadm ALL=(根) APPADM
%useadm ALL=(根) USEADM
%netadm ALL=(根) NETADM
类似的东西应该有效。