Почему несогласованность файлов между двумя системами, устанавливающими один и тот же общий ресурс NFS?

У меня есть один сервер IBM AIX (serverA), который подключен к хранилищу san. Я создал группу томов, а также файловую систему (jfs2) и смонтирован в каталог / прибыль.

После этого я создал общий ресурс NFS для этого каталога и запустил демон NFS.

На другом сервере, который также является IBM AIX (serverB), я создал точку подключения / прибыль и смонтировал общий ресурс nfs от serverA до сервераB, используя следующую команду: mount 192.168.10.1:/profit / profit

На сервереB я могу получить доступ к каталогу и перечислить файлы в нем. Но странно, что на serverA каталог и файлы находятся под правами пользователя oracle. Но в serverB я вижу их как другого пользователя.

Когда я касаюсь файла в этом каталоге на сервере serverB, на serverA, я вижу его как другой идентификатор пользователя.

Любой ключ, как я могу это исправить?

Ниже приведен список файлов с сервераBB

$ ls -l total 0 -rwxrwxrwx 1 root system 0 Mar 16 15:00 haha -rwxrwxrwx 1 radiusd radiusd 0 Mar 16 15:19 haha2 -rwxrwxrwx 1 radiusd radiusd 0 Mar 16 15:31 haha3 -rw-r--r-- 1 oracle oinstall 0 Mar 17 2011 hahah3 drwxrwxrwx 2 radiusd radiusd 256 Mar 16 14:40 lost+found 

На сервереA это выглядит следующим образом:

 # ls -l /profit total 0 -rwxrwxrwx 1 root system 0 Mar 16 15:00 haha -rwxrwxrwx 1 oracle dba 0 Mar 16 15:19 haha2 -rwxrwxrwx 1 oracle dba 0 Mar 16 15:31 haha3 -rw-r--r-- 1 10 sshd 0 Mar 17 16:01 hahah3 drwxrwxrwx 2 oracle dba 256 Mar 16 14:40 lost+found 

Ниже находится файл / etc / exports из serverA

 # more /etc/exports /profit -vers=3,sec=sys:krb5p:krb5i:krb5:dh,rw 

Благодарю.

Помните, что каждая из клиентских систем NFS будет определять имя пользователя, просматривая числовой UID локально, используя локальную систему / etc / passwd или в вашей централизованной пользовательской базе данных. Сервер NFS сохраняет только UID в числовом формате и не знает об именах пользователей. Это также относится к именам групп и GID.

В вашем случае serverA и serverB должны иметь разные имена пользователей, перечисленные в / etc / passwd

Чтобы проверить это, используйте ls -n для отображения идентификаторов пользователей и групп в численном выражении, а не для преобразования имени пользователя или группы в длинный (-l) вывод. Если опция ls -n недоступна в AIX, обратитесь к man-странице этой функции.

Чтобы увидеть сопоставление username-to-uid, выполните одно из следующих действий на сервере serverA и serverB.

 grep $THEUSERID /etc/passwd 

Или, это хорошая привычка использовать getent , поскольку она работает с / etc / password и службами каталогов (LDAP и т. Д.):

 getent passwd $THEUSERID 

UID должны быть одинаковыми в обеих системах, но имена пользователей будут разными.

Вы столкнулись с тем, что я называю правилом N1 для экспорта NFS:

Никогда не экспортируйте mount как доступный для записи клиенту, если только этот клиент не использует одно и то же отображение UID, как это делает сервер.

Для слов владелец файлового сервера должен потребовать, чтобы все потенциальные клиенты NFS использовали одну и ту же централизованную пользовательскую базу данных (NIS, NIS +, LDAP, Kerberos и т. Д.).

Я также столкнулся с вашей проблемой и сумел решить ее с помощью этого :

Действительно, NEED_IDMAPD не был установлен в файле /etc/default/nfs-common на стороне клиента.

Установка NEED_IDMAPD=yes на клиенте также разрешила проблему. Теперь клиент правильно показывает имена пользователей и группы.