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

chown или chgrp NFSv4 с ошибкой idmapd: недопустимый аргумент

Я нашел только 1 или 2 других сообщения об этом без какого-либо решения, поэтому я создаю новый, более конкретный вопрос для своего случая.

Настройка системы: сервер NFS с NFSv4. Клиент NFS под управлением RedHat 6, idmapd работает со следующим файлом в /etc/idmapd.conf:

    [General]
    Verbosity = 7
    Domain = localdomain

    [Mapping]
    Nobody-User = nobody
    Nobody-Group = nobody

    Method = nsswitch

Проблема заключается в chown / chgrp для определенных пользователей с ошибкой «Недопустимый аргумент», как показано ниже, даже если пользователь существует на локальном хосте:

# chown oracle m
chown: changing ownership of `m': Invalid argument
# grep oracle /etc/passwd
oracle:x:54321:54321::/home/oracle:/bin/bash

# chown mysql m
# grep mysql /etc/passwd
mysql:x:496:496:MySQL server:/var/lib/mysql:/bin/bash

Почему idmapd не распознает определенных пользователей, но работает с другими (root, никто и даже нестандартный mysql в порядке)?

Какие-то конкретные настройки, которые мне не хватает выше? Я думал, что когда для домена установлен localdomain, тогда все должно работать только с использованием локальных файлов passwd / group и т.д. (И да, nsswitch.conf перечисляет passwd и group как файлы)?

Заранее спасибо!

Я просто хотел замкнуть петлю на этом. Я нашел ответ. Проблема здесь в том, что когда rpcidmapd включен, NFSv4 использует его для сопоставления, но это означает, что NFS отправляет на сервер имя пользователя @ имя домена и UID / GID.

Когда сервер не понимает это имя пользователя @ имя домена (возможно, из-за того, что сервер не настроен с тем же каталогом или по каким-либо другим причинам), он не разрешает chown / chmod.

Очевидно, это поведение по умолчанию НЕПРАВИЛЬНО. В более поздних версиях ядра Linux это было исправлено специалистом по обслуживанию NFS в ядре, поэтому по умолчанию для NFSv4 НЕ используется idmapping. См. Коммит здесь: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=074b1d12fe2500d7d453902f9266e6674b30d84c

Чтобы исправить это самостоятельно, вы можете сделать это (только для RHEL):

echo "options nfs nfs4_disable_idmapping=1" >> /etc/modprobe.d/nfs.conf

Надеюсь это поможет.