Почему принадлежность файла непоследовательна между двумя системами, монтирующими ту же долю NFS?

Использовать getopts.

Это довольно портативно, как это находится в спецификации POSIX. К сожалению, это не поддерживает долгие опции.

См. также это getopts учебная любезность хакеров удара Wiki и этот вопрос от stackoverflow.

Если Вам только нужны короткие опции, типичный шаблон использования для getopts (использование нетихого сообщения об ошибке):

# process arguments "$1", "$2", ... (i.e. "$@")
while getopts "ab:" opt; do
    case $opt in
    a) aflag=true ;; # Handle -a
    b) barg=$OPTARG ;; # Handle -b argument
    \?) ;; # Handle error: unknown option or missing required argument.
    esac
done

4
27.10.2011, 23:35
3 ответа

Помните, что каждая из клиентских систем NFS определит имя пользователя путем поиска числового UID локально с помощью/etc/passwd локальной системы, или в централизованной пользовательской базе данных. Сервер NFS только хранит UID в цифровом формате и не знает об именах пользователей. Это также верно для названий группы по сравнению с ЦЕНУРОЗАМИ.

В Вашем случае serverA и serverB нужно было перечислить различные имена пользователей в/etc/passwd

Для тестирования этого использовать ls -n отобразить пользователя и идентификаторы группы численно, вместо того, чтобы преобразовать в пользователя или название группы в длинном (-l) вывод. Если ls -n опция не доступна на AIX, консультируйтесь со страницей справочника для этой функции.

Чтобы видеть, что username-to-uid отображается, сделайте одно из следования и serverA и serverB.

grep $THEUSERID /etc/passwd

Или, это - хорошая привычка использовать getent, так как это работает с/etc/password и службами каталогов (LDAP, и т.д.):

getent passwd $THEUSERID

UIDs должен быть тем же в обеих системах, но имена пользователей будут отличаться.

11
27.01.2020, 20:47
  • 1
    (Не обязательно/etc/passwd. Мог прибыть из централизованной службы каталогов — который в основном обязателен для исправности на любом большом развертывании NFS.) –  mattdm 17.03.2011, 20:50
  • 2
    Да, очень верный. –  Stefan Lasiewski 17.03.2011, 20:58

Вы натолкнулись на то, что я называю правилом Номер 1 экспорта NFS:

Никогда не экспортируйте монтирование, столь перезаписываемое клиенту, если тот клиент не использует то же отображение UID, как сервер делает.

В словах порядка владелец файлового сервера должен потребовать, чтобы все потенциальные клиенты NFS использовали ту же централизованную пользовательскую базу данных (NIS, NIS +, LDAP, Kerberos, и т.д.).

2
27.01.2020, 20:47

Я также встретился с Вашей проблемой и сумел решить ее с этим:

Действительно, NEED_IDMAPD не был установлен в файле /etc/default/nfs-common на стороне клиента.

Установка NEED_IDMAPD=yes на клиенте также решил вопрос. Теперь клиент правильно показывает имена пользователей и группы.

0
27.01.2020, 20:47

Теги

Похожие вопросы