Ldap

Autofs + NFS + LDAP sudo 問題

  • August 12, 2013

我的設置與Dan Bishop 的 Ubuntu 12.04 Ultimate Server Guide非常相似。

我實際上在我的 github上創建了一系列 ansible 腳本來自動化這個過程。

所以我在客戶端機器連接的機器上設置了 ldap+kerberos。我有一個執行 nfs 伺服器的 nas,它為域中的使用者提供 /home 目錄。你可以在 github 上看到我的完整配置減去我的環境特定變數,如密碼等。

一切似乎都在工作,除了一個問題。如果我以 domainadmin 使用者身份登錄機器,我可以使用 sudo 執行更新 apt 記憶體等命令,但我無法修改 /home 中的數據。

請參閱下面的內容,請注意,ansible 和 jgrowl 這兩個使用者都是域管理員:

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

nfs 伺服器上 /etc/exports 的內容

/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)

我知道這裡發生了很多事情,可能很難幫助我,但任何建議都將不勝感激!

看起來您的 NFS 共享是在啟用 root_squash 的情況下導出的,因此 root 使用者實際上獲得了nobody嘗試對 NFS 掛載進行操作時的權限。在 NAS 導出中查找 root 或 root squash 選項並進行調整。

引用自:https://serverfault.com/questions/530462