Linux Labs

Веб-стек / Ступень 7 из 9

Подключение, роль и pg_hba

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 3 из 7 · на машине · 5 мин

Файл правил pg_hba.conf

Прочитаешь правила своего сервера и найдёшь строку, которая пускает crm.

Где лежит файл, знает сам сервер: sudo -u postgres psql -c 'SHOW hba_file' печатает /etc/postgresql/16/main/pg_hba.conf. Читать его может только postgres, поэтому — через sudo. Комментарии и пустые строки уберёт grep:

bash
sudo grep -Ev '^(#|$)' /etc/postgresql/16/main/pg_hba.conf

Каждая строка — пять полей:

Поле В строке crm Что значит
тип host TCP; local — unix-сокет на этой машине
база crm куда входят; all — в любую
роль crm кто входит; all — любая роль
адрес 127.0.0.1/32 откуда; /32 — ровно один адрес
метод scram-sha-256 как проверить: пароль

Строки local с методом peer пускают без пароля. Это peer-проверка: сервер спрашивает у Linux имя пользователя и пускает в роль с тем же именем. Поэтому sudo -u postgres psql входит, а psql -d shop от student — нет: роли student на сервере нет.

Сервер читает строки сверху вниз и берёт первую, где совпали тип, база, роль и адрес. Её метод и решает: scram-sha-256 спросит пароль, reject откажет сразу — pg_hba.conf rejects connection. Строки ниже первой совпавшей сервер не смотрит.

Проверь себя 1 вопрос

В pg_hba.conf две строки, одна под другой. crm входит в базу crm с 127.0.0.1 с верным паролем. Что будет?

host all all 127.0.0.1/32 scram-sha-256
host crm crm 127.0.0.1/32 reject

  • Строка есть: all all с адреса 127.0.0.1/32 совпадает с любой базой и ролью.

  • Строки друг другу не мешают: сервер не ищет противоречий. Не принимает он файл, только если не может разобрать строку.

  • До reject сервер не дойдёт: первой совпала строка host all all … scram-sha-256, она и спросила пароль.

Сервер берёт первую строку, где совпали тип, база, роль и адрес. Здесь это host all all 127.0.0.1/32 scram-sha-256: пароль верный — crm входит, а reject ниже не читается. Чтобы запрет работал, его ставят выше разрешения.

Главное в шаге

  • Путь к файлу правил печатает SHOW hba_file; читать и править его — через sudo.
  • Строка правила — тип, база, роль, адрес и метод; local — сокет, host — TCP.
  • Решает первая совпавшая строка; reject в ней — отказ, даже если ниже есть разрешение.
Ubuntu 24.04
Загрузка…