Embed и security.fbd

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
vladb
Сообщения: 4
Зарегистрирован: 04 сен 2007, 05:54

Embed и security.fbd

Сообщение vladb » 04 сен 2007, 06:09

Мое почтение!

Подскажите, пожалуйста, возможно ли собрать приложение с встраиваемым сервером так, чтобы оно не хотело общую базу паролей?
Насколько я понимаю - да, но почему-то у меня не получается.

Делаю я это под 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, лежащий рядом с базой он тоже внимание не обращает...

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 04 сен 2007, 07:53

Переменная среды FIREBIRD тебе поможет.

vladb
Сообщения: 4
Зарегистрирован: 04 сен 2007, 05:54

Сообщение vladb » 04 сен 2007, 19:59

Спасибо, помогла :)

Вот еще какой вопрос возник: не поддерживает ли FB возможность работы вообще без этой базы, а обеспечивать разграничение доступа средствами файловой системы? Ведь все равно это требуется делать.

ИМХО, было бы очень удобно, в ряде случаев.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 сен 2007, 21:03

для embedded в user/password можно передавать что угодно. то есть у embedded нет разграничения прав доступа в этом смысле.
ИМХО, было бы очень удобно, в ряде случаев.
в ряде каких именно случаев. какими вообще могут быть права доступа, включая файловые, если embedded предназначен для ОДНОПОЛЬЗОВАТЕЛЬСКОЙ работы с БД. Т.е. есть комп, его включает пользователь, запускает приложение, работает. Нет прав - не запускает, не работает. Какие тут еще могут быть варианты? 10 человек по очереди работают на одном компе? ну поставьте нормальный сервер, запустите его под спец-аккаунтом и разграничивайте доступ обычным способом через grant.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 04 сен 2007, 21:26

kdv писал(а):для embedded в user/password можно передавать что угодно. то есть у embedded нет разграничения прав доступа в этом смысле.
Я с ним в последний раз развлекался года два назад, но сдаётся мне, что ты говоришь про Дятла, а FB побоку только password. Хотя, могу склерозничать.

vladb
Сообщения: 4
Зарегистрирован: 04 сен 2007, 05:54

Сообщение vladb » 04 сен 2007, 21:27

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

Например, у меня несколько пользователей, и у каждого из них своя база-справочник. Клиентское приложение работает с эффективными UID/GID, соответствующими юзеру. Соответственно базы принадлежат им и никто более не сможет их прочитать. Собственно, так и должно быть (в случае монопольного доступа).

А вот дальше получается вот что:
Оказывается, libfbembed.so хочет иметь доступ к /var/db/firebird/security.fbd, который в этом случае должен быть доступен на чтение всем этим пользователям (хорошо, если они в одной группе, но в моем случае это недопустимо).
Фиг с этим, это как оказалось легко решаемо через переменную окружения FIREBIRD (INTERBASE). То есть достаточно положить копию security.fbd в какое-то удобное место, и в файловой системе дать соответствующие права (только на чтение соответствующему пользователю). И вроде бы все хорошо, но только смущает вот что - зачем вообще в этом случае нужна база пользователей ?

И к слову, зачем в этом случае нужно трогать семафоры, и вообще, создавать всю атрибутику многопользовательского сервера?

Замечу, что все это под FreeBSD.
Вероятно, я что-то упускаю или вообще неправильно всё понимаю?
Или может нужен совсем не тот libfbembed.so, который в дистрибутиве с обычным клиентом firebird идет?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 05 сен 2007, 08:00

Ребята, давайте не путать Firebird embedded и Firebird classic. Первый существует только под винду и ему наплевать на пароли. Второй является полноценным и на пароли не плюет. Хотя библиотеки и называются похоже.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 05 сен 2007, 10:13

Ребята, давайте не путать
ok, склероз.

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

vladb
Сообщения: 4
Зарегистрирован: 04 сен 2007, 05:54

Сообщение vladb » 05 сен 2007, 16:59

Вон где собака зарыта :)
Жаль, жаль...

Ответить