Informix - Default permissions when creating table

Refresh

March 2019

Views

73 time

1

So, Im using Informix DB engine to create my database. I have noticed something peculiar I cannot find information about in the official IBM page.

If you check the definition of my table, there is a line at the end saying :

revoke all on "gabriel.barrios".proveedores from "public" as "gabriel.barrios";

I did not write that, I simply defined the table attributes. But it seems as the engine itself is adding that.

Is this the case?

And if it is, how can I cahnge this default behaviour.

Additionally, could someone clarify ths line's output :

{ TABLE "gabriel.barrios".proveedores row size = 110 number of columns = 4 index size = 9 }

[[email protected] ~]$ dbschema -d practico_matias_barrios  -t Proveedores

DBSCHEMA Schema Utility       INFORMIX-SQL Version 11.70.UC8W1

{ TABLE "gabriel.barrios".proveedores row size = 110 number of columns = 4 index size = 9 }

create table "gabriel.barrios".proveedores
  (
    id serial not null ,
    nombre varchar(50) not null constraint "gabriel.barrios".proveedor_nombre_vacio,
    situacion integer not null constraint "gabriel.barrios".proveedor_situacion_vacio,
    ciudad varchar(50) not null constraint "gabriel.barrios".proveedor_ciudad_vacio,
    primary key (id)  constraint "gabriel.barrios".proveedor_clave_primaria
  );

revoke all on "gabriel.barrios".proveedores from "public" as "gabriel.barrios";

1 answers

2

Informix поведение по умолчанию заключается в предоставлении привилегии PUBLICроли.

В соответствии с документацией ( привилегии уровня таблицы ):

В ANSI-совместимую базу данных, только владелец таблицы имеет каких - либо привилегий. В других базах данных, сервер базы данных, как часть создания таблицы, автоматически предоставляет для PUBLIC всех привилегий таблицы , кроме Альтера и ссылок, если NODEFDAC переменной окружении не установлен на «да» , чтобы удержать все привилегии таблицы от PUBLIC . Когда вы позволяете сервер базы данных автоматически предоставить все привилегии таблицы для PUBLIC , недавно созданная таблица доступна любому пользователю с привилегией Connect. Если это не то , что вы хотите (если есть пользователи с Connect привилегии , которые не должны быть в состоянии получить доступ к этой таблице), необходимо отменить все привилегии на стол из PUBLIC После создания таблицы.

Что ваше видят это dbschemaвсегда отменив привилегии от PUBLICна создании таблицы вывода , а затем добавить их на выходе привилегии.

$ dbschema -d mydatabase -t default_privileges 

DBSCHEMA Schema Utility       INFORMIX-SQL Version 12.10.FC12

{ TABLE "myuser".default_privileges row size = 4 number of columns = 1 index size = 0 }

create table "myuser".default_privileges
  (
    id integer
  );

revoke all on "myuser".default_privileges from "public" as "myuser";

Используя dbschemaвывод привилегий и фильтрацию по таблице default_privileges:

$ dbschema -d mydatabase -p all | grep default_privileges

grant select on "myuser".default_privileges to "public" as "myuser";
grant update on "myuser".default_privileges to "public" as "myuser";
grant insert on "myuser".default_privileges to "public" as "myuser";
grant delete on "myuser".default_privileges to "public" as "myuser";
grant index on "myuser".default_privileges to "public" as "myuser";