Autofs + NFS + LDAP sudo问题

我有一个非常类似于Dan Bishop的Ubuntu 12.04 Ultimate Server Guide的设置 。

我实际上创build了一系列可靠的脚本来在我的github上自动化这个过程。

所以我在客户端连接的机器上设置了ldap + kerberos。 我有一个运行nfs服务器的nas,它为域中的用户提供/ home目录。 你可以在github上看到我的完整configuration,减去我的环境特定的variables,如密码等。

除了一个问题,一切似乎都在起作用。 如果我以domainadmin用户身份login到计算机,则可以使用sudo来运行更新apt cache等命令,但是我无法修改/ home中的数据。

请参阅下面的内容,请注意,两个用户(ansible和jgrowl)都是domainadmins:

ansible@ip-192-168-0-13:~$ pwd /home/ansible ansible@ip-192-168-0-13:~$ ls -l /home total 12 drwxr-xr-x 8 ansible ansible 4096 Aug 12 14:07 ansible drwxr-xr-x 7 jgrowl jgrowl 4096 Aug 12 14:08 jgrowl ansible@ip-192-168-0-13:~$ mkdir test1 ansible@ip-192-168-0-13:~$ ls -l total 4 drwxrwxr-x 2 ansible ansible 4096 Aug 12 14:06 test1 ansible@ip-192-168-0-13:~$ sudo mkdir test2 mkdir: cannot create directory `test2': Permission denied ansible@ip-192-168-0-13:~$ sudo -u ansible mkdir test3 ansible@ip-192-168-0-13:~$ ls -l total 8 drwxrwxr-x 2 ansible ansible 4096 Aug 12 14:06 test1 drwxr-xr-x 2 ansible ansible 4096 Aug 12 14:07 test3 ansible@ip-192-168-0-13:~$ sudo mkdir ~jgrowl/test4 mkdir: cannot create directory `/home/jgrowl/test4': Permission denied ansible@ip-192-168-0-13:~$ sudo -u jgrowl mkdir ~jgrowl/test5 ansible@ip-192-168-0-13:~$ ls -l /home/jgrowl total 16 drwxr-xr-x 2 jgrowl jgrowl 4096 Aug 12 14:08 test5 

所以sudo只能在指定目录所属的用户时使用。 这有道理吗?

这里有几个重要的文件:

/etc/sudoers.d/domainadmins

/etc/auto.master文件

/etc/auto.home

/ etc / exports在nfs服务器上的内容

 /export *(rw,fsid=0,crossmnt,insecure,async,no_subtree_check,sec=krb5p:krb5i:krb5) /export/home *(rw,insecure,async,no_subtree_check,sec=krb5p:krb5i:krb5) 

我知道这里有很多事情,可能很难帮助我,但任何build议,将不胜感激!

看起来你的NFS共享是在启用root_squash的情况下被导出的,所以root用户在尝试使用NFS挂载的时候实际上获得了nobody的权限。 在你的NAS出口找一个根或根部的压扁选项,并调整它。