我刚刚在家庭网络上重新安装了 iMac,并通过 NFS 共享(托管在 Ubuntu 服务器上)安装了用户主目录。
我遇到的问题是,当我使用 sudo 时,我的主目录的权限被拒绝。
我的 UID 是 501,由于我是 Admin 组 (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
并立即查看新创建文件的所有者。