Summary: | Права доступа к базам 1с с помощью acl | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | mlof <admin> |
Component: | Файловые операции | Assignee: | Devaev Maxim <mdevaev> |
Status: | CLOSED FIXED | QA Contact: | Vitaly Lipatov <lav> |
Severity: | normal | ||
Priority: | P3 | CC: | kondratyuk, lav |
Version: | 1.0.10 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 5032 | ||
Deadline: | 2009-03-08 |
Description
mlof
2009-11-26 13:00:26 MSK
Посмотри по возможности. (In reply to comment #1) > Посмотри по возможности. > Чтож подождем... А в консоли при этом wine что-нибудь пишет? (In reply to comment #0) > Система: > Терминальный сервер на базе Ubuntu 8.10 server; xfce4; > WINE@Etersoft version: 1.0.10-eter25/18 > > Каждая база 1с находится в своем каталоге. > Для обеспечения безопасности доступа к > базам задаю права пользователей на > соответсвующие каталоги с помощью функции > setfacl. > Сначала права на чтение каталога со всеми > базами: > setfacl -m u:user:rx /srv/bases > Затем полный доступ к каталогу с базой, в > которой этот пользователь будет работать: > setfacl -m u:user:rwx -R /srv/bases/base_for_user > > Получается достаточно красивая схема > разграничения доступа пользователей к > информационным базам. > <b\>Иногда из-за непонятных мне причин > пользователь не может открыть базу 1с. При > входе в 1с базу на долю секунды выскакивает > окно загрузки данных а затем это окно > исчезает</b>. В логах ничего. Симптом > закрытия окна загрузки напоминает > отсутствие прав доступа к данному > каталогу, хотя при проверке прав доступа с > помощью getfacl права на каталог выставлены > корректно. > > Замечено, что при повторном выставлении > прав доступа (запуска предыдущих двух > команд), база 1с грузится нормально. Такое > ощущение, что при повторном запуске > снимаются какие-то блокировки. > > Для решения данной проблемы мною придуман > такой "костыль". Написан скрипт выставления > прав доступа к соответствующему каталогу > для каждого пользователя. Этот скрипт > запускается каждые 5 минут, и при появлении > этого "глюка" необходимо подождать 5 минут и > продолжать работать, но это сильно > напрягает бухгалтеров. > > Очень не хочется отказываться от setfacl. Не > понятно, кто виновник этого глюка: 1с, setfacl, > etersoft@wine или файловая система? > В консоли ничего не пишет. Просто вываливается. Может стоит запустить с ключом -дебаг? Да, попробуйте. Тут нужно смотреть на наследование прав. Некоторые файлы (например, 1cv7.lck) создаются заново при запуске первой 1С, соответственно выставленные вами ACL на него не действуют. Надо проверить у нас, обратив особое внимание на comment 6 (что происходит с правами на файлы, которые создаёт 1С) и постараться воспроизвести проблему без WINE. Бага висит с ноября! Базы, я так понимаю, получаете по самбе? В smb.conf на сервере допишите: ------------------------------ inherit owner = yes inherit acls = yes inherit permissions = yes map acl inherit = yes ------------------------------ Если будет глючить, можно попробовать добавить locking = no. (хотя сомневаюсь, что это правильно). Ну и наконец, пример с наследованием прав: ------------------------------- [liksys@kusanagi test]$ getfacl 1/ # file: 1/ # owner: liksys # group: liksys user::rwx group::rwx mask::rwx other::rwx default:user::rwx default:group::rwx default:other::rwx [liksys@kusanagi test]$ touch 1/1 [liksys@kusanagi test]$ getfacl 1/1 # file: 1/1 # owner: liksys # group: liksys user::rw- group::rw- other::rw- ------------------------------- (In reply to comment #9) > Базы, я так понимаю, получаете по самбе? Базы лежат в локальном каталоге. > В smb.conf на сервере допишите: > ------------------------------ > inherit owner = yes > inherit acls = yes > inherit permissions = yes > map acl inherit = yes > ------------------------------ > Если будет глючить, можно попробовать > добавить locking = no. (хотя сомневаюсь, что это > правильно). Да, сверяй советы с документацией: You can also disable byte-range locking completely by using locking = no. This is useful for those shares that do not support locking or do not need it (such as CD-ROMs). Не надо никому советовать отключать блокировки. (In reply to comment #10) > Ну и наконец, пример с наследованием прав: > ------------------------------- > [liksys@kusanagi test]$ getfacl 1/ > # file: 1/ > # owner: liksys Ну вот а теперь надо это проверить на терминальном сервере между двумя пользователями. И написать документацию, как настраивать совместный доступ на терминальном сервере при использовании ACL. По моему предположению, исходная проблема вытекала из следующего: "Для каталогов существуют права по умолчанию. Вот их установите, и тогда все объекты которые будут создаваться в этом каталоге, будут наследовать этот дефолтный список." http://unixforum.org/index.php?act=findpost&pid=819561 Но поскольку бага возникает лишь иногда, возможно имеет место какая-то бага с кэшированием атрибутов или что-то такое. Вся проблема в том, что дефлолтные права могут иметь только каталоги. И мой пример почему-то не весь вставился, а я не проверил :-/ [liksys@kusanagi test]$ mkdir 1 [liksys@kusanagi test]$ setfacl -m d:u::rwx,g::rwx,o::rwx,m::rwx 1 [liksys@kusanagi test]$ mkdir 1/dir [liksys@kusanagi test]$ touch 1/file [liksys@kusanagi test]$ getfacl 1/* # file: 1/dir # owner: liksys # group: liksys user::rwx group::rwx other::rwx default:user::rwx default:group::rwx default:other::rwx # file: 1/file # owner: liksys # group: liksys user::rw- group::rw- other::rw- [liksys@kusanagi test]$ la итого 32 drwxrwxr-x. 3 liksys liksys 4096 Мар 11 21:59 . drwx------. 54 liksys liksys 20480 Мар 11 21:54 .. drwxrwxrwx+ 3 liksys liksys 4096 Мар 11 21:59 1 [liksys@kusanagi test]$ (In reply to comment #13) > Вся проблема в том, что дефлолтные права > могут иметь только каталоги. > Хм, извиняюсь, проблемы, собственно, нет :-) (In reply to comment #14) > [liksys@kusanagi test]$ setfacl -m d:u::rwx,g::rwx,o::rwx,m::rwx 1 вся соль именно в ключике d:, он задает дефолтный acl. (In reply to comment #16) > (In reply to comment #14) > > [liksys@kusanagi test]$ setfacl -m d:u::rwx,g::rwx,o::rwx,m::rwx 1 > вся соль именно в ключике d:, он задает > дефолтный acl. > Выставил права с ключиком d: . Будем ждать глюков. Первый день теста пошел... Багу закроем после получения положительного отзыва о работе и создания раздела в документации об использовании ACL при совместном доступе. Как получить документацию для редактирования: http://wiki.etersoft.ru/support/writedocs (In reply to comment #18) > Багу закроем после получения > положительного отзыва о работе > и создания раздела в документации об > использовании ACL при > совместном доступе. > > Как получить документацию для > редактирования: > http://wiki.etersoft.ru/support/writedocs > Прошла неделя. У бухгалтеров пропало "моргание" окна запуска 1С. Я ни разу не включал скрипт перепрописывания прав доступа к базам. Заметил, что если использовать доступ к базам без ACL, то глюк появляется. Считаю, что использование ACL c ключом 'd', это обязательная опция при внедрении на сервере терминалов, т.к. убирает проблемы блокировок на временные файлы в каталоге с базой. Багу считаю ликвидированной. Спасибо. > Прошла неделя. У бухгалтеров пропало
> "моргание" окна запуска 1С. Я ни разу не
> включал скрипт перепрописывания прав
> доступа к базам. Заметил, что если
> использовать доступ к базам без ACL, то глюк
> появляется. Считаю, что использование ACL c
> ключом 'd', это обязательная опция при
> внедрении на сервере терминалов, т.к.
> убирает проблемы блокировок на временные
> файлы в каталоге с базой. Багу считаю
> ликвидированной. Спасибо.
Не могли бы вы детально описать иерархию баз и какие права выставляли? Чтобы мы на будущее имели пример использования 1C+ACL
(In reply to comment #20) > > Прошла неделя. У бухгалтеров пропало > > "моргание" окна запуска 1С. Я ни разу не > > включал скрипт перепрописывания прав > > доступа к базам. Заметил, что если > > использовать доступ к базам без ACL, то глюк > > появляется. Считаю, что использование ACL c > > ключом 'd', это обязательная опция при > > внедрении на сервере терминалов, т.к. > > убирает проблемы блокировок на временные > > файлы в каталоге с базой. Багу считаю > > ликвидированной. Спасибо. > > Не могли бы вы детально описать иерархию > баз и какие права выставляли? Чтобы мы на > будущее имели пример использования 1C+ACL > Есть семь каталогов. В каждом из каталогов размещается база данных 1с одного из подразделений нашей фирмы. Главный бухгалтер должен иметь доступ ко всем базам. Бухгалтеры подразделений только к базам своих подразделений. Каждый бухгалтер авторизуется своим логином\паролем. Аккаунты для авторизации на NX-сервере заведены в host-системе, как реальные пользователи со своими домашними каталогами в \home\... Для того, чтобы каталоги с базами были видны в окружении wine. Устанавливаем линки, как написано в мануале. Итак, необходимо распределить права по доступу к семи каталогам с базами 1с: 1) Главнму бухгалтеру рекурсивно выдаем полный доступ ко всем семи каталогам. setfacl -m u:glavbuh:rwx -R /srv/bases !!! не забываем ключик d !!! setfacl -m d:u:glavbuh:rwx -R /srv/bases 2) Для того, чтобы в 1С можно было выбрать каталог с конкретной базой, сначала ВСЕМ!!!НЕ РЕКУРСИВНО!!! выставляем права на чтение на каталог, в котором расположены наши семь папочек с базами: setfacl -m u:user1:rx /srv/bases setfacl -m u:user2:rx /srv/bases . . . setfacl -m u:userN:rx /srv/bases 3) Для каждого конкретного бухгалтера РЕКУРСИВНО выставляем полныые права на нужный каталог. НЕ ЗАБЫВАЕМ КЛЮЧ "d": setfacl -m d:u:user1:rwx -R /srv/bases/base_for_user1 setfacl -m d:u:user2:rwx -R /srv/bases/base_for_user2 . . . setfacl -m d:u:userN:rwx -R /srv/bases/base_for_userN 4) Логинимся на сервер. Запускаем 1С. Жмем "добавить базу". Заходим в каталог с базами. Видим, что выбрать можно только разрешенные базы. В процессе эксплуотации сервера терминалов пришлось перейти с XFCE 4 на GNOME. Т.к. в XFCE не решаема проблемма с фокусом модальных окон - "Прыгает фокус". В гноме - всё хорошо, но он гораздо больше ест ресурсов. Если, что-то еще интересует, могу добавить. Спасибо, все вполне подробно описано) http://kb.etersoft.ru/Пример_использования_1C_и_ACL Задокументировал решение. Ошибку можно закрывать. |