同一个文件在本地文件系统和 NFS 上显示不同的时间戳和权限

同一个文件在本地文件系统和 NFS 上显示不同的时间戳和权限

我创建了一个 nfs 共享条目

mzhu@zeus:/share$ cat /etc/exports
/share  *(rw,async,insecure)

从本地文件系统,在 /share 中执行“ls -al”。输出为

mzhu@zeus:/share$ ls -al
total 20
drwxrwxrwt  5 mzhu mzhu 4096 May 23 15:12 .
drwxr-xr-x 25 root root 4096 Nov  6  2013 ..
-rw-rw-r--  1 mzhu mzhu    0 May 23 15:12 1
drwxrwxr-x  2 mzhu mzhu 4096 May 23 15:12 2
drwxrwxr-x  8 mzhu mzhu 4096 May 21 16:53 build
drwxr-xr-x 54 mzhu mzhu 4096 May 21 19:15 team

然后我将 nfs 共享挂载到 ~/test在同一台机器上。挂载输出为(我只删除了 IP 信息)

zeus:/share on /home/mzhu/test type nfs (rw,vers=4,addr=x.x.x.x,clientaddr=x.x.x.x)

从 NFS 执行“ls -al”。输出为:

mzhu@zeus:~/test$ ls -al
total 20
drwxrwxrwt  5 mzhu mzhu 4096 May 23 15:12 .
drwxr-xr-x 32 mzhu mzhu 4096 May 23 15:30 ..
-rw-rw-r--  1 mzhu mzhu    0 May 23 15:12 1
drwxrwxr-x  2 mzhu mzhu 4096 May 23 15:12 2
drwxr-xr-x  2 root root 4096 Oct 20  2013 build
drwxr-xr-x  2 root root 4096 Oct 21  2013 team

比较两个输出,你会发现,在本地文件系统中,“build”的时间戳和权限是

drwxrwxr-x  8 mzhu mzhu 4096 May 21 16:53 build

而在 nfs 共享中(即使是同一台机器),'build' 的时间戳和权限是

drwxr-xr-x  2 root root 4096 Oct 20  2013 build

它们具有不同的权限、所有者、组和时间戳。

有谁能告诉我为什么会有这种差异?或者告诉我如何调试/排除此问题?

PS 当我第一次创建 nfs 共享时,系统日期/时间是 2013 年 10 月,但我已调整日期/时间并重新启动机器。

Ubuntu 发布信息:

mzhu@zeus:/share$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.2 LTS
Release:        12.04
Codename:       precise

RPC信息:

mzhu@zeus:~/test$ rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  54306  status
    100024    1   tcp  48737  status
    100021    1   udp  42616  nlockmgr
    100021    3   udp  42616  nlockmgr
    100021    4   udp  42616  nlockmgr
    100021    1   tcp  55986  nlockmgr
    100021    3   tcp  55986  nlockmgr
    100021    4   tcp  55986  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049
    100227    3   tcp   2049
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049
    100227    3   udp   2049
    100005    1   udp  59947  mountd
    100005    1   tcp  46390  mountd
    100005    2   udp  38311  mountd
    100005    2   tcp  57959  mountd
    100005    3   udp  55855  mountd
    100005    3   tcp  50799  mountd

编辑:

mzhu@zeus:/share$ mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sdb1 on /share/build type ext4 (rw)
/dev/sdc1 on /share/team type ext4 (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw)
cpddae:/cpddae/images on /mnt/cpddae type nfs (rw,addr=x.x.x.x)
gvfs-fuse-daemon on /var/lib/lightdm/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=lightdm)
x.x.x.x:/share on /mnt/share type nfs (rw,addr=x.x.x.x)
nfsd on /proc/fs/nfsd type nfsd (rw)
zeus:/share on /home/mzhu/test type nfs (rw,vers=4,addr=x.x.x.x,clientaddr=x.x.x.x)

答案1

所有者的不同是由于不同的 UID 和 GID。如果两个系统中 mzhu 的 UID 不同,则在共享上它将降为 root。

答案2

您能向我们展示一下 的输出mount吗?如果您在 /share/build 和 /share/team 有更多文件系统,则这是预期的行为 - 本地ls将看到已安装的文件系统,NFS 客户端将只看到安装点目录。要获得相同的视图,您还需要共享较低的文件系统并将其安装在客户端上。

编辑:mount您添加的输出证实了我的假设:这里有三个卷,/share 是 sda1 的一部分,/share/build 是 sdb1,/share/team 是 sdc1。您创建日期显然是 2013 年 10 月挂载点在 sda1 上为 sdb1 和 sdc1 挂载了这些目录,但现在您已挂载了它们,因此无法再从本地系统看到这些目录。但是,在 NFS 客户端上,额外的卷未挂载,您可以看到原始挂载点。您可以通过在其中创建文件和目录来进一步探索这一点/home/mzhu/test/build— 它们不会显示在 /share/build 中,而是会使用 sda1 中的空间。

相关内容