Использовать 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
Помните, что каждая из клиентских систем 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 должен быть тем же в обеих системах, но имена пользователей будут отличаться.
Вы натолкнулись на то, что я называю правилом Номер 1 экспорта NFS:
Никогда не экспортируйте монтирование, столь перезаписываемое клиенту, если тот клиент не использует то же отображение UID, как сервер делает.
В словах порядка владелец файлового сервера должен потребовать, чтобы все потенциальные клиенты NFS использовали ту же централизованную пользовательскую базу данных (NIS, NIS +, LDAP, Kerberos, и т.д.).
Я также встретился с Вашей проблемой и сумел решить ее с этим:
Действительно, NEED_IDMAPD
не был установлен в файле /etc/default/nfs-common
на стороне клиента.
Установка NEED_IDMAPD=yes
на клиенте также решил вопрос. Теперь клиент правильно показывает имена пользователей и группы.