Embed и security.fbd
Модератор: kdv
Embed и security.fbd
Мое почтение!
Подскажите, пожалуйста, возможно ли собрать приложение с встраиваемым сервером так, чтобы оно не хотело общую базу паролей?
Насколько я понимаю - да, но почему-то у меня не получается.
Делаю я это под FreeBSD, с FB 1.5.4, приложение линкую с libfbembed.
Кладу приложение в /home/test, туда же делаю gbak -R -MO read_only.
Запускаю... И isc_attach_database мне возвращает ошибку с обоснованием, что, no such file or directory. Создаю /var/db/firebird (путь по умолчанию для FB).
Снова запускаю - ошибка, что не может открыть файл паролей. Копирую туда security.fbd, и всё начинает работать.
Как бы мне отучить встраиваемый сервер пытаться открыть /var/db/firebird/security.fbd ? Или хотя бы открывать тот security.fbd, который рядом с базой лежит ? На firebird.conf, лежащий рядом с базой он тоже внимание не обращает...
Подскажите, пожалуйста, возможно ли собрать приложение с встраиваемым сервером так, чтобы оно не хотело общую базу паролей?
Насколько я понимаю - да, но почему-то у меня не получается.
Делаю я это под FreeBSD, с FB 1.5.4, приложение линкую с libfbembed.
Кладу приложение в /home/test, туда же делаю gbak -R -MO read_only.
Запускаю... И isc_attach_database мне возвращает ошибку с обоснованием, что, no such file or directory. Создаю /var/db/firebird (путь по умолчанию для FB).
Снова запускаю - ошибка, что не может открыть файл паролей. Копирую туда security.fbd, и всё начинает работать.
Как бы мне отучить встраиваемый сервер пытаться открыть /var/db/firebird/security.fbd ? Или хотя бы открывать тот security.fbd, который рядом с базой лежит ? На firebird.conf, лежащий рядом с базой он тоже внимание не обращает...
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
для embedded в user/password можно передавать что угодно. то есть у embedded нет разграничения прав доступа в этом смысле.
в ряде каких именно случаев. какими вообще могут быть права доступа, включая файловые, если embedded предназначен для ОДНОПОЛЬЗОВАТЕЛЬСКОЙ работы с БД. Т.е. есть комп, его включает пользователь, запускает приложение, работает. Нет прав - не запускает, не работает. Какие тут еще могут быть варианты? 10 человек по очереди работают на одном компе? ну поставьте нормальный сервер, запустите его под спец-аккаунтом и разграничивайте доступ обычным способом через grant.ИМХО, было бы очень удобно, в ряде случаев.
Вот-вот, и я про то же - есть доступ к файлу, работаем, нету - ну на нет, и суда нет...
Например, у меня несколько пользователей, и у каждого из них своя база-справочник. Клиентское приложение работает с эффективными UID/GID, соответствующими юзеру. Соответственно базы принадлежат им и никто более не сможет их прочитать. Собственно, так и должно быть (в случае монопольного доступа).
А вот дальше получается вот что:
Оказывается, libfbembed.so хочет иметь доступ к /var/db/firebird/security.fbd, который в этом случае должен быть доступен на чтение всем этим пользователям (хорошо, если они в одной группе, но в моем случае это недопустимо).
Фиг с этим, это как оказалось легко решаемо через переменную окружения FIREBIRD (INTERBASE). То есть достаточно положить копию security.fbd в какое-то удобное место, и в файловой системе дать соответствующие права (только на чтение соответствующему пользователю). И вроде бы все хорошо, но только смущает вот что - зачем вообще в этом случае нужна база пользователей ?
И к слову, зачем в этом случае нужно трогать семафоры, и вообще, создавать всю атрибутику многопользовательского сервера?
Замечу, что все это под FreeBSD.
Вероятно, я что-то упускаю или вообще неправильно всё понимаю?
Или может нужен совсем не тот libfbembed.so, который в дистрибутиве с обычным клиентом firebird идет?
Например, у меня несколько пользователей, и у каждого из них своя база-справочник. Клиентское приложение работает с эффективными UID/GID, соответствующими юзеру. Соответственно базы принадлежат им и никто более не сможет их прочитать. Собственно, так и должно быть (в случае монопольного доступа).
А вот дальше получается вот что:
Оказывается, libfbembed.so хочет иметь доступ к /var/db/firebird/security.fbd, который в этом случае должен быть доступен на чтение всем этим пользователям (хорошо, если они в одной группе, но в моем случае это недопустимо).
Фиг с этим, это как оказалось легко решаемо через переменную окружения FIREBIRD (INTERBASE). То есть достаточно положить копию security.fbd в какое-то удобное место, и в файловой системе дать соответствующие права (только на чтение соответствующему пользователю). И вроде бы все хорошо, но только смущает вот что - зачем вообще в этом случае нужна база пользователей ?
И к слову, зачем в этом случае нужно трогать семафоры, и вообще, создавать всю атрибутику многопользовательского сервера?
Замечу, что все это под FreeBSD.
Вероятно, я что-то упускаю или вообще неправильно всё понимаю?
Или может нужен совсем не тот libfbembed.so, который в дистрибутиве с обычным клиентом firebird идет?
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05