При использовании NFSv3 UID & GID в RPC заголовки от клиента неожиданно изменяются

Я использую NFS в течение нескольких лет и принял ее ограничения с точки зрения безопасности и отсутствия аутентификации и т. Д. Это было прекрасно, поскольку я использую его только в небольшой и безопасной сетевой среде. Недавно я обновил свой сервер до 18.04 LTS и решил поближе взглянуть на NFS с целью перехода на использование NFSv4. Это оказалось головной болью по нескольким причинам, я использую клиенты Ubuntu, Mac и Windows, поэтому я ожидал смесь NFSv3 и NFSv4, но это оказалось намного сложнее, чем я ожидал. Теперь я потратил несколько дней, тщательно пытаясь понять тонкости работы обмена клиентом и сервером по проводам. Я столкнулся с проблемой, что я просто не могу гуглить ответ тоже. Может быть, кто-то еще может объяснить.

У меня есть сервер Ubuntu (18.04) под управлением NFSv3 и 4. Я настроил экспорт и делюсь им с: (rw,insecure,subtree_check,no_root_squash). Я специально не использую корневую сквош, так как я хотел наблюдать точное поведение при попытке монтировать с клиента. Когда я вошел в систему как root на клиенте, я запускаю команду mount:

mount -t nfs -o vers = 3 mx: / mnt / shared_sun_NAS / Videos / mnt / Videos

конечно же он монтируется.... Когда я смотрю на обмен по проводам, я вижу ожидаемые обмены:

  1. Portmap - GETPORT Вызов NFS TCP
  2. Portmap - GETPORT Ответить Порт 2049
  3. NFS - NULL Call
  4. NFS - NULL Ответить успешно
  5. Portmap - GETPORT Вызов MOUNT UDP
  6. Portmap - GETPORT Reply Port 65500 (я выбираю этот порт на сервере)
  7. MOUNT - NULL Call
  8. MOUNT - NULL Ответить успешно
  9. MOUNT - NULL Call
  10. MOUNT - NULL Ответить успешно
  11. MOUNT - MNT Call /mnt/shared_sun_NAS/ Видео
  12. MOUNT - MNT Успех ответа
  13. Карта порта - GETPORT NFS TCP
  14. Portmap - GETPORT Ответить Порт 2049
  15. NFS - NULL Call
  16. NFS - NULL Ответить успешно
  17. NFS - FSINFO Вызов FH: xxxx
  18. NFS - FSINFO Ответ успешен
  19. NFS - PATHCONF Вызов FH: xxxx
  20. NFS - PATHCONF Успешный ответ
  21. NFS - GETATTR Call FH: xxxx
  22. NFS - GETATTR Успешный ответ: режим Dir 3770 uid:0 gid:5000 (точно так же, как на сервере)
  23. NFS - NFSACL Call
  24. NFS - NFSACL Успешный ответ
  25. NFS - FSINFO Вызов FH: xxxx
  26. NFS - FSINFO Ответ успешен
  27. NFS - GETATTR Call FH: xxxx
  28. NFS - GETATTR Успешный ответ: режим Dir 3770 uid: 0 gid: 5000
  29. NFS - ACCESS Call DH: xxxx [Проверка: RD LU MD XT DL]
  30. NFS - ACCESS Успешный ответ [Разрешено: RD LU MD XT DL]

Здесь я остановлюсь и задам свой вопрос: в каждом кадре из 1-28 заголовок RPC показывает:Machine Name: Laplace UID: 0 GID: 0 Aux GIDs [0, 5000] just exactly as my root user on the client.

Затем, как только клиент переходит к командам ACCESS, заголовок RPC изменяется следующим образом:

Machine Name: Laplace UID: 1000 GID: 1000 Aux GIDs [4...... 5000] just exactly as my user account on the client.

Почему это происходит?

Команда монтирования выполняется от имени пользователя root, я монтирую на точку монтирования, принадлежащую пользователю root. Сервер обслуживает каталог, принадлежащий root. У меня не настроено отображение нигде на клиенте или сервере. Почему эта команда ACCESS запускается как моя учетная запись пользователя, а не как root.

Если я изменю команду монтирования на NFSv4, эти запросы доступа выдаются как UID: 0 и GID:0 (как и ожидалось. Root!)

Что заставляет клиента переключаться таким образом? Кажется, я не могу это контролировать.

Любая информация поможет высоко ценится.

0 ответов

Другие вопросы по тегам