Отказано в доступе при монтировании NFS с помощью Webmin (установка Mac OSX + Ubuntu)

Цель

У меня есть следующая установка -

  • Домашний сервер под управлением Ubuntu 13.10
  • Ноутбук под управлением Mac OSX 10.9 (Mavericks)

Я пытаюсь экспортировать каталог домашнего сервера ~/Documents как монтирование NFS, к которому можно получить доступ с моего ноутбука Mac.

Установка Ubuntu

Я использовал Webmin в Ubuntu для создания экспорта NFS. В интересах просто тестирования доступа на данный момент я разрешил любому имени хоста подключаться с доступом для чтения/записи.

Webmin создал следующую конфигурацию под /etc/exports

/home/jeeves/Documents        (insecure,no_subtree_check,no_root_squash,rw,nohide)

Настройка ноутбука Mac OX 10.9

Я смонтировал удаленный каталог в локальный каталог, /private/nfs

sudo mount -t nfs 192.168.1.219:/home/jeeves/Documents /private/nfs 

Все работало нормально, и я вижу "Dcouments", смонтированные под /private в Finder.

Однако я не могу попасть в этот каталог

jeeves:~ $ cd /private/nfs/
-bash: cd: /private/nfs/: Permission denied

У меня были права webmin на чтение/запись (rw), и он не фильтрует какие-либо IP-адреса или имена хостов, так что еще требуется для доступа к этому каталогу?

Заранее спасибо за вашу помощь!

Изменить:

Вот моя настройка Webmin.

введите здесь описание изображения

Webmin не позволяет мне выбрать NFS версии 4, предположительно потому, что у меня установлена ​​только NFS v3, согласно nfsstat

jeeves@HAL:~$ nfsstat
...
Server nfs v3:
null         getattr      setattr      lookup       access       readlink     
25        5% 28        6% 0         0% 126      29% 211      48% 0         0% 
...

person user2490003    schedule 13.04.2014    source источник


Ответы (1)


Вероятно, вы столкнулись с проблемой числового идентификатора пользователя: числовой идентификатор пользователя в вашей системе Ubuntu не соответствует числовому идентификатору пользователя на вашем Mac. При работе с NFS вам, как правило, необходимо убедиться, что ваши числовые идентификаторы пользователей каким-то образом одинаковы во всех ваших системах. В домашних/персональных системах идентификаторы пользователей, как правило, назначаются случайным образом, без какой-либо синхронизации, что вызывает проблемы с NFS.

Поскольку это домашний сервер, и если вы доверяете всем, кто подключается к вашему NFS-серверу, одно из возможных быстрых и простых, грязных, уродливых и неуклюжих решений состоит в том, чтобы открыть разрешения и разрешить всем и всему чтение/запись/удаление ваших файлов (очевидно, не делайте это в корпоративной среде):

В вашей системе Ubuntu войдите в систему как jeeves (не sudo и не используйте любую другую учетную запись), откройте окно терминала и выполните команды в указанном порядке:

cd /home/jeeves/Documents
find . -type d -print0 | xargs -0 chmod 777
find . -type f -print0 | xargs -0 chmod a+rw

Однако это предполагает, что NFS настроена так, чтобы разрешить доступ ненадежным пользователям (в webmin параметр «Относиться к ненадежным пользователям как» установлен по умолчанию, и я не уверен, что это такое).

Обратите внимание, что с помощью приведенных выше команд владельцы файлов и каталогов, созданных Mac, будут отображаться в Ubuntu как числовые пользователи (поскольку в системе Ubuntu, скорее всего, нет пользователей в /etc/passwd, соответствующих числовым идентификаторам Mac, Ubuntu просто отобразит необработанные числовые идентификаторы).

Длинный ответ:

Когда вы создали учетную запись jeeves в своей системе Ubuntu, Ubuntu присвоил ей числовой идентификатор пользователя. Когда вы создали свою учетную запись на своем Mac, Mac присвоил ей числовой идентификатор пользователя, который, вероятно, отличался от номера, назначенного в системе Ubuntu. Обратите внимание, что имена пользователей (например, «jeeves») предназначены для удобства пользователя; ни Ubuntu, ни Mac не используют их внутри, а вместо этого используют идентификаторы пользователей. NFS использует эти числовые идентификаторы для определения прав собственности/разрешений (в поле Ubuntu).

  • Если идентификаторы совпадают, используются разрешения «пользователя».

  • Если идентификаторы не совпадают:

    • («Групповые» разрешения можно использовать, но это маловероятно, и я не буду это обсуждать.)

    • Используются разрешения «Другие». Обратите внимание, что при создании файлов/каталогов, если идентификатор пользователя (Mac) не найден в поле Ubuntu, вы обычно получаете файлы, которые кажутся принадлежащими «числовому» владельцу; число, которое вы видите, это то, что использует Mac, и вы видите число, потому что этот идентификатор не отображается в /etc/passwd Ubuntu.

IIRC, Ubuntu использует umask 022, что означает, что только владелец /home/jeeves/Documents может записывать/создавать файлы и каталоги; все остальные имеют права только на чтение. Если вы каким-то образом не синхронизировали идентификаторы пользователей между своими ящиками, вряд ли у вас будут одинаковые идентификаторы пользователей, и поэтому у вас возникнут проблемы с разрешениями.

Поскольку это домашний сервер, самое простое решение, упомянутое выше, — просто избавиться от безопасности и разрешить всем и каждому доступ к вашим файлам. Конечно, это неприятно по понятным причинам.

Правильное решение состоит в том, чтобы убедиться, что все идентификаторы пользователей синхронизированы между всеми системами, но это может быть проблемой в домашней среде. Кроме того, изменение идентификаторов пользователей после использования учетной записи проблематично; хотя это можно сделать, это нужно делать осторожно, так как вы можете повредить свою систему. Я не буду вдаваться в подробности.

Изменить: исправлено частичное предложение.

person Darryl3532783    schedule 14.04.2014
comment
Спасибо за обстоятельный ответ! Однако должен быть лучший метод, верно? Каждая ли реализация /nfs сталкивается с проблемами, если она кроссплатформенная и с несинхронизированными UID? Даже между двумя системами Ubuntu нет гарантии, что UID одинаковы. Я бы не хотел давать все права доступа к своим файлам, так что есть ли другой вариант, кроме отказа от NFS и поиска чего-то другого? - person user2490003; 16.04.2014
comment
@ user2490003 Ну, корпоративные установки часто используют NIS или LDAP/Kerberos для централизованной базы данных с информацией о пользователях (например, идентификаторы пользователей). Тем не менее, это может быть излишним для домашнего использования. Если у вас есть только две системы, проще всего просто изменить идентификатор пользователя на jeeves в поле Ubuntu. Я отредактирую ответ, чтобы дать общий обзор этого. - person Darryl3532783; 17.04.2014