当我们的系统管理员休假时,我试图在新服务器上安装一些新文件:
这是我的df
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb3 273G 11G 248G 5% /
tmpfs 48G 260K 48G 1% /dev/shm
/dev/sdb1 485M 187M 273M 41% /boot
xxx.xx.xxx.xxx:/commun
63T 2.2T 61T 4% /commun
作为根,我可以创建一个新目录并chown
在 /home/lindenb 下运行
# cd /home/lindenb/
# mkdir X
# chown lindenb X
但我无法在 /commun 下运行相同的命令
# cd /commun/data/users/lindenb/
# mkdir X
# chown lindenb X
chown: changing ownership of `X': Invalid argument
为什么?我该如何修复?
更新:
山:
/dev/sdb3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sdb1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
xxx.xx.xxx.xxx:/commun on /commun type nfs (rw,noatime,noac,hard,intr,vers=4,addr=xxx.xx.xxx.xxx,clientaddr=xxx.xx.xxx.xxx)
版本:
$ cat /etc/redhat-release
CentOS release 6.3 (Final)
答案1
文件系统/commun
是从远程服务器挂载的,错误消息表明这可能是 nfsv4 挂载(早期 nfs 版本的情况也是“权限被拒绝”)。默认情况下,远程文件服务器会将远程root
用户映射到一个nobody
帐户,因此它无法更改文件所有权。
最简单的解决方案可能是使用本地lindenb
帐户在目录下创建目录/commun
。因此以 root 身份
sudo -u linedb mkdir -p /commun/data/users/lindenb
如果这不起作用,那么可能存在一些 ID 映射,因此您可能必须在服务器上创建目录xxx.xx.xxx.xxx
并在那里更改所有权/权限。
答案2
mount -t nfs -o vers=3 SERVER:PATH MOUNT_PATH
这对我有用。
答案3
这确实是 NFS4 问题。您可能必须考虑使用 rpc.idmapd NFS4 映射守护程序来解决此类问题,尤其是当大量用户需要客户端和 NFS 服务器之间的正确映射时。请注意,NFS3(例如在 CentOS < 6 中)不使用映射守护程序。