powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
20 сообщений из 20, страница 1 из 1
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37925262
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Наверное, баян, сильно не пинайте: как запретить юзеру создавать новые объекты в БД ?
Код: 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.
33.
34.
35.
36.
37.
38.
39.
C:\MIX\firebird\fb25>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 't2.fdb'; commit;
SQL> create role norights_role;
SQL> create user norights_user password '123';
SQL> commit;
SQL> grant norights_role to norights_user;
SQL> commit;
SQL>  connect 't2.fdb' user norights_user role norights_role password '123'; 
Database:  't2.fdb', User: norights_user, Role: NORIGHTS_ROLE

SQL> set list on; -- проверим еще раз, что мы вошли как "бесправный юзер":
SQL> select current_user,current_role from rdb$database;

USER                            NORIGHTS_USER
ROLE                            NORIGHTS_ROLE


SQL> set list off;
SQL>  create table t(id int);  -- как ему запретить это делать ?
SQL> commit;
SQL> insert into t values(1);
SQL> commit;
SQL> select * from t;

          ID
============
           1

SQL> create view v_t as select * from t; commit;
SQL> create sequents gen_t; commit;
SQL> create sequence gen_t; commit;

SQL> show version;
ISQL Version: WI-V2.5.2.26520 Firebird 2.5
Server version:
Firebird/x86/Windows NT (access method), version "WI-V2.5.2.26520 Firebird 2.5"
Firebird/x86/Windows NT (remote server), version "WI-V2.5.2.26520 Firebird 2.5/XNet (CSPROG)/P12"
Firebird/x86/Windows NT (remote interface), version "WI-V2.5.2.26520 Firebird 2.5/XNet (CSPROG)/P12"
on disk structure version 11.2
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37925266
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидНаверное, баян
RTFM
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37925277
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

не пропёрло!
пересоздал базу с нуля, дальше выполнил в ней скрипт, на который ты указал.
Дальше делаю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL> commit;
SQL> create role norights_role; -- её надо снова создать, т.к. роли хранятся в базе, а не в sec2.fdb
SQL> grant norights_role to norights_user;
SQL> commit;
SQL> connect 't2.fdb' user norights_user role norights_role password '123';
Database:  't2.fdb', User: norights_user, Role: NORIGHTS_ROLE
SQL> set list on;
SQL> select current_user,current_role from rdb$database;

USER                            NORIGHTS_USER
ROLE                            NORIGHTS_ROLE


SQL> set list off;
SQL> create table t(id int);  -- прокатило! why ?? 
SQL> commit;
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37925304
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидНаверное, баян, сильно не пинайте: как запретить юзеру создавать новые объекты в БД ?Наиболее прямолинейный вариант - n плюс один пользователь. Один пользователь - служебный, от его имени и создаются базы. Остальные - "рабочие" - именно их логины известны приложению.
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37925689
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

А у Public ты отозвал права?
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37926006
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747,

да, пробовал также с предварительным отзывом прав.
Не взлетело:
Код: plaintext
1.
2.
C:\MIX\firebird\fb25>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 't2.fdb'; commit;
-- далее подсовываю ему скрипт:
Код: 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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
grant all on rdb$character_sets to sysdba;
grant all on rdb$check_constraints to sysdba;
grant all on rdb$collations to sysdba;
grant all on rdb$database to sysdba;
grant all on rdb$dependencies to sysdba;
grant all on rdb$exceptions to sysdba;
grant all on rdb$field_dimensions to sysdba;
grant all on rdb$fields to sysdba;
grant all on rdb$files to sysdba;
grant all on rdb$filters to sysdba;
grant all on rdb$formats to sysdba;
grant all on rdb$function_arguments to sysdba;
grant all on rdb$functions to sysdba;
grant all on rdb$generators to sysdba;
grant all on rdb$index_segments to sysdba;
grant all on rdb$indices to sysdba;
grant all on rdb$log_files to sysdba;
grant all on rdb$pages to sysdba;
grant all on rdb$procedure_parameters to sysdba;
grant all on rdb$procedures to sysdba;
grant all on rdb$ref_constraints to sysdba;
grant all on rdb$relation_constraints to sysdba;
grant all on rdb$relation_fields to sysdba;
grant all on rdb$relations to sysdba;
grant all on rdb$security_classes to sysdba;
grant all on rdb$transactions to sysdba;
grant all on rdb$trigger_messages to sysdba;
grant all on rdb$triggers to sysdba;
grant all on rdb$types to sysdba;
grant all on rdb$user_privileges to sysdba;
grant all on rdb$view_relations to sysdba; 
commit;
--------------------------------------------
set warnings off;
--  revokes  all from PUBLIC role:
revoke all on rdb$character_sets from public;
revoke all on rdb$check_constraints from public;
revoke all on rdb$collations from public;
revoke all on rdb$database from public;
revoke all on rdb$dependencies from public;
revoke all on rdb$exceptions from public;
revoke all on rdb$field_dimensions from public;
revoke all on rdb$fields from public;
revoke all on rdb$files from public;
revoke all on rdb$filters from public;
revoke all on rdb$formats from public;
revoke all on rdb$function_arguments from public;
revoke all on rdb$functions from public;
revoke all on rdb$generators from public;
revoke all on rdb$index_segments from public;
revoke all on rdb$indices from public;
revoke all on rdb$log_files from public;
revoke all on rdb$pages from public;
revoke all on rdb$procedure_parameters from public;
revoke all on rdb$procedures from public;
revoke all on rdb$ref_constraints from public;
revoke all on rdb$relation_constraints from public;
revoke all on rdb$relation_fields from public;
revoke all on rdb$relations from public;
revoke all on rdb$security_classes from public;
revoke all on rdb$transactions from public;
revoke all on rdb$trigger_messages from public;
revoke all on rdb$triggers from public;
revoke all on rdb$types from public;
revoke all on rdb$user_privileges from public;
revoke all on rdb$view_relations from public; 
set warnings on;
commit;
-----------------------
grant select on rdb$character_sets to public;
grant select on rdb$check_constraints to public;
grant select on rdb$collations to public;
grant select on rdb$database to public;
grant select on rdb$dependencies to public;
grant select on rdb$exceptions to public;
grant select on rdb$field_dimensions to public;
grant select on rdb$fields to public;
grant select on rdb$files to public;
grant select on rdb$filters to public;
grant select on rdb$formats to public;
grant select on rdb$function_arguments to public;
grant select on rdb$functions to public;
grant select on rdb$generators to public;
grant select on rdb$index_segments to public;
grant select on rdb$indices to public;
grant select on rdb$log_files to public;
grant select on rdb$pages to public;
grant select on rdb$procedure_parameters to public;
grant select on rdb$procedures to public;
grant select on rdb$ref_constraints to public;
grant select on rdb$relation_constraints to public;
grant select on rdb$relation_fields to public;
grant select on rdb$relations to public;
grant select on rdb$security_classes to public;
grant select on rdb$transactions to public;
grant select on rdb$trigger_messages to public;
grant select on rdb$triggers to public;
grant select on rdb$types to public;
grant select on rdb$user_privileges to public;
grant select on rdb$view_relations to public; 
commit;

create role norights_role;
commit;
grant norights_role to norights_user;
commit;
connect 't2.fdb' user norights_user role norights_role password '123';
set list on;
select current_user,current_role from rdb$database;
set list off;
show roles;
commit;

Вывод скрипта:
Код: plaintext
1.
2.
3.
4.
5.
6.
Database:  't2.fdb', User: norights_user, Role: NORIGHTS_ROLE

USER                            NORIGHTS_USER
ROLE                            NORIGHTS_ROLE


       NORIGHTS_ROLE

Теперь создаю таблицу, дропаю её, снова создаю - всё работает.
В том числе и право заталкивать в неё столько строк, сколько захочу:
Код: plaintext
1.
2.
3.
4.
5.
SQL> create table t(id int);
SQL> commit;
SQL> drop table t;
SQL> commit;
SQL> create table t(b blob);  commit;
SQL> insert into t select list(gen_uuid()) from rdb$fields,rdb$fields,rdb$fields; commit;
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37926057
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. А вообще, весело получается. Любой юзер, имеющий возможность всего лишь право коннекта к базе, запросто может увеличить её размер до любых значений. Таблицы создавать при этом не надо - всё само получится: главное знать, что временные блобы всегда пишутся в базу :-)
Код: 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.
C:\MIX\firebird\fb25>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 't0.fdb'; commit;
SQL> create user tmp120822 password '123'; commit;
SQL> connect t0.fdb user tmp120822 password '123';
Database:  t0.fdb, User: tmp120822
SQL> commit;
SQL> set transaction  read only  read committed;
SQL> set list on;
SQL> select current_user,current_role from rdb$database;

USER                            TMP120822
ROLE                            NONE


SQL> set list off;
SQL> shell dir t0.fdb|findstr /i t0.fdb;
22.08.2012  12:10              802 816 T0.FDB
SQL> out nul; select list(gen_uuid()) from rdb$fields,rdb$fields,rdb$fields; out;
SQL> shell dir t0.fdb|findstr /i t0.fdb;
22.08.2012  12:11           37 965 824 T0.FDB
SQL> out nul; select list(gen_uuid()) from rdb$fields,rdb$fields,rdb$fields; out;
SQL> shell dir t0.fdb|findstr /i t0.fdb;
22.08.2012  12:13           78 553 088 T0.FDB
SQL> out nul; select list(gen_uuid()) from rdb$fields,rdb$fields,rdb$fields; out;
SQL> shell dir t0.fdb|findstr /i t0.fdb;
22.08.2012  12:16          113 000 448 T0.FDB
Ранее я приводил аналогичный пример, но не подумал проверить его от имени "бесправного юзера" - там всё от SYSDBA делалось.

Инструмент dbInfo покажет после такого теста, что в базе 97% страниц занято блобами и всего лишь 2% страниц свободно. До тех пор, пока моя невинная read_only-транзакция не соизволит завершиться.
Грустно как-то...PagesCount%mbSummary, Total pages27588100107,77Header100Write Ahead Log100Generator Pages100Unused (free)63322,47Bad Pages000Page Inventory Pages100Transaction Inventory Pages100Pointer Pages3300,13Record Pages4200,16Index Root Pages3300,13Index Pages5200,2Blob Pages2679097104,65
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37926184
SQL Bigot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37926252
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL Bigot,

да, я вспомнил этот топик, спасибо за тынц.
Но там все ведут речь о вставке в какую-то существующую таблицу (с наличием права insert'a в неё).
На самом же деле всё проще: ни таблиц, никаких прав ни на что не нужно. Вообще.
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37926317
SQL Bigot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидSQL Bigot,
Но там все ведут речь о вставке в какую-то существующую таблицу (с наличием права insert'a в неё).


Нет, там artemana показал решение - триггер на системную таблицу, после которого бесправные юзеры не могут создавать объекты БД.
Как там дела у этого триггера с временными блобами - не скажу, надо тестить, но от создания, например, обычных таблиц - он защищает.
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37926336
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL Bigot,

дык я ж говорю: мне для того, чтобы БД стала расти, совсем не требуются таблицы. И права вообще никакие не нужны.
"Дайте мне право CONNECT'a и я переверну Землю" (~С)
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37926462
Микросекунда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид пишет:

> дык я ж говорю: мне для того, чтобы БД стала расти, совсем не требуются
> таблицы. И права вообще никакие не нужны. "Дайте мне право CONNECT'a и я
> переверну Землю" (~С)

не надо даже системных таблиц
Код: sql
1.
execute block as declare v blob sub_type text; begin v='123'; while(1=1) do v=v||v; end


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37928451
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоиддык я ж говорю: мне для того, чтобы БД стала расти, совсем
не требуются таблицы. И права вообще никакие не нужны.
"Дайте мне право CONNECT'a и я переверну Землю" (~С)
Интересно, сколько времени нужно для приобретения этого понимания...
Раньше мне казалось, что это понимание должно придти через
месяц-другой после знакомства с СУБД, теперь вот не уверен уже.

Завалю сервак одним запросом на спор. (с) кажется, Дед
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37928470
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамсколько времени нужно для приобретения этого понимания...да я особо и не искал ответа на этот вопрос ("как завалить сервер") - так, само по себе вдруг получилось :-)
Но согласись, что всё-таки совсем не айс, когда простой юзер может делать такую гадость, даже не обращаясь к таблицам.
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37928474
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидНо согласись, что всё-таки совсем не айс, когда простой юзер
может делать такую гадость, даже не обращаясь к таблицам.У тебя сегодня день отдыха? :) Ты баянишь баяном, ибо ты же спрашивал
это не так давно (с год назад или около того). Да, не айс, да, не защититься.
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37928486
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамДа, не айс, да, не защититься.ладно. надеюсь, что когда-нибудь (в 3-шке ?) хоть какая-то защита уже будет.
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #37928492
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вряд ли. Можно почти уверенно сказать "никогда".
Превентивно не защиться, а постфактум - это уже
не защита, а "меры по ликвидации".
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #38456916
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже озаботился данным вопросом, посмотрел решение с триггером before insert на RDB$relations, и удивился: раз уж такой способ работает, почему insert into RDB$relations, вызываемый командой create, игнорирует уровень доступа к этой таблице?
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #38457110
паранойа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fr0sT-Brutalраз уж такой способ работает ...
Работает? Проверял?
...
Рейтинг: 0 / 0
Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
    #38457464
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
паранойаFr0sT-Brutalраз уж такой способ работает ...
Работает? Проверял?
Вчера один раз вроде сработало, потом перестало - но был уже вечер, подумал, что это у меня где-то косяк. Сегодня на свежую голову еще поковыряю.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не давать юзеру создавать объекты (таблицы, вьюхи, генераторы етц). Как ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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