Pg hba conf где находится этот файл

Pg hba conf где находится этот файл

Обычный формат файла pg_hba.conf представляет собой набор записей, по одной в строке. Пустые строки игнорируются, как и любой текст комментария после знака # . Записи не продолжаются на следующей строке. Записи состоят из некоторого количества полей, разделённых между собой пробелом и/или tabs. В полях могут быть использованы пробелы, если они взяты в кавычки. Если в кавычки берётся какое-либо зарезервированное слово в поле базы данных, пользователя или адресации (например, all или replication ), то слово теряет своё особое значение и просто обозначает базу данных, пользователя или сервер с данным именем.

Каждая запись обозначает тип соединения, диапазон IP-адресов клиента (если он соотносится с типом соединения), имя базы данных, имя пользователя, и способ аутентификации, который будет использован для соединения в соответствии с этими параметрами. Первая запись с соответствующим типом соединения, адресом клиента, указанной базой данных и именем пользователя применяется для аутентификации. Процедур « fall-through » или « backup » не предусмотрено: если выбрана запись и аутентификация не прошла, последующие записи не рассматриваются. Если же ни одна из записей не подошла, в доступе будет отказано.

Запись может быть сделана в одном из семи форматов:

Значения полей описаны ниже:

Управляет подключениями через Unix-сокеты. Без подобной записи подключения через Unix-сокеты невозможны. host

Управляет подключениями, устанавливаемыми по TCP/IP. Записи host соответствуют подключениям с SSL и без SSL .

Примечание

Удалённое соединение по TCP/IP невозможно, если сервер запущен без определения соответствующих значений для параметра конфигурации listen_addresses, поскольку по умолчанию система принимает подключения по TCP/IP только для локального адреса замыкания localhost .

Управляет подключениями, устанавливаемыми по TCP/IP с применением шифрования SSL .

Чтобы использовать эту возможность, сервер должен быть собран с поддержкой SSL . Более того, механизм SSL должен быть включён параметром конфигурации ssl (подробнее об этом в Разделе 17.9). В противном случае запись hostssl не играет роли (не считая предупреждения о том, что ей не будут соответствовать никакие подключения). hostnossl

Этот тип записей противоположен hostssl , ему соответствуют только подключения по TCP/IP без шифрования SSL . база

Определяет, каким именам баз данных соответствует эта запись. Значение all определяет, что подходят все базы данных. Значение sameuser определяет, что данная запись соответствует только, если имя запрашиваемой базы данных совпадает с именем запрашиваемого пользователя. Значение samerole определяет, что запрашиваемый пользователь должен быть членом роли с таким же именем, как и у запрашиваемой базы данных. ( samegroup — это устаревший, но допустимый вариант значения samerole .) Суперпользователи не становятся членами роли автоматически из-за samerole , а только если они являются явными членами роли, прямо или косвенно, и не только из-за того, что они суперпользователи. Значение replication показывает, что запись соответствует, если запрашивается подключение для физической репликации (имейте в виду, что для таких подключений не выбирается какая-то конкретная база данных). В противном случае это имя определённой базы данных Postgres Pro . Несколько имён баз данных можно указать, разделяя их запятыми. Файл, содержащий имена баз данных, можно указать, поставив знак @ в начале его имени. пользователь

Указывает, какому имени (или именам) пользователя базы данных соответствует эта запись. Значение all показывает, что это подходит всем пользователям. В противном случае это либо имя конкретного пользователя базы данных, либо имя группы, в начале которого стоит знак + . (Напомним, что в Postgres Pro нет никакой разницы между пользователем и группой; знак + означает « совпадение любых ролей, которые прямо или косвенно являются членами роли » , тогда как имя без знака + является подходящим только для этой конкретной роли.) В связи с этим, суперпользователь рассматривается как член роли, только если он явно является членом этой роли, прямо или косвенно, а не только потому, что он является суперпользователем. Несколько имён пользователей можно указать, разделяя их запятыми. Файл, содержащий имена пользователей, можно указать, поставив знак @ в начале его имени. адрес

Указывает адрес (или адреса) клиентской машины, которым соответствует данная запись. Это поле может содержать или имя компьютера, или диапазон IP-адресов, или одно из нижеупомянутых ключевых слов.

Типичные примеры диапазонов адресов IPv4, указанных таким образом: 172.20.143.89/32 для одного компьютера, 172.20.143.0/24 для небольшой и 10.6.0.0/16 для крупной сети. Диапазон адресов IPv6 может выглядеть как ::1/128 для одного компьютера (это адрес замыкания IPv6) или как fe80::7a31:c1ff:0000:0000/96 для небольшой сети. 0.0.0.0/0 представляет все адреса IPv4, а ::0/0 — все адреса IPv6. Чтобы указать один компьютер, используйте длину маски 32 для IPv4 или 128 для IPv6. Опускать замыкающие нули в сетевом адресе нельзя.

Читайте также:  Ауди клуб форум ку5

Запись, сделанная в формате IPv4, подойдёт только для подключений по IPv4, а запись в формате IPv6 подойдёт только для подключений по IPv6, даже если представленный адрес находится в диапазоне IPv4-в-IPv6. Имейте в виду, что записи в формате IPv6 не будут приниматься, если системная библиотека С не поддерживает адреса IPv6.

Вы также можете прописать значение all , чтобы указать любой IP-адрес, samehost , чтобы указать любые IP-адреса данного сервера, или samenet , чтобы указать любой адрес любой подсети, к которой сервер подключён напрямую.

Если определено имя компьютера (всё, что не является диапазоном IP-адресов или специальным ключевым словом, воспринимается как имя компьютера), то оно сравнивается с результатом обратного преобразования IP-адреса клиента (например, обратного DNS-запроса, если используется DNS). При сравнении имён компьютеров регистр не учитывается. Если имена совпали, выполняется прямое преобразование имени (например, прямой DNS-запрос) для проверки, относится ли клиентский IP-адрес к адресам, соответствующим имени. Если двусторонняя проверка пройдена, запись считается соответствующей компьютеру. (В качестве имени узла в файле pg_hba.conf должно указываться то, что возвращается при преобразовании IP-адреса клиента в имя, иначе строка не будет соответствовать узлу. Некоторые базы данных имён позволяют связать с одним IP-адресом несколько имён узлов, но операционная система при попытке разрешить IP-адрес возвращает только одно имя.)

Указание имени, начинающееся с точки ( . ), соответствует суффиксу актуального имени узла. Так, .example.com будет соответствовать foo.example.com (а не только example.com ).

Когда в pg_hba.conf указываются имена узлов, следует добиться, чтобы разрешение имён выполнялось достаточно быстро. Для этого может быть полезен локальный кеш разрешения имён, например, nscd . Вы также можете включить конфигурационный параметр log_hostname , чтобы видеть в журналах имя компьютера клиента вместо IP-адреса.

Это поле применимо только к записям host , hostssl и hostnossl .

Примечание

Пользователи часто задаются вопросом, почему имена серверов обрабатываются таким сложным, на первый взгляд, способом, с разрешением двух имён, включая обратный запрос клиентского IP-адреса. Это усложняет процесс в случае, если обратная DNS-запись клиента не установлена или включает в себя нежелательное имя узла. Такой способ избран, в первую очередь, для повышения эффективности: в этом случае соединение требует максимум два запроса разрешения, один прямой и один обратный. Если есть проблема разрешения с каким-то адресом, то она остаётся проблемой этого клиента. Гипотетически, могла бы быть реализована возможность во время каждой попытки соединения выполнять только прямой запрос для разрешения каждого имени сервера, упомянутого в pg_hba.conf . Но если список имён велик, процесс был бы довольно медленным, а в случае наличия проблемы разрешения у одного имени сервера, это стало бы общей проблемой.

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

Обратите внимание, что такое поведение согласуется с другими популярными реализациями контроля доступа на основе имён, такими как Apache HTTP Server и TCP Wrappers.

Эти два поля могут быть использованы как альтернатива записи IP-адрес / длина-маски . Вместо того, чтобы указывать длину маски, в отдельном столбце указывается сама маска. Например, 255.0.0.0 представляет собой маску C >255.255.255.255 представляет маску CIDR длиной 32 бита.

Эти поля применимы только к записям host , hostssl и hostnossl . метод-аутентификации

Указывает метод аутентификации, когда подключение соответствует этой записи. Варианты выбора приводятся ниже; подробности в Разделе 19.3.

Разрешает безусловное подключение. Этот метод позволяет тому, кто может подключиться к серверу с базой данных Postgres Pro , войти под любым желаемым пользователем Postgres Pro без введения пароля и без какой-либо другой аутентификации. За подробностями обратитесь к Подразделу 19.3.1. reject

Отклоняет подключение безусловно. Эта возможность полезна для « фильтрации » некоторых серверов группы, например, строка reject может отклонить попытку подключения одного компьютера, при этом следующая строка позволяет подключиться остальным компьютерам в той же сети. scram-sha-256

Читайте также:  Candy gc4 1052d 07

Проверяет пароль пользователя, производя аутентификацию SCRAM-SHA-256. За подробностями обратитесь к Подразделу 19.3.2. md5

Проверяет пароль пользователя, производя аутентификацию SCRAM-SHA-256 или MD5. За подробностями обратитесь к Подразделу 19.3.2. password

Требует для аутентификации введения клиентом незашифрованного пароля. Поскольку пароль посылается простым текстом через сеть, такой способ не стоит использовать, если сеть не вызывает доверия. За подробностями обратитесь к Подразделу 19.3.2. gss

Для аутентификации пользователя использует GSSAPI. Этот способ доступен только для подключений по TCP/IP. За подробностями обратитесь к Подразделу 19.3.3. sspi

Для аутентификации пользователя использует SSPI. Способ доступен только для Windows. За подробностями обратитесь к Подразделу 19.3.4. ident

Получает имя пользователя операционной системы клиента, связываясь с сервером Ident, и проверяет, соответствует ли оно имени пользователя базы данных. Аутентификация ident может использоваться только для подключений по TCP/IP. Для локальных подключений применяется аутентификация peer. За подробностями обратитесь к Подразделу 19.3.5. peer

Получает имя пользователя операционной системы клиента из операционной системы и проверяет, соответствует ли оно имени пользователя запрашиваемой базы данных. Доступно только для локальных подключений. За подробностями обратитесь к Подразделу 19.3.6. ldap

Проводит аутентификацию, используя сервер RADIUS. За подробностями обратитесь к Подразделу 19.3.8 cert

Проводит аутентификацию, используя клиентский сертификат SSL. За подробностями обратитесь к Подразделу 19.3.9 pam

Проводит аутентификацию, используя службу подключаемых модулей аутентификации (PAM), предоставляемую операционной системой. За подробностями обратитесь к Подразделу 19.3.10. bsd

Проводит аутентификацию, используя службу аутентификации BSD, предоставляемую операционной системой. За подробностями обратитесь к Подразделу 19.3.11.

После поля метод-аутентификации может идти поле (поля) вида имя = значение , определяющее параметры метода аутентификации. Подробнее о параметрах, доступных для различных методов аутентификации, рассказывается ниже.

Помимо описанных далее параметров, относящихся к различным методам, есть один общий параметр аутентификации clientcert , который можно задать в любой записи hostssl . Если он равен 1 , клиент должен представить подходящий (доверенный) сертификат SSL, в дополнение к другим требованиям метода проверки подлинности.

воскресенье, 20 января 2013 г.

19.1. Файл pg_hba.conf

Такая запись будет соответствовать соединениям, производимым через Unix-domain socket. Если записи такого типа нет, то подключения через Unix-domain socket будут запрещены.

Эта запись ведёт себя обратным образом от hostssl, ей подходят только те записи, которые делаются через TCP/IP и не используют SSL.

Определяет, какое / какие имена БД будут соответствовать этой записи. all означает, что подходит любая БД. Значение sameuser означает, что запись будет походить для запросов, где БД имеет то же имя, что и подключающийся пользователь. Значение samerole определяет, запись будет соответствовать случаю, когда подключающийся пользователь будет являться членом роли с именем запрашиваемой БД. (samegroup — устаревший, но всё ещё допустимый аналог samerole.) Значение replication определяет, что запись будет соответствовать случаю подключения для репликации (обратите внимание, что подключения для репликации не определяют конкретную БД). Другими словами, это имя определённой БД PostgreSQL. Можно указать несколько имён БД, разделив их запятыми. Можно указать файл, содержащий имена БД, указав его имя с предварительным знаком @.

Определяет при каком / каких имени пользователя будет происходить совпадение с данной записью. Значение all означает, что запись будет совпадать с любым имененем пользователя. Другими словами, это поле определяет или имя пользователя БД, или имя группы, если перед значением стоит +. (Напомним, что нет реальной разницы между пользователями и группами в PostgreSQL; знак + на самом деле означает "совпадает с любой ролью, которая прямо или не прямо является членом этой роли", тогда как имя без + означает, что совпадение будет только при совпадении именно с этой ролью.) Можно указать несколько имён пользователей, разделив их запятыми. Можно указать файл, содержащий имена пользователей, указав его имя с предварительным знаком @.

Эти поля могут быть использованы как альтернатива нотации бесклассовой адресации. Вместо указания длины маски, можно указать просто маску в отдельной колонке. Например, 255.0.0.0 будет соответствовать длине маске 8, а 255.255.255.255 — длине маски 32.

Эти поля актуальны только для записей host, hostssl и hostnossl.

Определяет метод аутентификации, который будет использован при совпадении с записью. Возможные значения приведены тут, детали — в разделе 19.3
trust
Безусловно разрешает все подключения. Этот метод разрешает любому, кто может подключиться к серверу БД, зайти под любым пользователем PostgreSQL без необходимости предоставить пароль или использования какого-либо ещё способа аутентификации. Более подробно — в разделе 19.3.1.
reject
Безусловно отклоняет подключение. Это полезно для "отфильтровывания" некоторых узлов из группы, например строка reject может запретить конкретному узлу подключение, тогда как следующая строка разрешает подключения для остальных узлов этой сети.
md5
Требует от клиента предоставить md5 шифрованный пароль для аутентификации. Подробнее — в разделе 19.3.2
password
Требует от клиента предоставить незашифрованный пароль для аутентификации. Так как пароль посылается по сети в открытом виде, эта опция не должна использоваться для небезопасных сетей. Подробнее — в разделе 19.3.2
gss
Использует GSSAPI для аутентификации пользователя. Доступно только для TCP/IP подключений. Подробнее — в разделе 19.3.3
sspi
Использует SSPI для аутентификации пользователя. Доступно только для Windows. Подробнее — в разделе 19.3.4
krb5
Использует Kreberos V5 для аутентификации пользователя. Доступно только для TCP/IP подключений. Подробнее — в разделе 19.3.5
ident
Получает имя пользователя ОС клиента, соединяясь с сервером ident на клиенте и проверяет, соответствует ли оно имени пользователя для запрашиваемой БД. Аутентификация ident может использоваться только на TCP/IP соединениях. Когда это значение используется для локальных соединений, то вместо этого используется peer аутентификация. Подробнее — в разделе 19.3.6
peer
Получает имя пользователя ОС из самой ОС и проверяет, соответствует ли оно имени пользователя для запрашиваемой БД. Доступно только для локальных подключений. Подробнее — в разделе 19.3.7
ldap
Аутентификация при помощи сервера LDAP. Подробнее — раздел 19.3.8
radius
Аутентификация при помощи сервера RADIUS. Подробнее — раздел 19.3.9
cert
Аутентификация при помощи SSL сертификата клиента. Подробнее — раздел 19.3.10
pam
Аутентификация при помощи Pluggable Authentication Modules (PAM), предоставляемыми ОC. Подробнее — раздел 19.3.11

После поля auth-method могут быть поля в форме name=value, которые задают опции для метода аутентификации. О доступных опциях для каждого метода — см. ниже

Я хотел бы получить путь к pg_hba.conf из оболочки. Путь варьируется между версиями PostgreSQL. Например, для 8.4 и 9.1:

Читайте также:  Pci ven 8086 dev 0f18 subsys 398617aa

Я пробовал команду pg_config , но, похоже, не содержит этой информации.

Это так, что я могу использовать единую команду для открытия pg_hba.conf и других файлов конфигурации PostgreSQL для редактирования.

Я использую bash.

5 ответов

pg_config предназначен для информации об осложнениях, чтобы помочь расширениям и клиентским программам скомпилировать и связать с PostgreSQL. Он ничего не знает об активных экземплярах PostgreSQL на машине, только двоичные файлы.

pg_hba.conf может отображаться во многих других местах в зависимости от того, как был установлен Pg. Стандартное местоположение — pg_hba.conf в data_directory базы данных (которое может быть в /home , /var/lib/pgsql , /var/lib/postgresql/[version]/ , /opt/postgres/ и т. Д. И т. Д. И т. Д.), Но пользователи и упаковщики могут размещать их там, где им нравится , К сожалению.

Единственные допустимые способы найти pg_hba.conf — спросить исполняемый экземпляр PostgreSQL, где он pg_hba.conf , или задать системный администратор, где он есть. Вы даже не можете рассчитывать на то, где находится datadir, и анализировать postgresql.conf , потому что сценарий инициализации может передать параметр, например -c hba_file=/some/other/path , при запуске Pg.

Что вы хотите сделать, это спросить PostgreSQL:

Эта команда должна запускаться в сеансе суперпользователя, поэтому для сценариев оболочки вы можете написать что-то вроде:

и установите переменные среды PGUSER , PGDATABASE и т. д., чтобы убедиться, что соединение правильно.

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

Другой вариант — посмотреть на вывод команды ps и посмотреть, есть ли там файл каталога сообщений -D , например

Ссылка на основную публикацию
Adblock detector