Предоставление прав на postgresql базе данных другому пользователю

Вероятно, можно обойтись без дополнительного экземпляра оболочки при помощи JOB CONTROL в текущей оболочке. Это документируется в страницу справочника bash(1).

можно просто приостановить задачу с помощью Ctrl + Z последовательность по умолчанию, хотя это может быть настроено в терминале по-другому, проверьте вывод stty -a:

$ stty -a | grep susp
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;

можно проверить задания путем издания jobs:

# jobs
[1]   Stopped                 journalctl -f
[2]-  Stopped                 vim /etc/hosts
[3]+  Stopped                 tail -f /var/log/firewalld

Приносят одному из них к переднему плану:

$ fg %3

Или резюме это в фоновом режиме:

$ bg %2

Этот метод не имеет многих преимуществ screen или tmux, но может быть одинаково полезным в некоторых ситуациях.

4
задан 30 November 2012 в 13:12
1 ответ

Не пытайтесь дублировать наборы прав подобным образом, это станет кошмаром для руководства. Используйте роли и наследование.

Вместо этого создайте РОЛЬ (группа) и сделайте обоих пользователей членами этой роли. Предоставьте роли необходимые права и владение любыми необходимыми объектами, и пользователи автоматически унаследуют эти права доступа.

Чтобы осуществить переход, либо:

  • Превратите существующего пользователя в общую роль, переименовав его и отбросив его ВХОД вправо, превратив его из роли входа (пользователя) в роль (группу) без входа в систему, затем создайте нового пользователя с исходным именем; или

  • Вручную GRANT новой роли все необходимые права, используя GRANT ... ON DATABASE , GRANT ... ON SCHEMA , ПРЕДОСТАВЛЕНИЕ ... НА ВСЕХ ТАБЛИЦАХ СХЕМЫ и т. Д.

Вот демонстрация первого подхода. Допустим, у нас есть исходный пользователь с именем test , владеющий таблицей и некоторыми другими грантами:

regress=# CREATE USER test WITH PASSWORD 'original user pw';
CREATE ROLE
regress=# CREATE TABLE testtab(x integer);
CREATE TABLE
regress=# ALTER TABLE testtab OWNER TO test;
ALTER TABLE

Мы можем преобразовать его в общую роль и создать нового пользователя с тем же именем:

regress=# ALTER ROLE test RENAME TO test_group;
NOTICE:  MD5 password cleared because of role rename
ALTER ROLE
regress=# ALTER ROLE test_group NOLOGIN;
ALTER ROLE
regress=# CREATE USER test IN GROUP test_group PASSWORD 'original user pw';
CREATE ROLE

Пока поскольку вы устанавливаете тот же пароль, пользователь не заметит разницы.

Теперь вы можете создать нового пользователя и добавить его к той же роли, предоставив ему тот же доступ, что и исходный тестовый пользователь до того, как вы превратили его в роль test_group . В этом случае я использую отдельные шаги для создания пользователя, а затем предоставления ему членства в роли; Эффект такой же, как и выше, я просто показываю вам два разных способа сделать это:

7
ответ дан 3 December 2019 в 02:59

Теги

Похожие вопросы