У меня шесть машин, один сервер NFS и пять клиентов. Три клиента (под управлением Ubuntu 14.04) работают нормально. Два других, работающих под управлением 12.04, имеют ошибки разрешений.
На подключенной клиентской машине ls -l /home/
возвращает:
drwxr-xr-x 22 testuser testuser 12288 Oct 9 18:03 testuser
Это ожидаемая настройка разрешений. testuser
- это пользователь, которому требуется разрешение на доступ к этой папке.
Но при входе в testuser
, когда я touch /home/testuser/test.txt
Я получаю такую ошибку:
touch: cannot touch `/home/testuser/test.txt': Permission denied
Теперь числовые идентификаторы НЕ соответствуют строкам идентификаторов, но Мне сказали, что это не так.
Настройки клиента:
cat /sys/module/nfs/parameters/nfs4_disable_idmapping
N
Приведенный выше параметр позволяет NFS сопоставлять разрешения пользователей с использованием строк, а не числовых UID и GID.
cat /etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
Настройки сервера:
cat /etc/exports
/raid/nfs/home server1(rw,sync,no_root_squash,no_subtree_check)
/raid/nfs/home server2(rw,sync,no_root_squash,no_subtree_check)
Есть ли ошибка или дополнительные действия, которые мне нужно предпринять, чтобы машины 12.04 работали правильно? Или я должен просто укусить пулю и обновиться, или просто изменить все UID, чтобы они соответствовали серверу?
проблема в том, что idmapd задействован только тогда, когда вы выполняете GETATTR / SETATTR (stat, chown, setacl) или используется kerberos (для отображения принципала на идентификатор). Но когда клиент nfs отправляет запрос CREATE с auth = sys, тогда uid и gid берутся из сообщения RPC. Таким образом, вам нужно, чтобы uid и gid совпадали на сервере и клиенте, чтобы решить проблему с разрешениями.