LINUX.ORG.RU
решено ФорумAdmin

PostgreeSQL и OpenSUSE

 , ,


0

1

Я видимо совсем отупел и за пять лет возни с Microsoft SQL Server и MySQL всё забыл про PostgreSQL и вообще про администрирование Linux-ов. Имею в наличии OpenSUSE Leap 15.1 и PostgreSQL из стандартной репы. Это машина разработчика и соответственно много мороки мне не нужно, просто хочу уметь из под пользователя работать с базой данных (создать пару десятков таблиц и набить из данными, фигня вопрос, структура уже есть, как и данные), но не тут то было, засада в том, что доступ к БД адекватно получить не пойму как. Есть такая вики, я не возился с репами, мне и той СУБД что в стандартной репе за глаза. Всё хорошо до момента, когда просят сделать

su - postgres
Тут выскакивает засада, что пользователь postgres с отключенным паролем, а мой пароль sudo юзера не принимается. Путём быстрого гугления было увидено много страшных вещей, а именно криворукие админы предлагают через
passwd postgres
За что надо больно-больно бить по рукам, если мне не изменяет память и тут не брешут. С другой стороны sudo su тоже не очень хорошая практика, как и
sudo -i
с последующим входом через
sudo -u postgres psql postgres
Собственно вопрос, а как это сейчас максимально правильно делать? Я то уже наляпал через sudo -i и второе sudo, но блин, это как-то очень уж топорно...

★★★★★

Тут выскакивает засада, что пользователь postgres с отключенным паролем, а мой пароль sudo юзера не принимается

А ты это от рута делаешь же? Только недавно настраивал и сейчас перепровил - все работает.

gutaper ★★★★★
()

Проще всего включить md5 авторизацию и вводить пароль или сохранить его в каком-то там файле в хомяке.

А так - ну можно через sudo только sudoers настрой как тебе нужно и всё.

Legioner ★★★★★
()

А вообеще если тебе не прям секурно надо, дай своему пользователю права подключаться и роль админа. И ходи по своему паролю, а учетку postgres оставь на черный день.

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

Проще всего включить md5 авторизацию и вводить пароль или сохранить его в каком-то там файле в хомяке.

На машине разработчика проще подключаться без пароля через unix-сокет.

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

Я sudo не использую. Разок зашел как «su -», настроил все и норм.

gutaper ★★★★★
()

От рута боишься пару команд выполнить?

В /etc/sudoers.d/ кладёшь файлик, указываешь своего юзера, указываешь юзера постгреса, указываешь команду. Будет работать от юзера.

Проводить начальную настройку системы от рута более чем допустимо. Профакапиться ты можешь и выполняя васякую ахинею через sudo.

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

Тут слишком ярый хейт докера в последние пару дней, а так бы я тоже самое посоветовал.

Нет никакого смысла ставить для разработки сервисы локально. Запустил, когда нужно, грохнул, когда не нужно, по необходимости нужное примонтировал на хост.

WitcherGeralt ★★
()

всегда делал так:

sudo -i -u postgres
drsm ★★
()
Ответ на: комментарий от targitaj

ТС-у: После этого, кстати, можно сделать пользователя - владельца схемы, и от него создавать базу. А уже он будет создавать и рулить «конечными пользователями» применительно к БД.

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

В смысле, от postgres логинишься в psql и там учётки

targitaj ★★★★★
()

А зачем так сложно, чет понять не могу..ты из любой учетки можешь делать

psql -Upostgres

и в hba прописать возможность доступа к постгресовому пользовалю от all, к примеру.

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

Написали же тебе

и в hba прописать возможность доступа к постгресовому пользовалю от all, к примеру

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

Дорогой анонимус, я уже решил проблему. Я знаю как она решается. Вопрос в другом, почему sudo или su надо делать от sudo или su

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

Ты странный. Описываешь проблему, начинаешь рассказывать про «плохое» решение, тебе говорят как делать правильно, но ты начинаешь объяснять, что решаешь не основную проблему, а решаешь проблему, вызванную неверным решением.

Чтобы конектиться в постгрес не надо прыгать между пользователями, это очень странное решение. Специально для этого в постгрес есть довольно гибкий инструмент pg_hba, где ты можешь настроить всё, что надо и не нарушать безопасность своей системы.

v9lij ★★★★★
()
Последнее исправление: v9lij (всего исправлений: 1)
Ответ на: комментарий от v9lij

Так, ты тоже не понял о чём оставшийся вопрос. Ладно. Давай по другому его задам.

В чём разница между

su - postgres от юзера и
su - postgres от рута
разница, оказывается есть. В первом случае не пустит, во втором пустит.

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

WTF?

drsm@L7480:~$ psql -d postgres -c 'select version()' 
psql: error: could not connect to server: FATAL:  role "drsm" does not exist
drsm@L7480:~$ sudo -u postgres psql -d postgres -c 'select version()'
                                                              version                                                              
-----------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 10.13 (Ubuntu 10.13-1.pgdg18.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit
(1 row)

drsm@L7480:~$ sudo su postgres -c "psql -d postgres -c 'select version()'"
                                                              version                                                              
-----------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 10.13 (Ubuntu 10.13-1.pgdg18.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit
(1 row)

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

Если ты о запросе пароля, то этим вообще PAM занимается. У тебя в /etc/pam.d/su скорее всего есть строчка auth sufficient pam_rootok.so

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

Вот именно WTF, потому как из коробки у меня первый вариант (а у тебя второй) вопил про то, что

psql: ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (Peer)
Ну и логика понятна, пользователь postgres есть, но он без пароля, и su/sudo с любыми флагами будет запрашивать его пароль, а во втором случае нет. Вот только какого фига? Ведь если у злоумышленника есть пароль рута, то ему никто не помешает поправить pg_hba как угодно...

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

А зачем такое поведение? Оно что-то защищает? Если есть пароль рута, то всё, с системой можно делать что угодно. Смысл 2 раза sudo/su вводить?

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

короче смотри:

"postgres" не прошёл проверку подлинности (Peer) это значит что не сработала peer авторизация:

тут мы до нее не дошли, тк нет такого юзера в базе:

drsm@L7480:~$ psql -d postgres -c 'select version()' 
psql: error: could not connect to server: FATAL:  role "drsm" does not exist

а тут она обломалась в обоих случаях:

drsm@L7480:~$ psql -U postgres -d postgres -c 'select version()'
psql: error: could not connect to server: FATAL:  Peer authentication failed for user "postgres"
drsm@L7480:~$ sudo psql -U postgres -d postgres -c 'select version()'
psql: error: could not connect to server: FATAL:  Peer authentication failed for user "postgres"

для того чтобы peer сработал должны совпасть юзернеймы от кого запущен процесс коннектящийся к базе с юзером (базы) который коннектится.

надо запускать psql от юзера postgres:

  1. от пользователя sudo -u postgres psql
  2. от рута su postgres -c psql или вариант выше тоже будет работать.

да и, sudo запрашивает пароль текущего пользователя (если не рут), а не того на которого переключаемся. su запрашивает пароль от пользователя (если не рут) на которого переключаемся.

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

sudo -u postgres psql

Я тоже так думал, не помогало, пока не прописал явно в pg_hba. Я хрен знает что в OpenSUSE намутили. В ubuntu таких проблем не видел в гугле. Если не забуду, послезавтра я проверю, вдруг я что-то не так набирал...

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

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

я в этом сомневаюсь (если в первом случае у тебя точно логин прошел, а не какойнибудь pam поблочил это).

Дело в том, что у тебя в pg_hba прописан дефолтный режект для логина в суперпользователя postgres внутрь базы. Поэтому тебя не пускает от твоего личного пользователя через psql -Upostgres, но пускает через локальный логин в системного пользователя postgres и оттуда уже psql.

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

Ну это послезавтра будет, может со скринкастом на ютубчике. Сегодня/завтра не буду ничего трогать, мне на 2 дня нагрузка появилась.

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

Конечно долго у меня руки доходили, но как и обещал видосик готов (за OBS-ку и ШГ прошу не ругать, ШГ эталонное, тем более после пожатия вообще кошмар). Звука нет, можно не искать. Если ссылка не нужна как пруф, то выкладываю тут текст из консольки.

user@linux-4bu9:~> whoami
user
user@linux-4bu9:~> sudo -u postgres psql postgres
[sudo] пароль для postgres: 
Попробуйте ещё раз.
[sudo] пароль для postgres: 
sudo: 1 incorrect password attempt
user@linux-4bu9:~> sudo -i
[sudo] пароль для root: 
linux-4bu9:~ # whoami
root
linux-4bu9:~ # sudo -u postgres psql
could not change directory to "/root": Permission denied
psql (10.12)
Type "help" for help.

postgres=# 
Любопытно, почему в первом случае не пускает, а во втором пускает.

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

Дебильный вопрос.
Если ты root - то нахрена у тебя спрашивать пароль пользователя, если ты ему и так сможешь его поменять.
А если ты какой-то Вася Пупкин в системе - если тебе не разрешено, нехрен делать

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

Вопрос и правда дебильный. Потому как через пароль аккаунта user путём использования пароля пользователя user и sudo -i я и стал тем самым рутом. А вот почему просто через sudo -u postgres psql postgres не запрашивает пароль пользователя user, вопрос. Ну или почему это не сделали...

peregrine ★★★★★
() автор топика
Последнее исправление: peregrine (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.