Почему файловые блокировки между Apache и Samba не работают?
==============================================================

 Решил на днях настроить доступ к 1С Бухгалтерии через Samba для тех, кто работает в офисе и через Apache для удаленных сотрудников. Дистрибутив выбрал Debian 9.8. То есть получается, база в файловом режиме и режиме веб-клиента одновременно. И вот что мне пришло в голову проверить. Написал программку, которая ставит эксклюзивную блокировку на файл базы 1С в расшаренной папке на Debian. Запускал с винды. Проверил с другой винды - ругается, не может открыть залоченный файл, а Apache на Debian, который обращается к файлу базы напрямую, спокойно открывает и пускает в базу. То есть блокировку он не видит совсем. Не видит ее и любой другой процесс Linux. Что это обычно означает для файловой базы? Конечно же, крах спустя время, ведь веб-клиент и толстый будут лезть в базу несогласованно. Внимание вопрос: что делать, как заставить процессы Linux (POSIX) видеть блокировки, накладываемые Samba? Тестировал на конфиге smbd.conf по умолчанию за исключением oplocks - их сразу выключил. Впрочем, они дела не меняют. Все перепробованные параметры также не принесли результатов. Пожалуйста, подключение через тонкий клиент к тому же апачу не предлагать. 

 Вы похоже путаете понятие блокировки.  

Есть файловая блокировка - на уровне системы блокируется доступ к файлу.  

Есть блокировка 1с - при подключении клиента в папке базы создается файл блокировки. И остальные клиенты согласуют запись в базу.  

Банальная внутрення блокировка, не имеющая никакого отношения к блокировке файла. Файл остается незаблокированным, и вы разумеется можете попортить его сторонним приложением запущенным на линуксе.  

А вот веб клиент, как и другой штатный клиент будут корректно работать.  

В общем не лезьте на линуксе сторонними приложениями к файлу базы и все будет хорошо. 

 Какая база данных у вас собирается работать со своими файлами по http O\_o? настоятельно рекомендую хорошенько подумать и так не делать, ибо вы создадите головную боль пользователям.  
  

[https://www.oreilly.com/openbook/samba/book/ch05\_0...](https://www.oreilly.com/openbook/samba/book/ch05_05.html)  

> If you have a system that understands oplocks, set kernel oplocks = yes in the Samba configuration file. That should eliminate conflicts between Unix processes and Windows users. 

 

 Странно ожидать, что виндузная блокировка будет работать под Линуксом. Хотите только чтение - ставьте соответствующие права доступа.  
  

> Что это обычно означает для файловой базы? Конечно же, крах спустя время, ведь веб-клиент и толстый будут лезть в базу несогласованно. 

 Это бред. По вашей логике, то что в современных СУБД работают тысячи пользователей одновременно - это миф, так как многопользовательский доступ разрушает любую базу.  
  

Толстые клиенте, тонкие клиенты или веб-клиенты через вебсервер, которые обращается к базе с помощью библиотеки wsap22.so - все они с точки зрения файла 1Cv8.1CD одинаково читают и пишут данные. Если у вас 2 пользователя одновременно работают с базой через толстый клиент и это ее не уничтожает, то при заходе человека через веб-клиент (или тонкий клиент, но через веб-адрес) ситуация не изменится.  
  

Я публиковал в вебе файловую базу еще во времена тестовой 8.2.6 (клиент хотел рискнуть, так как для бетта-тестеров это было бесплатно) - и никаких проблем не было.