Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Настройка доступа ExternalFileAccess / 25 сообщений из 34, страница 1 из 2
25.11.2014, 11:00
    #38815868
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Добрый день
Появилась необходимость сделать одну из таблиц внешним файлом, в ExternalFileAccess сделал разрешение на определенную папку:
Код: plaintext
ExternalFileAccess = 'C:\_temp'

При создании и попытке внести данные в таблицу получаю:
Код: plaintext
Access to external file "C:\_TEMP\TABLE_1.TXT" is denied by server administrator. 
и в логе:
Код: plaintext
1.
VALCHENKO	Tue Nov 25 15:54:29 2014
	DirectoryList: unknown parameter ''C:\_temp\'', defaulting to None

В описание сказано:
Код: plaintext
To specify access to specific trees, enum all required paths (for Win32 this may be something like 'C:\ExternalTables', for unix - '/db/extern;/mnt/extern').
т.е. моей ошибки нет.

В трекер?
...
Рейтинг: 0 / 0
25.11.2014, 11:33
    #38815887
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Gallemar,

кавычки убирать пробовал ?
...
Рейтинг: 0 / 0
25.11.2014, 11:37
    #38815894
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
hvlad,пробовал,такая же фигня
...
Рейтинг: 0 / 0
25.11.2014, 12:00
    #38815915
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Gallemar,

у тебя прав нет.
...
Рейтинг: 0 / 0
25.11.2014, 12:09
    #38815926
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
kdv,Дима,а причем тут права,если в логе unknown parameter?
Права есть,специально перепроверил.
...
Рейтинг: 0 / 0
25.11.2014, 12:22
    #38815941
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Gallemar,

ок, тогда о какой версии Firebird идет речь?

у меня есть d:\temp. пишу в конфиге
ExternalFileAccess = Restrict d:\temp

создаю ext таблицу - работает.

Или ты про то, что "не работает" без указания Resrict ? Но ведь это формат такой.
none - запрещено вообще
restrict folderlist - разрешить в списке папок
full - разрешить везде.
...
Рейтинг: 0 / 0
25.11.2014, 12:23
    #38815942
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Слово Restrict - не для красоты, оно обязательное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.11.2014, 12:28
    #38815948
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Gallemar,

написал
ExternalFileAccess = d:\temp
сохранил, перезапустил ФБ. создаю таблицу - все ок. А вот дальше, надо данные добавить.

Access to external file "D:\TEMP\A.TMP" is denied by server administrator.

Возвращаю
ExternalFileAccess = Restrict d:\temp

работает.
...
Рейтинг: 0 / 0
25.11.2014, 12:32
    #38815954
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Понятно,всем спасибо
...
Рейтинг: 0 / 0
25.11.2014, 13:18
    #38816021
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
RootDirectory указывает не туда (должен указывать на Root, а указывает в ...system32).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
# ==================================
# Settings for all platforms/engines
# ==================================
#
# ----------------------------
#  Specify the root directory under which Firebird is installed. 
# Can be used to override the OS-specifically determined one.
#
# Type: string
#
# RootDirectory  =

# ----------------------------
# External File Paths/Directories
#
# ExternalFileAccess may be None, Full or Restrict. If you choose
# Restrict, provide ';'-separated trees list, where external files
# are stored.  Relative paths are treated relative to RootDirectory  entry
# (see above). Default value 'None' disables any use of external files
# on your site. To specify access to specific trees, enum all required
# paths (for Win32 this may be something like 'C:\ExternalTables',
# for unix - '/db/extern;/mnt/extern').
#
# NOTE: THE EXTERNAL TABLE ENGINE FEATURE COULD BE USED TO COMPROMISE
# THE SERVER/HOST AS WELL AS DATABASE SECURITY!!
#
# IT IS STRONGLY RECOMMENDED THAT THIS SETTING BE USED TO LIMIT
# EXTERNAL TABLE LOCATIONS!
#
# Type: string (special format)
#
#ExternalFileAccess = None
И drop table не удаляет файл, что не логично. Как такую таблицу пересоздать?
...
Рейтинг: 0 / 0
25.11.2014, 13:37
    #38816052
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Hello, Nickdee!
You wrote on 25 ноября 2014 г. 13:35:44:

Nickdee> И drop table не удаляет файл, что не логично. пашолнахуй!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.11.2014, 14:16
    #38816118
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Саша, нежнее, ещё нежнее. (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.11.2014, 16:01
    #38816276
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
NickDee,

пересоздать - таблицу или файл?
...
Рейтинг: 0 / 0
25.11.2014, 17:01
    #38816400
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
NickDeeRootDirectory указывает не туда (должен указывать на Root, а указывает в ...system32).

Сам же цитируешь - Can be used to override the OS-specifically determined one .

Ты и вправду настолько... кхм... альтернативно мыслишь, или придуриваешься, чтобы другие не комплексовали?
...
Рейтинг: 0 / 0
26.11.2014, 10:18
    #38817006
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
AriochNickDee,

пересоздать - таблицу или файл?
Таблица пересоздаётся. Но в ней мусор, т.к. файл не пересоздаётся.
...
Рейтинг: 0 / 0
26.11.2014, 10:36
    #38817019
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
miwaonlineNickDeeRootDirectory указывает не туда (должен указывать на Root, а указывает в ...system32).

Сам же цитируешь - Can be used to override the OS-specifically determined one .

Ты и вправду настолько... кхм... альтернативно мыслишь, или придуриваешься, чтобы другие не комплексовали?
Вы почему пропустили строчку выше?
Код: plaintext
1.
# Specify the root directory under which Firebird is installed.
# Can be used to override the OS-specifically determined one.
the root directory under which Firebird is installed - это у меня "C:\Program Files (x86)\Firebird\Firebird_2_5".

И перестаньте уже фантазировать в мой адрес, даже в мыслях. Нет в том конструктива. И оффтоп к тому же.
...
Рейтинг: 0 / 0
26.11.2014, 12:37
    #38817195
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
NickDee,

В ней не мусор, а содержимое файла.
Если очень надо, объявите таблицу состоящей из байтов и delete from table

внеш-таблица - это н файл, а объект для чтения/записи файла, аналогично TFileStram в Delphi или hfile в Windows / C

Вы же не хотите, чтобы при FileStream1.Free или fclose(h) файл на диске удалялся тоже?

да, в FB 2.5 не получится написать свой Нортон Коммандер без UDF, придется ждать FB3 и хранимки на плюсах и яве :-)
...
Рейтинг: 0 / 0
26.11.2014, 13:30
    #38817288
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Arioch,

ты не видишь, что он изрекает только то, что лично ему надо. Причем прикрываясь "желаниями разработчиков". В то время как на других разработчиков ему покласть. Догадаться не может, что внешний файл это внешний файл, и его нельзя удалять, или перезаписывать при create.

Впрочем, вот если бы он придумал к create table ... external file конструкцию, которая будет делать recreate внешнему файлу, тогда еще туда-сюда. Но - нет. Надо на один внешний файл насаживать таблицы разной структуры...
...
Рейтинг: 0 / 0
26.11.2014, 14:10
    #38817354
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
kdv,

Да нет, я в принципе бы не отказался от проверки наличия файла, его длины, удаления/переименования и даже списка файлов в директории
Не то, чтобы мне это было нужно до чёртиков, то просто для полноты этого "раздела" API

Но сама идея уничтожать данные при закрытии файла - это что-то с чем-то...
Это сводит внешние к чему-то межу GTT и временными файлами для сортировки.

Мне правда интересно... Надо было бы для него сделать сборку с именно запрошенным им функционалом - и что бы он с ней потом делал???
Если одноразово "всасывать" в БД данные из внешнего источника - то этот источник и озаботится удалением файла при подкладвании следующего пакета.
Если же выводить данные из БД наружу - то запрошенный функционал записали-и-сразу-удалили как-то очень похож на грабли
...
Рейтинг: 0 / 0
26.11.2014, 16:16
    #38817540
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
AriochЕсли очень надо, объявите таблицу состоящей из байтов и delete from table
delete from table не работает:
Код: plaintext
1.
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Cannot delete rows from external files.
Более того, не работает update:
Код: plaintext
1.
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Cannot update rows in external files.
Только insert. Это описано в документации.
Таким образом можно дописывать данные к любым файлам, включая системные dll и exe:
Код: sql
1.
2.
3.
create table X EXTERNAL 'C:\Windows\System32\cmd.exe' (F varchar(20));
-- или create table X EXTERNAL 'cmd.exe' (F varchar(20));
insert into X4 (F) values ('1111111111111');


Причём это может делать любой юзер с любыми правами. Достаточно поставить ExternalFileAccess = Full.

Можно в "C:\Program Files (x86)\Firebird\Firebird_2_5\UDF\" создать dll любого содержания (это я проверил), зарегистрировать её в качетве UDF, и выполнить. И опять же это может сделать любой бесправный юзер.

Если админ укажет одинаковый каталог для UDF и внешних таблиц:
Код: plaintext
1.
ExternalFileAccess = Restrict MyDir;
UdfAccess = Restrict MyDir
, то он тоже получит эту дыру.

Ещё при "ExternalFileAccess = Restrict ..." можно создавать fbd-файлики любого содержания, и потом натравливать на них сервер. Понятно что в сервере есть баги, и рано или поздно он упадёт, или допустит выполнение произвольного кода, что ещё хуже.

Итого:
Система с ExternalFileAccess = Full ломается на раз-два (кстати бонусом открывается ещё и доступ на чтение всего и вся, даже бинарные файлы читаются).
Система с ExternalFileAccess и UdfAccess на пересекающиеся папки ломается не многим сложней.
Система с ExternalFileAccess = Restrict тоже может быть атакована.
Конечно нужно иметь рабочий логин...

Как лечить? Имхо достаточно забрать доступ к созданию таких таблиц для обычных пользователей.
В 2.5.3 вроде запретить нельзя.
...
Рейтинг: 0 / 0
26.11.2014, 16:22
    #38817547
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
NickDeeКак лечить?Перестать нести херню в ломать firebird.conf. Начать читать хотя бы комментарии к тем параметрам, которые ты ломаешь.
...
Рейтинг: 0 / 0
26.11.2014, 16:48
    #38817575
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
NickDee,

контроль доступа для DDL есть только в тройке
...
Рейтинг: 0 / 0
26.11.2014, 16:50
    #38817576
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
NickDeeТаким образом можно дописывать данные к любым файлам, включая системныедобраться файберд может только до тех файлов на которые есть доступ у юзера под которым оный запущен, в нормальной системе это по-умолчанию firebird из группы firebird у которого нет доступа на запись системных файлов.

ССЗБ запускающие прикладной сервис от рута должны страдать, тут просто без вариантов.

Опять буря в стакане?
...
Рейтинг: 0 / 0
26.11.2014, 16:58
    #38817586
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
Дополню, что под виндой FB тривиально запускается от (встроенной) учётной записи NetworkService, которой требуется явно раздавать права на запись.
...
Рейтинг: 0 / 0
26.11.2014, 17:00
    #38817587
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка доступа ExternalFileAccess
hvladNickDeeКак лечить?Перестать нести херню в ломать firebird.conf. Начать читать хотя бы комментарии к тем параметрам, которые ты ломаешь.

C "UdfAccess = Restrict UDF" проблем нет, а с "ExternalFileAccess = Restrict EF" проблемы в полный рост, хотя коммнеты обещают одинаковый батхерт при использовании.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
для ExternalFileAccess:
# NOTE: THE EXTERNAL TABLE ENGINE FEATURE COULD BE USED TO COMPROMISE
# THE SERVER/HOST AS WELL AS DATABASE SECURITY!!
#ExternalFileAccess = None

для UdfAccess:
# NOTE: THE EXTERNAL FUNCTION ENGINE FEATURE COULD BE USED TO COMPROMISE
# THE SERVER/HOST AS WELL AS DATABASE SECURITY!!
#UdfAccess = Restrict UDF
И я понимаю, что для тебя всё логично. Но вот тому кто в первый раз открывает конфиг, даже почитав предварительно доку, всё не так логично.

Я впервые сегодня пользовался внешними таблицами. И понял что ими пользоваться безопасно нельзя. Udf я пользуюсь давно, и не вижу проблем с безопасностью.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Настройка доступа ExternalFileAccess / 25 сообщений из 34, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]