У меня есть nfs4, настроенный между сервером RHEL 5.3 (charlie) и клиентом RHEL 5.4 (simcom1). Машины настроены для аутентификации пользователей через Kerberos с помощью компьютера с активным каталогом Windows Server 2008, называемого «альфа». Alpha также служит dns и dhcp-машиной для локальной сети.
Я заметил, что когда пользователь входит в систему на машине RHEL в первый раз, ему выдается уникальный uid для этой машины; Первый пользователь, вошедший в систему, получает 10001. Итак, я вижу, что пользователи между simcom1 и charlie имеют разные UID. Когда пользователь выполняет команду ls -la из монтирования nfs4, я мог подумать, что имена пользователей в столбце владельца будут указывать на «никто» или, по крайней мере, на неправильное имя пользователя, поскольку идентификаторы UID на разных машинах для каждого пользователя разные. , и не все пользователи вошли в систему на каждой машине.
Однако simcom1 может правильно разрешать имена пользователей в 'ls -la', выполняемом для файлов, находящихся на charlie, через nfs4. Больше всего беспокоит то, что пользователи не могут записывать файлы через монтирование nfs.
На сервере, Чарли, корневой каталог экспортирован как rw. Клиент, simcom1, монтирует экспорт как rw. Мои конфигурации показаны ниже.
У меня вопрос, как мне настроить машины RHEL, чтобы пользователи могли записывать файлы через nfs4, который уже смонтирован как чтение / запись?
[root@charlie ~]# more /etc/exports
/ 10.100.0.0/16(rw,no_root_squash,fsid=0)
[root@charlie ~]#cat /etc/sysconfig/nfs
#
# Define which protocol versions mountd
# will advertise. The values are "no" or "yes"
# with yes being the default
#MOUNTD_NFS_V1="no"
#MOUNTD_NFS_V2="no"
#MOUNTD_NFS_V3="no"
#
#
# Path to remote quota server. See rquotad(8)
#RQUOTAD="/usr/sbin/rpc.rquotad"
# Port rquotad should listen on.
#RQUOTAD_PORT=875
# Optinal options passed to rquotad
#RPCRQUOTADOPTS=""
#
#
# TCP port rpc.lockd should listen on.
#LOCKD_TCPPORT=32803
# UDP port rpc.lockd should listen on.
#LOCKD_UDPPORT=32769
#
#
# Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
# Turn off v2 and v3 protocol support
#RPCNFSDARGS="-N 2 -N 3"
# Turn off v4 protocol support
#RPCNFSDARGS="-N 4"
# Number of nfs server processes to be started.
# The default is 8.
RPCNFSDCOUNT=8
# Stop the nfsd module from being pre-loaded
#NFSD_MODULE="noload"
#
#
# Optional arguments passed to rpc.mountd. See rpc.mountd(8)
#STATDARG=""
#RPCMOUNTDOPTS=""
# Port rpc.mountd should listen on.
#MOUNTD_PORT=892
#
#
# Optional arguments passed to rpc.statd. See rpc.statd(8)
#RPCIDMAPDARGS=""
#
# Set to turn on Secure NFS mounts.
SECURE_NFS="no"
# Optional arguments passed to rpc.gssd. See rpc.gssd(8)
#RPCGSSDARGS="-vvv"
# Optional arguments passed to rpc.svcgssd. See rpc.svcgssd(8)
#RPCSVCGSSDARGS="-vvv"
# Don't load security modules in to the kernel
#SECURE_NFS_MODS="noload"
#
# Don't load sunrpc module.
#RPCMTAB="noload"
#
[root@simcom1 ~]# cat /etc/fstab
--start snip--
charlie:/home /usr/local/dev/charlie nfs4 rw,nosuid, 0 0
--end snip--
[brendanmac@simcom1 /usr/local/dev/charlie/brendanmac]# touch file
touch: cannot touch 'file': Permission denied
[brendanmac@simcom1 /usr/local/dev/charlie/brendanmac]# su
Password:
[root@simcom1 /usr/local/dev/charlie/brendanmac]# touch file
[root@simcom1 /usr/local/dev/charlie/brendanmac]# ls -la file
-rw------- 1 root root 0 May 26 10:43 file
У меня точно такая же проблема, и я выяснил, в чем проблема: проблема в том, что nfsv4 использует idmapd, а idmapd выполняет сопоставление между именами userid =>, но не наоборот. Другими словами, это не может работать. Это просто причудливо и запутанно видеть правильные права доступа пользователя и группы, однако, когда вы используете файловую систему, она по-прежнему будет использовать старый способ сопоставления через uid. Таким образом, uid на стороне сервера должен быть таким же, как и на стороне клиента для этого пользователя. В противном случае при создании файлов ... будет отказано в разрешении. Если конечно uid не совпадает.
ссылка: http://thread.gmane.org/gmane.linux.nfsv4/7103/focus=7105