Как правильно установить разрешения для папки NFS? Отказано в доступе на конце монтажа.

46

Я пытаюсь подключиться к папке NFS на моем dev-сервере. Владельцем папки на сервере dev является darren и группа darren.

Когда я экспортирую и монтирую его на свой Mac с помощью Дисковой утилиты, он монтируется, но затем при попытке открыть папку говорит, что у меня нет разрешений. Я установил rw, sync и no_subtree_check. Пользователь на Mac с большим количеством групп.

Нужно ли иметь одну и ту же группу и пользователя для доступа к папке?

Даррен
источник
2
Спасибо за ваш вопрос, эта тема решила проблему для меня! Но, пожалуйста, примите ответ с наибольшим количеством голосов.
Маму

Ответы:

61

NFS построен поверх аутентификации RPC. В NFS версии 3 наиболее распространенным механизмом аутентификации является AUTH_UNIX. Идентификатор пользователя и идентификатор группы клиентской системы отправляются при каждом вызове RPC, а разрешения, которые имеют эти идентификаторы для файла, к которому осуществляется доступ, проверяются на сервере. Чтобы это работало, UID и GID должны быть одинаковыми на сервере и клиентах. Однако вы можете принудительно разрешить весь доступ как отдельному пользователю и группе, комбинируя параметры экспорта all_squash, anonuid и anongid. all_squash отобразит все UID и GID анонимному пользователю, а anonuid и anongid установят UID и GID анонимного пользователя. Например, если ваш UID и GID на вашем dev-сервере равны 1001, вы можете экспортировать свой домашний каталог с помощью строки вроде

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

Я менее знаком с NFS версии 4, но я думаю, что вы можете настроить rpc.idmapd на клиентах, чтобы изменить uid и gid, которые они отправляют на сервер.

Sciurus
источник
7
Я наткнулся на этот ответ, пытаясь решить проблему Apple OS X Yosemite nfs. Этот ответ гораздо более актуален и точен, чем принятый ответ. Это не рекомендуется и не представляется возможным сопоставить UID / GID в разных системах. Пользователь root в системе A, вероятно, не является пользователем root в системе B.
Аллан
28

Когда вы монтируете NFS, ваши права, с которыми вы монтируете его, должны совпадать с тем, что вы имеете на сервере. Например, если у вашего пользователя есть только доступ только для чтения, монтирование его с чтением-записью приведет к тому, что вы увидите те же ошибки, которые вы упоминали в своем посте, когда вы попытаетесь действительно загрузить монтирование. К сожалению, это будет отображаться ТОЛЬКО при доступе к папке, а не при ее фактическом подключении.

Вы также хотите убедиться, что пользовательская NFS работает как на сервере, а пользователь на клиенте использует тот же UID и GID. Вы можете проверить эти значения, запустив id darrenкак сервер, так и клиент. Если значения UID и GID не совпадают, вы можете отредактировать /etc/passwdих, но убедитесь, что понимаете, что делаете, прежде чем произвольно изменять значения!

Несколько хороших источников:

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

Андрей М.
источник
Да, я не должен был пытаться изменить UID, который я должен сейчас повторить мой сервер. Как можно подражать UID и GID? Это действительно так сложно?
Даррен
К сожалению, по моему опыту использования этого на рабочем месте, NFS чрезвычайно хрупкая, и да - это может быть очень сложно. Обычно вам понадобится выделенный пользователь NFS с указанным UID / GID на каждом сервере / клиенте, чтобы вы не столкнулись с этой проблемой. Если у вас есть выбор в вашей среде разработки (то есть, он НЕ ДОЛЖЕН использовать NFS), изучение использования чего-то вроде SSHFS избавит вас от головной боли, связанной с разработчиками, - но не будет воспроизводить ту же функциональность, что и производственный сервер, использующий NFS.
Эндрю М.
Как вы думаете, Samba - это другое решение? Я использовал его с Windows без проблем, и я думаю, что это путь, по которому мне придется идти, даже если я использую Mac для разработки своего приложения.
Даррен
Это, безусловно, еще одна возможность, если вы готовы его настроить.
Эндрю М.
2
Я бы не решился сказать, что NFS хрупкая. Это давно установленный протокол файловой службы. На самом деле существует только два требования для NFS: синхронизированный UID / GID среди клиентов и синхронизированное время между клиентами и сервером. Традиционно NIS использовался для синхронизации пользовательской информации, но LDAP является более безопасным выбором для новых развертываний в последнее десятилетие.
Джефф Странк
2

Ваши UID и GID совпадают на обоих серверах? Это то, что он использует для контроля доступа, а не логин и имя группы.

JOTN
источник
-2

Для меня проблема была исправлена ​​путем предоставления _netdevопции монтирования на клиенте.

Т.е. добавить это в /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
Vanuan
источник