限制sudo用户的文件

(开发人员在这里 – 在系统pipe理员世界相对新手)。

有谁知道文件可以从sudo用户限制(不读取,写入或执行访问)的方式?

关于这种情况的一点背景:我们目前正在寻找一种方法来为某些用户提供sudo访问权限,同时还限制对一组文件的访问。 除非这样做,否则sudo访问将不会成为一个选项,我们将根据用户请求,根据需要将文件/命令(或包装在脚本中)白名单。

正如您所预料的那样,白名单选项需要更多维护和延迟,因为用户等待系统pipe理员小组响应请求。

我通常实施这种限制的方式要求满足几个条件,否则限制可以很容易地被规避:

  • 用户不属于wheel组,只有一个被授权使用su (通过PAM强制执行)。
  • 给用户一个正确的 rbash ,指向一个专用的~/bin的只读PATH ,这个~/bin/目录包含到简单实用程序的链接:

     $ ll ~/bin total 0 lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear* lrwxrwxrwx. 1 root dawud 7 Sep 17 08:58 df -> /bin/df* lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep* lrwxrwxrwx. 1 root dawud 8 Sep 17 08:58 env -> /bin/env* lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep* lrwxrwxrwx. 1 root dawud 9 Sep 17 08:58 grep -> /bin/grep* lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview* lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 rvim -> /usr/bin/rvim* lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 sudo -> /usr/bin/sudo* lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit* lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail* lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc* 
  • 给用户一个受限的,只读的环境(想想像LESSSECURETMOUTHISTFILEvariables)。

  • 可选地,用户被映射到SELinux用户staff_u并且被赋予通过sudo按照需要作为其他用户执行命令的权限。
  • 用户的/home/tmp和可能的/var/tmp通过/etc/security/namespace.conf被多重实例化:

     /tmp /tmp/.inst/tmp.inst-$USER- tmpdir:create root /var/tmp /tmp/.inst/var-tmp.inst-$USER- tmpdir:create root $HOME $HOME/$USER.inst/ tmpdir:create root 

    另外,/ /etc/security/namespace.init使所有骨架文件只读为用户所有并由root拥有。

这样,您可以select是否$USER可以代表自己执行任何命令(通过私人~/bin目录中的链接,通过/etc/skel ,如上所述),代表其他用户(通过sudo )或根本没有。

关于“访问一组文件”,您不指定是只读还是读写访问。

无论如何,这可以通过sudo规则来设置。 我将执行规则,通过rviewrview对文件进行只读rvim ,后者通常使用sudoers文件中的editor指令进行configuration:

 Defaults editor=/usr/bin/rvim 

所以用户可以sudoedit允许的文件。

使用您select的configurationpipe理工具,可以相当容易地实现此解决scheme。

新的命令可以非常快速地添加到私有的~/bin目录(因为它们只是从命名空间逻辑pipe理的符号链接)。 新的sudo规则也可以用同样的方式进行pipe理。