当我目前在 Linux 服务器上工作时(我是 sysadmin 2),我有以下 3 个用例:
- 最终用户使用(例如个人或普通项目组)
- 用户问题解决和低风险变更(例如 Apache vhost 变更)
- 真正的系统管理员工作(例如配置守护进程)
在 NIS 中,我们有 1 个用户帐户用于管理所有内容(其中几乎所有内容都配置了详细且正确的组),并且总体运行良好。
问题是我们目前sudo -i
为 2 和 3 打开了一个 root shell ( )。由于完全访问权限,这会带来风险。此外,我们还遇到过具有 root 访问权限的人高估自己能力而犯的错误(非营利组织,因此一般是出于好意)。
我想通过正确授予组权限来区分 2 和 3(例如,站点团队对 apache 具有完全访问权限,但没有其他权限)。问题是我也不想授予用户帐户权限,我希望他们像现在这样进入“管理员模式”,因为它很容易记录,并让人们意识到他们现在可能会造成损害。
是否有可能创建多个级别的权力,而不仅仅是正常的用户/根区分?
当然也欢迎其他建议
答案1
您可以用来su
强制人们在执行第二类事情时更改为高级用户。
每个用户将有两个帐户:$normal_account
和$admin_account
。将所需的权限分配给$admin_account
该人员,该人员才能su $admin_account -
访问该帐户并执行其管理工作。
对于第 3 类功能,我会说不要添加另一个帐户停止花钱。直接使用 运行你的管理命令sudo <command>
。如果你真的想非常小心,请关闭 sudoers 文件中的密码缓存。
答案2
您有两个选择,最复杂但最安全的是强制访问控制 (MAC),它可以通过 SELinux 实现。第二个是配置您的 /etc/sudoers 以授予部分控制权。
User_Alias OPERATORS = bob, tippy, george
Runas_Alias OP = root, operator
Host_Alias OFNET = 10.1.2.0/255.255.255.0
Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm
OPERATORS ALL=ALL
# The users in the OPERATORS group can run any command from
any terminal.
linus ALL=(OP) ALL
# The user linus can run any command from any terminal as any
user in the OP group (root or operator).
user2 OFNET=(ALL) ALL
# user user2 may run any command from any machine in the
OFNET network, as any user.
user3 ALL= PRINTING
# user user3 may run lpc and lprm from any machine.
bob ALL=(ALL) ALL
您可以在以下位置找到更多详细信息Sudoers 手册