WINE@Etersoft/Настройка совместной работы по NFS в Linux

Материал из Русский WINE
Перейти к: навигация, поиск

Настройка совместной работы по NFS в Linux

Разделяемый сетевой ресурс для совместной работы в WINE можно реализовать с помощью технологии NFS. Выбирая этот способ, следует учитывать следующие особенности NFS:

'Права доступа' Доступ к файлам по NFS осуществляется на основании идентификатора пользователя (UID/GID). Поэтому требуется, чтобы у каждого пользователя присутствовало две учётные записи: на сервере и на рабочей станции, причём с одинаковым UID. В случае, когда доступ предоставляется на основании принадлежности к группе (мы предлагаем для WINE именно такой вариант), это требует, чтобы данная группа присутствовала и на сервере, и на всех рабочих станциях с одинаковым GID. 'Безопасность' Поскольку при обращении к серверу клиент (с рабочей станции) сам сообщает свой UID/GID, авторизация остаётся целиком на совести данной рабочей станции и никак не зависит от сервера. Поэтому применять NFS (по крайней мере версии 3) можно только внутри безопасной сети, в которой можно доверять всем рабочим станциям.

Итак, для настройки разделяемого сетевого ресурса для совместной работы с WINE потребуется обеспечить:

  • совпадение идентификатора группы (GID), которой принадлежит общий каталог, на сервере и всех рабочих станциях;
  • совпадения идентификаторов всех пользователей (UID), которые входят в указанную группу, на сервере и на всех рабочих станциях.

Также, поскольку речь идёт о совместном использовании ресурса, потребуется задействовать механизм блокировок файлов NFS. Это требует запуска службы nfslock и на сервере, и на всех клиентах.

Настройка сервера NFS на примере Ubuntu Linux

Будем называть машину с NFS-сервером server.

Потребуется установить следующие пакеты:

nfs-user-server
portmap

Для запуска необходимых служб следует выполнить команды:

# /etc/init.d/portmap start
# /etc/init.d/nfs-user-server start

Чтобы указанные службы запускались автоматически при последующих перезагрузках, следует выполнить команды:

# update-rc.d portmap defaults
# update-rc.d nfs-user-server defaults

Настройка клиентов NFS на примере Ubuntu Linux

На стороне клиента должны быть установлены пакеты:

portmap
nfs-common

Для корректной совместной работы на каждом клиенте обязательно должен быть запущен сервис nfslock, и при монтировании не должно быть ключа nolock, иначе взаимодействия между клиентами не будет и данные в базе могут быть нарушены. Заметить проблему можно по неменяющемуся значению wc -l /proc/locks на сервере, и отсутствию всех запустивших систему пользователей в списке активных пользователей 1С.

При использовании NFSv3 потребуется указать в файле /etc/defaults/nfs-common переменную NEED_STATD=yes для запуска rpc.statd, необходимого для работы блокировок. Для NFSv4 это не требуется. После изменения настроек не забудьте перезапустить nfs-common командой /etc/init.d nfs-common restart

Смонтируем каталог сервера server:/mysharedir в /mnt/share/base. Для этого есть 3 пути:

  • монтировать вручную каждый раз;
  • автоматическое монтирование при загрузке системы;
  • автомонтирование при обращении к каталогу.

Монтирование вручную

Для этого следует выполнить одну из следующих команд, в зависимости от версии NFS:

  • для 3-й версии NFS:
 $ mount -t nfs -o rw,soft,nointr server:/mysharedir /mnt/share/base
  • для 4-й версии NFS:
 $ mount -t nfs4 -o rw,soft,nointr server:/mysharedir /mnt/share/base

Монтирование при загрузке системы

Для этого требуется добавить в файл /etc/fstab строку:

  • для 3-й версии nfs
 $ server:/mysharedir /mnt/share/base  nfs rw,soft,nointr 0 0
  • для 4-й версии nfs
 server:/mysharedir /mnt/share/base  nfs4 rw,soft,nointr 0 0

Проверить монтирование можно командой mount /mnt/share/base.

Автомонтирование при обращении к каталогу (autofs)

Для этого необходимо добавить в файл /etc/auto.master строку:

 /mnt/share /etc/auto.tab --timeout  60

Кроме этого, в файл /etc/auto.tab нужно добавить строку:

  • для 3-й версии NFS:
 base  -rw,soft,nointr server:/mysharedir
  • для 4-й версии NFS:
 base  -fstype=nfs4,rw,soft,nointr  server:/mysharedir
Note: Каталог /mnt/share должен существовать в локальной файловой системе и в нём не должно быть подкаталогов.

Теперь можно запустить службу автоматического монтирования командой

# service autofs restart
(/etc/init.d/autofs restart)
Если изменения в файл конфигурации /etc/auto.master вносились во время работы autofs, следует перезагрузить демон automount командой
# service autofs reload
(/etc/init.d/autofs reload) 

Настройка сервера NFS на примере ALT Linux

Будем называть машину с NFS-сервером server.

Потребуется установить следующие пакеты:

nfs-server
portmap

Для запуска необходимых служб следует выполнить команды:

# service portmap start
# service nfs start

Чтобы указанные службы запускались автоматически при последующих перезагрузках, следует выполнить команды:

# chkconfig portmap on
# chkconfig nfs on

Настройка клиентов NFS на примере ALT Linux

На стороне клиента должны быть установлены следующие пакеты:

portmap
nfs-client

Для корректной совместной работы на каждом клиенте обязательно должен быть запущен сервис nfslock, и при монтировании не должно быть ключа nolock, иначе взаимодействия между клиентами не будет и данные в базе могут быть нарушены. Заметить проблему можно по неменяющемуся значению wc -l /proc/locks на сервере, и отсутствию всех запустивших систему пользователей в списке активных пользователей 1С.

# service nfslock start
# chkconfig nfslock on

Смонтируем каталог сервера server:/mysharedir в /mnt/share/base. Для этого есть 3 пути:

  • монтировать вручную каждый раз;
  • автоматическое монтирование при загрузке системы;
  • автомонтирование при обращении к каталогу.

Настройка экспортируемых с сервера каталогов

Чтобы экспортировать каталог /mysharedir для монтирования на клиенте, следует в файле /etc/exports добавить строки:

Для одной машины c IP-адресом ipaddr1:

/mysharedir ipaddr1(rw,async)

Для машин подсети 192.168.20.0/24:

/mysharedir 192.168.20.0/24(rw,async)

Для всех машин с доменным именем, оканчивающимся на server.net:

/mysharedir *server.net(rw,async,all_squash,anonuid=150,anongid=201)

Для экспортирования без ограничений:

/mysharedir *(rw,async)

Где:

  • rw -- разрешены чтение и запись
  • ro -- разрешено только чтение
  • no_root_squash -- разрешает пользователям root на машинах-клиентах доступ к смонтированным каталогам в качестве суперпользователя. По умолчанию пользователи root на клиенте получают при доступе к серверу uid пользователя nobody.
  • async -- позволяет NFS-серверу отвечать на запросы клиентов в асинхронном режиме, что повышает производительность.

После внесения изменений достаточно выполнить команду

# exportfs -r

для перечитывания настроек сервером.

Для проверки текущих настроек следует вызвать команду:

# exportfs -v

Для NFSv4 следует иметь в виду, что экспортируемые каталоги отсчитываются от определённого каталога, а не от корня системы. Пример:
/net/exports  192.168.0.0/24(rw,insecure,sync,wdelay,no_subtree_check,fsid=0)
/net/exports/home  192.168.0.0/24(rw,insecure,sync,wdelay,no_subtree_check,nohide)
Первая запись здесь является фиктивной (отмечена fsid=0) и обозначает каталог, от которого отсчитываются экспортируемые системы.

Соответственно, предварительно следует подсоединить туда содержимое нужного каталога:

/home            /net/exports/home        none     bind    0 0

Варианты авторизации клиентов

Данный раздел приведён для полноты информации. Авторизация клиентов через NFS не поддерживается. Для того чтобы несколько NFS-клиентов могли одновременно работать с базой, расположенной на NFS-сервере, следует учитывать распределение прав доступа.

Существует несколько вариантов решения этой проблемы:

  • Централизованная авторизация (PAM) или централизованная синхронизация конфигурационных файлов авторизации (NIS).
  • Создание единой учетной записи (uid + gid) на всех машинах, имеющих доступ к базе.
  • Использование параметров all_squash, anonuid, anongid при экспортировании каталога на nfs-сервере

Рассмотрим вариант с единой для всех учётной записью.

В этом случае можно создать новую учетную запись (uid + gid) при помощи команды: useradd имя_пользователя -u номер_uid -g основная_группа_gid -G дополнительные,группы -m

Здесь

  • номер_uid -- желаемый идентификатор пользователя;
  • основная_группа_gid -- желаемый идентификатор или название Вашей основной группы;
  • дополнительные,группы -- перечисление дополнительных подключаемых групп через запятую, без пробелов;
  • ключ -m указывает на создание домашнего каталога /home/имя_пользователя;
  • ключ -d домашний_каталог привязывает к этому пользователю домашний каталог домашний_каталог.

Далее следует задать пароль созданному пользователю командой passwd имя_пользователя.

Или можно поправить настройки уже существующих учетных записей с помощью команд usermod и groupmod:

Изменить текущие uid и gid пользователя командой:

usermod -u новый_uid -g новый_gid имя_пользователя

Изменить текущий идентификатор группы командой:

groupmod -g новый_gid название_группы

Рассмотрим вариант анонимного использования ресурса на примере экспортирования NFS-сервером каталога /mysharedir для машины client. Для реализации этого метода в файле /etc/exports NFS-сервера следует внести/изменить строку:

/mysharedir client(rw,async,all_squash,anonuid=150,anongid=201)

В то же время владельцем экспортируемого каталога, подкаталогов и файлов должен быть пользователь с uid=150, а владельцем-группой, соответственно пользователи с gid=201. На данный момент одновременная работа с базой по данному методу возможна только между NFS-клиентами. Если при этом обратиться к базе локально, произойдет ошибка.

Информация о сервере NFS

Для получения информации о работе сервера NFS следует использовать команду nfsstat на таком сервере:

nfsstat -s

Для определения поддержки сервером NFS4 можно проверить доступные RPC-интерфейсы. Доступность через порт 2049 по протоколам TCP и UDP означает поддержку версии NFS4.

# rpcinfo -p server
   program vers proto   port
    100003    4   udp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    3   tcp  32788  nlockmgr
    100021    4   tcp  32788  nlockmgr

Наличие программы 100021 (nlockmgr) свидетельствует о поддержке блокировок со стороны сервера.

Дополнительные ссылки: http://www.bog.pp.ru/work/NFS.html http://www.brennan.id.au/19-Network_File_System.html http://nfs.sourceforge.net/nfs-howto/

Особенности работы с NFS

Поскольку SGID-бит на файлах имеет специальное значение для NFS (включает mandatory блокировки), следует обратить особое внимание на отсутствие этого бита на файлах. Обычно помогает устанавливать права на каталог скриптом setwineshare (см. раздел Разделяемый сетевой ресурс). Для каталогов SGID-бит обязателен при совместной работе, поскольку обеспечивает общую группу для создаваемых файлов, отличную от основной группы пользователя.

Note: Обратите внимание, что протокол NFS (точнее, его реализация на стороне клиента) поддерживает только первые 16 групп, в которые входит пользователь. В случае достижения этого предела нужно перейти на ACL или использовать CIFS.

Если при проверке возникает ошибка подключения, проверьте, что доступ к порту не запрещён файрволлом или ограничением на слушаемые порты в самом portmap (в ALT Linux проверьте отсутствие параметра -l в /etc/sysconfig/portmap.)

# rpcinfo -p server
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused

Если Wine зависает при обращении к каталогу, следует попробовать выполнить $ flock файл /bin/sh. Если при этом не появляется приглашения, командой строки, проблема в том, что недоступен (не запущен) сервер блокировок (rpc.statd) на клиентской или на серверной стороне.

Wine
Search.png
Программы работающие в WineСкачатьШкольный Wine
WINE@Etersoft Общие сведенияУстановка на 64-битные ОСОсобенности разработкиПатчи для WINE@EtersoftАдминистративная установкаДополнительные компонентыКак получить WINE@Etersoft?Лицензия на документациюГлоссарийИспользование аппаратных ключей защиты в LinuxДополнительная информация • [ Совместная работа | по CIFSпо NFS ] • Изменение системных ограниченийРегистрация продуктаПошаговая инструкция по установке rpm-пакетовОбращение в службу поддержкиТерминальные решенияУстановка WINE@EtersoftПодписка на обновленияНастройка WINE@EtersoftРазработчикуEnterpriseЧто такое WINE@Etersoft SQLВозможностиСреда для запуска приложений WindowsИспользование WINE@EtersoftFAQ по использованию WINE@EtersoftОсновные командыWINE@Etersoft/LocalЧто такое WINE@Etersoft Local
Программы Запуск БЭСТ 4+Запуск Консультант+ (сетевой версии)ГарантF1Инфо-Бухгалтер 8.xНалогоплательщик ЮЛ
1C Отличия от обычного WineМестоположение базы 1С1C: Предприятие 7.7 в WINEНастройка 1С 7.7 для работы с SQL-серверомУстановка 1С: Предприятия 8.1Установка 1С: Предприятия 8.1 в трёхзвенном режиме
Пользователю
Помощь Использование WinecfgИспользование Regedit
Легальность DCOM95IE5DCOMMSXML
Утилиты для работы с Wine WinetricksWineToolsQ4WinePlayOnLinuxIEs4LinuxWine-DoorsSwine
Разработчику
Компоненты WindowsЗапрет отключения защиты программыУправление обработчиком исключенийStraceNTИзмерение скорости функций WinAPIGLУстройство чтения смарт-картПрофилированиеТесты для проверки интерфейсовНаписание тестов в системе WineАутентификация в домене ADРепозитории
Помощь Создание патчейНаписание приложения под wineОтправка патчейСборка eterhackСборка wine-public
Отладка Способы отладкиWINEDEBUGWinedbg
Разработка WINE
1CODBCWinHelpКомпасМетодикаТестирование доступаЦветаФайловый диалогТестированиеЛитератураИзображенияWin32ШрифтыФайловые блокировкиСсылкиКлючи защитыRPMWineGeckoListViewУпаковка Wine
Производителю
Родственные проекты
LUKReactOSARWINSSCrossOver
Прочее
PageSetupDlgFreeBSDWwr