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

Клиент NFS сообщает об отказе в разрешении, сервер сообщает о предоставленных разрешениях

У меня два сервера RedHat 4. Клиент 4.6, сервер 4.5. Я пытаюсь подключить общий ресурс с сервера к клиенту через NFS.

Конфигурация / etc / exports выглядит следующим образом:

/opt/data/config bkup(rw,no_root_squash,async)
/opt/data/db bkup(rw,no_root_squash,async)

exportfs возвращает эти (среди других) доли, nfs работает согласно ps вывод.

Я пытался использовать autofs на клиенте, но решил просто подключить общий ресурс вручную, учитывая проблемы, которые у меня возникают.

Итак, я выдаю запрос на монтирование:
mount dist:/opt/data/config /mnt/config

mount: dist: / opt / data / config не удалось, причина указана сервером: в доступе отказано

Хорошо, давайте посмотрим, что сервер может сказать сам за себя.

6 мая 23:17:55 dist mountd [3782]: аутентифицированный запрос монтирования от bkup: 662 для / opt / data / config (/ opt / data / config)

В нем говорится, что он позволил монтированию состояться.

Как я могу определить, почему клиент и сервер не согласны с результатом?

Это хороший пример разницы между аутентификацией и авторизацией. В этом сценарии аутентификация прошла успешно, но, скорее всего, проблема связана с авторизацией в каталоге хоста. Для проверки вы можете попробовать рекурсивно установить права доступа к каталогу хоста на 777 (не забудьте изменить это позже).

Что нужно проверить:

  • Совпадают ли имя пользователя и uuid пользователя на клиенте и хосте?
  • Правильно ли установлены разрешения на хосте?
  • Имеет ли NFS на главном сервере правильные разрешения на доступ к файлам, к которым он должен предоставить общий доступ? т.е. Работает ли NFS от имени пользователя root, и если нет, имеют ли файлы, к которым он пытается получить доступ, правильные разрешения, позволяющие получить к ним доступ самому демону NFS?

Обычно я отлаживаю подобные проблемы с помощью tcpdump. Захват необработанного пакета всегда что-то говорит.

Запустите захват пакетов как с клиента, так и с сервера NFS.

tcpdump -s0 -i ethX -w /tmp/tcpdump_from_client.pcap host <NFS-server-IP>
tcpdump -s0 -i ethX -w /tmp/tcpdump_from_server.pcap host <NFS-client-IP>

Замените ethX на eth1 или 2 или что у вас есть.

Затем найдите передачи RPC в захвате пакета. Я предпочитаю wirehark и вижу раздел TCP. Я часто видел, что это дает какую-то подсказку.

Следующим шагом будет включение журналов отладки NFS.

Я настоятельно прошу вас сохранить данные tcpdump при себе или проверить их у кого-то, кому вы доверяете.

Проверьте, есть ли файлы в /proc/fs/nfsd.

Если нет, введите эту команду:

mount -t nfsd none /proc/fs/nfsd

Если есть, я тоже не знаю.