Назад | Перейти на главную страницу

NFSv4 idmapd игнорирует никого-пользователя

У меня есть папка, владельцем которой ftp:users. Я хотел экспортировать эту папку и сопоставить все запросы с ftp пользователь с идентификатором 107. В /etc/exportsИмею следующее:

/media/other    10.1.1.10(rw,sync,all_squash,no_subtree_check,anonuid=107)

Это работает, как ожидалось. На стороне клиента я хочу сопоставить эти анонимные запросы другому пользователю, поэтому в /etc/idmapd.conf У меня есть это:

Nobody-User = nfsanon
Nobody-Group = nfsanon

Но при монтировании через NFSv4 все принадлежит nobody:users. Он правильно сопоставил группу (которая также существует на клиенте), но ftp пользователь, которого нет на клиенте, был сопоставлен с nobody вместо Nobody-User в idmapd.conf.

Чтобы понять, почему это происходит, я прибавил многословия и нырнул в клиентские журналы. Одна попытка монтирования дает следующее:

nfsidmap[8610]: key: 0x28bf0a94 type: uid value: root@dom.ain timeout 600
nfsidmap[8610]: nfs4_name_to_uid: calling nsswitch->name_to_uid
nfsidmap[8610]: nss_getpwnam: name 'root@dom.ain' domain 'dom.ain': resulting localname 'root'
nfsidmap[8610]: nfs4_name_to_uid: nsswitch->name_to_uid returned 0
nfsidmap[8610]: nfs4_name_to_uid: final return value is 0
nfsidmap[8612]: key: 0xfe99b5c type: gid value: root@dom.ain timeout 600
nfsidmap[8612]: nfs4_name_to_gid: calling nsswitch->name_to_gid
nfsidmap[8612]: nfs4_name_to_gid: nsswitch->name_to_gid returned 0
nfsidmap[8612]: nfs4_name_to_gid: final return value is 0
nfsidmap[8615]: key: 0x18a11cb type: uid value: ftp@dom.ain timeout 600
nfsidmap[8615]: nfs4_name_to_uid: calling nsswitch->name_to_uid
nfsidmap[8615]: nss_getpwnam: name 'ftp@dom.ain' domain 'dom.ain': resulting localname 'ftp'
nfsidmap[8615]: nss_getpwnam: name 'ftp' not found in domain 'dom.ain'
nfsidmap[8615]: nfs4_name_to_uid: nsswitch->name_to_uid returned -2
nfsidmap[8615]: nfs4_name_to_uid: final return value is -2
nfsidmap[8615]: nfs4_name_to_uid: calling nsswitch->name_to_uid
nfsidmap[8615]: nss_getpwnam: name 'nobody@dom.ain' domain 'dom.ain': resulting localname 'nobody'
nfsidmap[8615]: nfs4_name_to_uid: nsswitch->name_to_uid returned 0
nfsidmap[8615]: nfs4_name_to_uid: final return value is 0
nfsidmap[8617]: key: 0x3ab07a1f type: gid value: users@dom.ain timeout 600
nfsidmap[8617]: nfs4_name_to_gid: calling nsswitch->name_to_gid
nfsidmap[8617]: nfs4_name_to_gid: nsswitch->name_to_gid returned 0
nfsidmap[8617]: nfs4_name_to_gid: final return value is 0

Похоже, что клиент idmapd пытается сопоставить ftp пользователь, который не работает.

nss_getpwnam: name 'ftp@dom.ain' domain 'dom.ain': resulting localname 'ftp'
nss_getpwnam: name 'ftp' not found in domain 'dom.ain'
nfs4_name_to_uid: nsswitch->name_to_uid returned -2

Затем он фактически пытается отобразить nobody вместо использования Nobody-User. Поскольку nobody Пользователь существует на клиенте, и это успешно.

nss_getpwnam: name 'nobody@dom.ain' domain 'dom.ain': resulting localname 'nobody'
nfs4_name_to_uid: nsswitch->name_to_uid returned 0

Я просто не могу понять, почему он пытается отобразить nobody. Может ли это быть ошибка, вызванная использованием anonuid в экспорте?

Для полноты картины вот журналы сервера

rpc.idmapd[4726]: nfsdcb: authbuf=10.1.1.0/24,10.1.1.0/25,10.1.1.10 authtype=user
rpc.idmapd[4726]: nfs4_uid_to_name: calling nsswitch->uid_to_name
rpc.idmapd[4726]: nfs4_uid_to_name: nsswitch->uid_to_name returned 0
rpc.idmapd[4726]: nfs4_uid_to_name: final return value is 0
rpc.idmapd[4726]: Server : (user) id "0" -> name "root@dom.ain"
rpc.idmapd[4726]: nfsdcb: authbuf=10.1.1.0/24,10.1.1.0/25,10.1.1.10 authtype=group
rpc.idmapd[4726]: nfs4_gid_to_name: calling nsswitch->gid_to_name
rpc.idmapd[4726]: nfs4_gid_to_name: nsswitch->gid_to_name returned 0
rpc.idmapd[4726]: nfs4_gid_to_name: final return value is 0
rpc.idmapd[4726]: Server : (group) id "0" -> name "root@dom.ain"
rpc.idmapd[4726]: nfsdcb: authbuf=10.1.1.0/24,10.1.1.0/25,10.1.1.10 authtype=user
rpc.idmapd[4726]: nfs4_uid_to_name: calling nsswitch->uid_to_name
rpc.idmapd[4726]: nfs4_uid_to_name: nsswitch->uid_to_name returned 0
rpc.idmapd[4726]: nfs4_uid_to_name: final return value is 0
rpc.idmapd[4726]: Server : (user) id "107" -> name "ftp@dom.ain"
rpc.idmapd[4726]: nfsdcb: authbuf=10.1.1.0/24,10.1.1.0/25,10.1.1.10 authtype=group
rpc.idmapd[4726]: nfs4_gid_to_name: calling nsswitch->gid_to_name
rpc.idmapd[4726]: nfs4_gid_to_name: nsswitch->gid_to_name returned 0
rpc.idmapd[4726]: nfs4_gid_to_name: final return value is 0
rpc.idmapd[4726]: Server : (group) id "100" -> name "users@dom.ain"

PS: Прежде чем кто-нибудь предложит это, я не хочу снова переключаться на NFSv3, чтобы «решить» мою проблему.