NFS 问题
我正在尝试在几乎全新安装的 Ubuntu 18.04 Server 上安装网络驱动器,但遇到了一些令人费解的行为。
我以 root 身份挂载驱动器,并列出权限:
# mount xxx.xxx.xxx.xxx:/my/share /mnt/nfs
# ls /mnt
drwxrwxr-x 1 user user nfs
# cd /mnt/nfs
到目前为止看起来不错!(您cd
马上就会明白我为什么这样做……)
我以普通用户身份登录,user
并尝试开展我的业务:
$ ls /mnt
drwxrwxr-x 1 user user nfs
$ cd /mnt/nfs
cd: test: Permission denied
$ ls /mnt
d--------- 1 user user nfs
呃……权限怎么了?幸好这个过程是可逆的……好吧,只有root
尝试了才行……
# ls /mnt
d--------- 1 user user nfs
# cd /mnt/nfs
# pwd
/mnt/nfs
# ls /mnt
drwxrwxr-x 1 user user nfs
知道发生了什么事吗?我该如何解决?我完全不知所措。
值得注意的是,这是我第二台发生这种情况的装有 Ubuntu 18.04 Server 的机器,两台机器都几乎是开箱即用的。
笔记:命令输出是模拟的,但几乎直接从服务器获取。(即:硬链接报告的数量ls
可能不正确,我省略了.
和..
目录,但权限,所有者等是正确的)
答案1
这是 的一个功能NFS
,称为“Root squashing”。请参阅http://www.troubleshooters.com/linux/nfs.htm这部分 ” User ID Mapping Options
”。
添加了“Root 压缩”功能,以防止root
其他系统访问root
NFS 服务器上的文件。NFS 协议没有任何身份验证,会盲目接受 NFS 数据包,表示“我是 [ UID=root
, GID=root
] 将此数据写入/etc/passwd
”,而无需“Root 压缩”。有了“Root 压缩”,数据包就会变成“我是 [ UID=nobody
, GID=nobody
] 将此数据写入/etc/passwd
”,很多更安全的命令(将会失败)。