Недавно я решил взять на себя использование NFSv4 только по разным причинам, не в последнюю очередь из-за того, что моя организация считает, что rpcbind является угрозой безопасности. (Не обращайте внимания на то, что вверх по потоку отправляет файлы блоков nfs-server systemd, которые зависят от rpcbind, но это отдельная проблема).
На сервере Ubuntu 16.04 я установил пакеты NFS и настроил / etc / export выглядит следующим образом:
/srv/nfs 192.168.1.100(rw,sync,fsid=0,crossmnt,no_subtree_check)
/srv/nfs/cemdata 192.168.1.100(rw,sync,no_subtree_check)
/srv/nfs/local 192.168.1.100(rw,sync,no_subtree_check)
Нет абсолютно никакой документации, в которой я могу найти инструкции о том, как отключить NFSv2 и NFSv3, но предположил, что это облегчается добавлением следующей строки в / etc / default / nfs-kernel-server:
RPCNFSDARGS="-N 2 -N 3"
В клиентской системе запись / etc / fstab выглядит следующим образом:
# NFSv4 mounts from kraken:
kraken.xxx.utexas.edu:/local /local nfs4 _netdev,auto 0 0
kraken.xxx.utexas.edu:/cryodata /cryodata nfs4 _netdev,auto 0 0
Итак, вот моя проблема: появляется что по умолчанию безопасность на NFS-ресурсах по-прежнему определяется UID. Я экспериментировал, заменяя UID нескольких пользователей на сервере NFS, и соответственно изменилось установленное право собственности. Тем не менее idmapd работает:
root@kraken:/etc/default# systemctl status nfs-idmapd
● nfs-idmapd.service - NFSv4 ID-name mapping service
Loaded: loaded (/lib/systemd/system/nfs-idmapd.service; static; vendor preset
Active: active (running) since Tue 2017-10-31 14:19:01 CDT; 2 days ago
Process: 1424 ExecStart=/usr/sbin/rpc.idmapd $RPCIDMAPDARGS (code=exited, stat
Main PID: 1437 (rpc.idmapd)
Tasks: 1
Memory: 716.0K
CPU: 12ms
CGroup: /system.slice/nfs-idmapd.service
└─1437 /usr/sbin/rpc.idmapd
Oct 31 14:19:01 kraken systemd[1]: Starting NFSv4 ID-name mapping service...
Oct 31 1 4:19:01 kraken systemd[1]: Started NFSv4 ID-name mapping service.
В некоторых старых ссылках я замечаю, что вы указываете, что вы должны установить sec = sys в / etc / exports, чтобы получить прежнее поведение на основе UID, но когда вы смотрите на страницу экспорта man, нет опции sys даже в списке, что указывает на то, что это должно быть устаревшим.
Кто-нибудь может объяснить, что происходит? Является ли система по умолчанию для UID-сопоставления, потому что у меня нет каких-либо статических сопоставлений, настроенных в /etc/idmapd.conf? Является ли Debian / Ubuntu компиляцией сервера ядра nfs с включенным по умолчанию параметром sec = sys? Разумеется, было бы полезно иметь такую обширную документацию для системной службы. Вот почему люди продолжают использовать NFSv3.