На сервере NFS появляются следующие ошибки. Не могли бы вы посоветовать, как это исправить?
Подробности:
Система: CentOS версии 6.4, NFS: nfs-utils-1.2.3-36
# cat /etc/idmapd.conf
[General]
Domain = domain.com
[Mapping]
Nobody-User = nobody
Nobody-Group = nobody
[Translation]
Method = nsswitch
Sep 3 08:25:28 snode1 rpc.idmapd[1382]: nss_getpwnam: name '0' does not map into domain 'domain.com'
Sep 3 08:25:29 snode1 rpc.idmapd[1382]: nss_getpwnam: name '500' does not map into domain 'domain.com'
РЕДАКТИРОВАТЬ: 03 сентября 2013 10:41
Обратите внимание, что я использую NFSv4, и эти ошибки появляются только на сервере NFS (а не на клиентах NFS).
Сервер:
# cat /etc/sysconfig/nfs
MOUNTD_NFS_V2="no"
MOUNTD_NFS_V3="no"
...
RPCNFSDARGS="-N 2 -N 3"
Клиенты:
# cat /etc/fstab
server:/ /data nfs4 defaults,hard,intr,timeo=15,_netdev,noatime,nodiratime,nosuid 0 0
Изменить: среда, 11 июня, 14:52:50 BST 2014
# getent passwd "0" | cut -d: -f1
root
# getent passwd "500" | cut -d: -f1
user1
-
# grep "^passwd" /etc/nsswitch.conf
passwd: files
Я собираюсь немного предположить. Что вы получите, если разрешите UID «0» или «500» на своем сервере NFS? Это случайно не локальные учетные записи?
Причина, по которой я предлагаю это, заключается в том, что NFSv4 по своей конструкции ссылается на имена учетных записей в домене и пытается избежать «локальной аутентификации» из предыдущих версий NFS. Поэтому он использует idmapd, который переводит имена учетных записей, передаваемые в пакетах NFS, для преобразования имени пользователя в UID / GID.
Как вы правильно определили, похоже, что здесь сломано, поэтому мой вопрос будет в том, какой домен аутентификации вы используете, и когда вы его запрашиваете, получаете ли вы ответ для UID 0 и 500?
Я видел подобное, когда, например, сервер смотрел неправильную ветку каталога LDAP (ну, активный каталог) по сравнению с клиентом. Поскольку он не смог разрешить отношения UID / имя пользователя, он сломался и в результате перевел этих пользователей в «никого».
У вас настроено разрешение с помощью nsswitch - что nsswitch говорит для 'passwd'? (В первую очередь на сервере, поскольку там, кажется, существует проблема).
Изменить: ОК, поэтому в соответствии с вашим 'passwd' у вас есть 'files' в качестве локальной базы данных - например, /etc/passwd
. Это означает, что вы сопоставляете UID / GID через локальные учетные записи. Вы не должен использовать UID с NFSv4 - это должны быть имена пользователей.
Однако поиск в Google дает мне: http://www.spinics.net/lists/linux-nfs/msg38598.html
Поэтому следующий вопрос - используете ли вы аутентификацию sys? Я предполагаю, основываясь на вашем fstab, что вы есть, и в этот момент - это кажется ожидаемым поведением - ваши клиенты используют sys и, следовательно, передают UID / GID. idmapd жалуется, потому что они недействительные пользователи (это UID).
Если на вашем клиенте вы «касаетесь» файла как UID 500 или 0, как он будет выглядеть на клиенте и сервере (ls -l для получения имени пользователя, ls -ln для получения uid)? Если это работает правильно, похоже, это артефакт обратной совместимости между NFSv3 Auth sys и NFSv4, и сообщения безвредны.
Вы можете подумать об обновлении до аутентификации Kerberos или аналогичного, но по опыту это нетривиальное упражнение. (Хотя и с некоторыми довольно удобными преимуществами). Связанное мной сообщение (след) означает, что это сообщение об ошибке перестает появляться в более поздних версиях ядра.
Похоже, вы используете NFSv3, который отправляет по сети только числовые идентификаторы пользователей и групп.
Чтобы idmapd работал, вам нужно будет использовать NFSv4, который отправляет идентификаторы user @ domain, понятные idmapper и сопоставленные с локальными учетными записями (так что вам не нужны одинаковые uid / gid как на сервере, так и на клиенте).
Попробуйте смонтировать этот общий ресурс с параметром -t:
mount -t nfs4 server:/path /mountpoint
пожалуйста, проверьте, получены ли следующие решения из форум Gentoo помочь тебе:
1. On the NFS server, /etc/hostname did not contain the FQDN, just the local hostname.
2. This particular client had an unconfigured /etc/idmapd.conf. It had Domain = localdomain instead of Domain = FQDN-minus-hostname.
Для вашей настройки это похоже на второй вариант.
Google для точного сообщения об ошибке «nss_getpwnam: имя '0' не отображается в домен» дает вам множество результатов, которые также могут помочь вам (просто указал на наиболее многообещающие)