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

Путаница с NFS и all_squash

Для выполнения некоторой задачи временной миграции данных мне нужно настроить сервер NFS. UID на обеих машинах не совпадают, поэтому мне как-то нужно избегать проблем с разрешениями.

К счастью, подумал я, есть all_squash вариант. Он говорит:

all_squash: Сопоставьте все uid и gid анонимному пользователю. Полезно для экспортируемых через NFS общедоступных каталогов FTP, каталогов новостей и т. Д. Противоположный параметр - no_all_squash, который является настройкой по умолчанию.

Для сопоставления с желаемым пользователем и группой я дополнительно указал anonuid=12345 и anongid=15101982:

анонид и анонгид: Эти параметры явно устанавливают uid и gid анонимной учетной записи. Эта опция в первую очередь полезна для клиентов PC / NFS, где вы можете захотеть, чтобы все запросы поступали от одного пользователя. В качестве примера рассмотрим запись экспорта для / home / joe в приведенном ниже разделе примеров, которая отображает все запросы на uid 150 (который предположительно является идентификатором пользователя joe).

Создайте файл на клиент подключен к общему ресурсу NFS, и, как и ожидалось, я вижу следующее поведение (uid / gid были изменены на 12345):

$ touch test && ls -l test
-rw-rw-r-- 1 12345 12345 0 Aug 25 18:10 test

Однако файлы, которые уже существуют на общем ресурсе, по-прежнему имеют свои исходные uid и gid:

$ ls -l existing-file
-rw-rw-r-- 1 98765 98765 0 Aug 25 18:11 existing-file

Я что-то неправильно понимаю? Я предполагал, что all_squash просто раздавить все файлы uids и gids? Если это не так, можно ли этого добиться?

Протокол NFS использует учетные данные на основе RPC при создании нового файла. Устанавливая all_squash + anonuid, вы меняете учетные данные, связанные с этим конкретным клиентом. IOW, он влияет только на проверку разрешений для запросов пользователей и владение вновь созданными файлами и каталогами. Право собственности на существующие файлы не изменяется.