LINUX.ORG.RU
ФорумAdmin

Debian Stable 7.4 - как делать бекапы в PostgreSQL? (проблема с пользователем postgres)

 ,


1

2

Столкнулся сейчас с такой проблемой:

В Debian 7.4 сделана очень хитрая работа с PostgreSQL. А именно - программы pg_dump, pg_dumpall, psql работают только под пользователем postgres.

Проблема в том, что смениться на этого пользователя через команду

su postgres

можно только от пользователя root!

Ни от какого другого системного или обычного пользователя переключиться на пользователя postgres невозможно. Команда «su postgres», запущенная от обычного пользователя, требует пароль, хотя пароля, судя по /etc/shadow у пользователя postgres нет. А при вводе пустого пароля появляется ошибка:

su: Сбой при проверке подлинности

Таким образом неясно, как запускать скрипт бекапа (в котором используются программы pg_dump и ps_dumpall). Ведь для того, чтобы переключиться на postgres, надо сначала переключиться на root.

Вопрос: как же от обычного пользователя переключиться на пользователя postgres? Или как от обычного пользователя таки запустить pg_dump и ps_dumpall?

★★★★★

Последнее исправление: maxcom (всего исправлений: 3)

Ответ на: комментарий от anonymous

Забить пароль для postgres не вариант?

А будет ли после этого вообще работать PostgreSQL? Автостартовать при загрузке?

А можно ли будет после задания пароля обратно сбросить его на пустой?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

А будет ли после этого вообще работать PostgreSQL? Автостартовать при загрузке?

Не знаю.

А можно ли будет после задания пароля обратно сбросить его на пустой?

passwd -d user

anonymous
()

открой для себя startproc

MikeDM ★★★★★
()

Вопрос: как же от обычного пользователя переключиться на пользователя postgres?

С помощью sudo.

Или как от обычного пользователя таки запустить pg_dump и ps_dumpall?

Настроить роли, права и аутентификацию в постгресе.

Legioner ★★★★★
()

как же от обычного пользователя переключиться на пользователя postgres?

1. Задать исполняемому файлу атрибут SetUID. Но так делать не надо, потому что кто угодно сможет выполнять эту команду от постгреса
2. Дать пользователю в sudoers делать «su postgres -c pg_dump» без ввода пароля. Уже лучше, но всё равно костыли

как от обычного пользователя таки запустить pg_dump и ps_dumpall?

Завести в постгресе пользователя с таким именем, дать ему права супер-админа, в pg_hba.conf разрешить ему аутентификавцию local. Это если системное имя пользователя и имя в постгресе совпадает, то пустит автоматом.

selivan ★★★
()
Ответ на: комментарий от Legioner

Определяемся с терминами. user - обычный пользователь.


как же от обычного пользователя переключиться на пользователя postgres?

С помощью sudo.

То есть, если переключение через su с user на postgres заблокировано, то через sudo таки можно запустить команду от пользователя postgres, находясь под user? Для этого достаточно поправить /etc/sudoers?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

То есть, если переключение через su с user на postgres заблокировано, то через sudo таки можно запустить команду от пользователя postgres, находясь под user? Для этого достаточно поправить /etc/sudoers?

Да. sudo -u postgres /path/script.sh например запустит script.sh от имени пользователя postgres, если это разрешено в sudoers.

Legioner ★★★★★
()

Или как от обычного пользователя таки запустить pg_dump и ps_dumpall?

backup

Ручной бэкап? Да ты затейник.

anonymous
()

root@main#lsb_release -a Distributor ID: Debian Description: Debian GNU/Linux 7.5 (wheezy) Release: 7.5 Codename: wheezy

root@main:cat /var/lib/pgsql/data/pg_hba.conf

# TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident host all all 0.0.0.0/0 md5

При таком раскладе: local all all trust пароль не просит. Правда, не знаю насколько это безопастно, постгрес этерсофтовский 9.0

kd75
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.