系统管理指南:安全性服务

Procedure如何限制用户或角色的权限

可以通过减少基本集或减少限制集来限制用户或角色可用的权限。由于此类限制可能产生预料不到的副作用,因此不是非常必要时不要使用此方法限制用户权限。


注意 – 注意 –

为某个用户修改了基本集或限制集时,应该彻底测试任何用户的功能。


  1. 确定用户基本集和限制集中的权限。

    有关过程,请参见如何确定进程的权限

  2. (可选的)从基本集中删除一项权限。


    $ usermod -K defaultpriv=basic,!priv-name username
    

    通过删除 proc_session 权限,可以防止用户检查其当前会话以外的任何进程。通过删除 file_link_any 权限,可以防止用户生成指向不归其所有的文件的硬链接。


    注意 – 注意 –

    请勿删除 proc_forkproc_exec 权限。如果没有这些权限,用户将无法使用系统。事实上,只能从不对其他进程执行 fork()exec() 操作的守护进程中删除这两个权限。


  3. (可选的)从限制集中删除一项权限。


    $ usermod -K limitpriv=all,!priv-name username
    
  4. 测试 username 的功能。

    username 的身份登录,并尝试执行 username 必须在系统上执行的任务。


示例 11–7 从用户的限制集中删除权限

在以下示例中,防止所有源自 jdoe 初始登录的会话使用 sys_linkdir 权限。也就是说,即使在用户运行 su 命令之后,也不能生成指向目录的硬链接,并且也不能解除目录链接。


$ usermod -K limitpriv=all,!sys_linkdir jdoe

$ grep jdoe /etc/user_attr

jdoe::::type=normal;defaultpriv=basic;limitpriv=all,!sys_linkdir


示例 11–8 从用户的基本集中删除权限

在以下示例中,防止所有源自 jdoe 初始登录的会话使用 proc_session 权限。也就是说,即使在用户运行 su 命令之后,也不能检查此用户会话以外的任何进程。


$ usermod -K defaultpriv=basic,!proc_session jdoe

$ grep jdoe /etc/user_attr

jdoe::::type=normal;defaultpriv=basic,!proc_session;limitpriv=all