我剛剛在家庭網路上重新安裝了 iMac,並透過 NFS 共用(託管在 Ubuntu 伺服器上)安裝了用戶主目錄。
我遇到的問題是,當我使用 sudo 時,我自己的主目錄的權限被拒絕。
我的 UID 是 501,由於我是管理員群組 (GID 80) 的成員,所以可以使用 sudo。
在 Ubuntu 伺服器上,我的主目錄配置如下:
Ubuntu# ls -ln | grep bryan
drwxrwx--- 35 501 80 4096 2012-01-27 14:09 bryan
在 Mac 上正確翻譯:
iMac$ ls -l | grep bryan
drwxrwx--- 35 bryan admin 4.0K 27 Jan 14:09 bryan/
由於 root 也是 admin 的成員(GID 80),我以為 sudo 允許存取我的主目錄,但正如您在下面看到的,情況並非如此。
iMac$ whoami
bryan
iMac$ sudo bash
bash: /Volumes/home/bryan/.bashrc: Permission denied
iMac# whoami
root
iMac# cd /Volumes/home/bryan/
bash: cd: /Volumes/home/bryan/: Permission denied
為了確認一下,以下是dscacheutil -q group
我的 iMac 上輸出的相關部分:
name: admin
password: *
gid: 80
users: root bryan
使用 sudo 時如何才能存取 iMac 上的主目錄?
答案1
當您使用 時sudo
,您將切換到使用者root
(uid 0) – 您失去您的brian
UID 和admin
群組。 (sudo id
將向您顯示確切的值。)
由於先前的 NFS 版本(v3 及更早版本)僅在客戶端執行所有安全檢查,因此內建了一個安全措施來防止不誠實的客戶端 – 當客戶端說您的 UID 為 0 時,您就這樣做不是取得 root 權限 –相反,NFS 伺服器將您視為用戶nobody
。
若要停用此保護措施,請編輯伺服器/etc/exports
以具有該no_root_squash
選項,然後exportfs -ra
在所有用戶端上重新執行並重新安裝共用。
測試 NFS 權限時,在共用上擁有一個全域可寫入的目錄非常有用。例如,在 Ubuntu 上,sudo mkdir /home/temp; sudo chmod a+rwx /home/temp
.然後在 OS X 上,您可以執行sudo touch /Volumes/home/temp/testfile
並立即查看新建立的檔案的擁有者。