From 32142e2a604810d334e39f0986de0dfb646f4ffc Mon Sep 17 00:00:00 2001 From: Bruce Momjian <bruce@momjian.us> Date: Thu, 26 Aug 2004 16:50:05 +0000 Subject: [PATCH] Update documentation to prefer CIDR format for pg_hba.conf and use new CIDR column in examples first. --- doc/src/sgml/client-auth.sgml | 100 +++++++++++++-------------- src/backend/libpq/pg_hba.conf.sample | 7 +- 2 files changed, 50 insertions(+), 57 deletions(-) diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml index d93e03f8e5f..2597116dbf4 100644 --- a/doc/src/sgml/client-auth.sgml +++ b/doc/src/sgml/client-auth.sgml @@ -1,5 +1,5 @@ <!-- -$PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.65 2004/03/23 01:23:48 tgl Exp $ +$PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.66 2004/08/26 16:50:05 momjian Exp $ --> <chapter id="client-authentication"> @@ -86,12 +86,12 @@ $PostgreSQL: pgsql/doc/src/sgml/client-auth.sgml,v 1.65 2004/03/23 01:23:48 tgl A record may have one of the seven formats <synopsis> local <replaceable>database</replaceable> <replaceable>user</replaceable> <replaceable>authentication-method</replaceable> <optional><replaceable>authentication-option</replaceable></optional> +host <replaceable>database</replaceable> <replaceable>user</replaceable> <replaceable>CIDR-address</replaceable> <replaceable>authentication-method</replaceable> <optional><replaceable>authentication-option</replaceable></optional> +hostssl <replaceable>database</replaceable> <replaceable>user</replaceable> <replaceable>CIDR-address</replaceable> <replaceable>authentication-method</replaceable> <optional><replaceable>authentication-option</replaceable></optional> +hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <replaceable>CIDR-address</replaceable> <replaceable>authentication-method</replaceable> <optional><replaceable>authentication-option</replaceable></optional> host <replaceable>database</replaceable> <replaceable>user</replaceable> <replaceable>IP-address</replaceable> <replaceable>IP-mask</replaceable> <replaceable>authentication-method</replaceable> <optional><replaceable>authentication-option</replaceable></optional> hostssl <replaceable>database</replaceable> <replaceable>user</replaceable> <replaceable>IP-address</replaceable> <replaceable>IP-mask</replaceable> <replaceable>authentication-method</replaceable> <optional><replaceable>authentication-option</replaceable></optional> hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <replaceable>IP-address</replaceable> <replaceable>IP-mask</replaceable> <replaceable>authentication-method</replaceable> <optional><replaceable>authentication-option</replaceable></optional> -host <replaceable>database</replaceable> <replaceable>user</replaceable> <replaceable>IP-address</replaceable>/<replaceable>IP-masklen</replaceable> <replaceable>authentication-method</replaceable> <optional><replaceable>authentication-option</replaceable></optional> -hostssl <replaceable>database</replaceable> <replaceable>user</replaceable> <replaceable>IP-address</replaceable>/<replaceable>IP-masklen</replaceable> <replaceable>authentication-method</replaceable> <optional><replaceable>authentication-option</replaceable></optional> -hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> <replaceable>IP-address</replaceable>/<replaceable>IP-masklen</replaceable> <replaceable>authentication-method</replaceable> <optional><replaceable>authentication-option</replaceable></optional> </synopsis> The meaning of the fields is as follows: @@ -196,19 +196,23 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> </varlistentry> <varlistentry> - <term><replaceable>IP-address</replaceable></term> - <term><replaceable>IP-mask</replaceable></term> + <term><replaceable>CIDR-address</replaceable></term> <listitem> <para> - These two fields contain IP address and mask values in standard - dotted decimal notation. (IP addresses can only be specified - numerically, not as domain or host names.) Taken together they - specify the client machine IP addresses that this record - matches. The precise logic is that -<programlisting> -(<replaceable>actual-IP-address</replaceable> xor <replaceable>IP-address-field</replaceable>) and <replaceable>IP-mask-field</replaceable> -</programlisting> - must be zero for the record to match. + specifies the client machine IP addresses that this record + matches. It contains an IP address in standard dotted decimal + notation and a CIDR mask length. (IP addresses can only be + specified numerically, not as domain or host names.) For example, + an IPv4 CIDR mask of 8 is equivalent to an IP mask of 255.0.0.0, + an IPv6 CIDR mask of 64 is equivalent to an IP mask of + ffff:ffff:ffff:ffff::. A IPv4 CIDR mask of 32 is used for single + hosts. + </para> + + <para> + A typical CIDR address is <literal>172.20.143.89/32</literal>. + There should be no white space between the IP address, the + <literal>/</literal>, and the CIDR mask length. </para> <para> @@ -229,26 +233,17 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> </varlistentry> <varlistentry> + <term><replaceable>IP-address</replaceable></term> <term><replaceable>IP-masklen</replaceable></term> <listitem> <para> - This field may be used as an alternative to the - <replaceable>IP-mask</replaceable> notation. It is an integer - specifying the number of high-order bits to set in the mask. - The number must be between 0 and 32 (in the case of an IPv4 - address) or 128 (in the case of an IPv6 address) inclusive. 0 - will match any address, while 32 (or 128, respectively) will - match only the exact host specified. The same matching logic - is used as for a dotted notation - <replaceable>IP-mask</replaceable>. - </para> - - <para> - There must be no white space between the - <replaceable>IP-address</replaceable> and the - <literal>/</literal> or the <literal>/</literal> and the - <replaceable>IP-masklen</replaceable>, or the file will not be - parsed correctly. + This may be used as an alternative to the + <replaceable>CIDR-address</replaceable> notation. Instead of + specifying the mask length, the actual mask is specified in a + separate column. For example, 255.0.0.0 represents a IPv4 CIDR + mask length of 8, and 255.255.255.255 represents a CIDR mask + length of 32. The same matching logic is used as for a dotted + notation <replaceable>IP-mask</replaceable>. </para> <para> @@ -458,36 +453,36 @@ hostnossl <replaceable>database</replaceable> <replaceable>user</replaceable> # any user name using Unix-domain sockets (the default for local # connections). # -# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD -local all all trust +# TYPE DATABASE USER CIDR-ADDRESS METHOD +local all all trust # The same using local loopback TCP/IP connections. # -# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD -host all all 127.0.0.1 255.255.255.255 trust +# TYPE DATABASE USER CIDR-ADDRESS METHOD +host all all 127.0.0.1/32 trust -# The same as the last line but using a CIDR mask +# The same as the last line but using a separate netmask column # -# TYPE DATABASE USER IP-ADDRESS/CIDR-mask METHOD -host all all 127.0.0.1/32 trust +# TYPE DATABASE USER CIDR-ADDRESS METHOD +host all all 127.0.0.1 255.255.255.255 trust # Allow any user from any host with IP address 192.168.93.x to connect # to database "template1" as the same user name that ident reports for # the connection (typically the Unix user name). # -# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD -host template1 all 192.168.93.0 255.255.255.0 ident sameuser +# TYPE DATABASE USER CIDR-ADDRESS METHOD +host template1 all 192.168.93.0/24 ident sameuser -# The same as the last line but using a CIDR mask +# The same as the last line but using a separate netmask column # -# TYPE DATABASE USER IP-ADDRESS/CIDR-mask METHOD -host template1 all 192.168.93.0/24 ident sameuser +# TYPE DATABASE USER CIDR-ADDRESS METHOD +host template1 all 192.168.93.0 255.255.255.0 ident sameuser # Allow a user from host 192.168.12.10 to connect to database # "template1" if the user's password is correctly supplied. # -# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD -host template1 all 192.168.12.10 255.255.255.255 md5 +# TYPE DATABASE USER CIDR-ADDRESS METHOD +host template1 all 192.168.12.10/32 md5 # In the absence of preceding "host" lines, these two lines will # reject all connection from 192.168.54.1 (since that entry will be @@ -495,9 +490,9 @@ host template1 all 192.168.12.10 255.255.255.255 md5 # on the Internet. The zero mask means that no bits of the host IP # address are considered so it matches any host. # -# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD -host all all 192.168.54.1 255.255.255.255 reject -host all all 0.0.0.0 0.0.0.0 krb5 +# TYPE DATABASE USER CIDR-ADDRESS METHOD +host all all 192.168.54.1/32 reject +host all all 0.0.0.0/0 krb5 # Allow users from 192.168.x.x hosts to connect to any database, if # they pass the ident check. If, for example, ident says the user is @@ -505,8 +500,8 @@ host all all 0.0.0.0 0.0.0.0 krb5 # connection is allowed if there is an entry in pg_ident.conf for map # "omicron" that says "bryanh" is allowed to connect as "guest1". # -# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD -host all all 192.168.0.0 255.255.0.0 ident omicron +# TYPE DATABASE USER CIDR-ADDRESS METHOD +host all all 192.168.0.0/16 ident omicron # If these are the only three lines for local connections, they will # allow local users to connect only to their own databases (databases @@ -515,7 +510,7 @@ host all all 192.168.0.0 255.255.0.0 ident omicro # $PGDATA/admins contains a list of user names. Passwords are required in # all cases. # -# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD +# TYPE DATABASE USER CIDR-ADDRESS METHOD local sameuser all md5 local all @admins md5 local all +support md5 @@ -959,3 +954,4 @@ FATAL: database "testdb" does not exist </sect1> </chapter> + diff --git a/src/backend/libpq/pg_hba.conf.sample b/src/backend/libpq/pg_hba.conf.sample index 2f061b27b4e..b0d1895590f 100644 --- a/src/backend/libpq/pg_hba.conf.sample +++ b/src/backend/libpq/pg_hba.conf.sample @@ -28,11 +28,8 @@ # # CIDR-ADDRESS specifies the set of hosts the record matches. # It is made up of an IP address and a CIDR mask that is an integer -# between 0 and 32 (IPv6) or 128(IPv6) inclusive, that specifies -# the number of significant bits in the mask, e.g. an IPv4 CIDR mask -# of 8 is equivalent to an IP mask of 255.0.0.0, an IPv6 CIDR mask -# of 64 is equivalent to an IP mask of ffff:ffff:ffff:ffff::. A -# IPv4 CIDR mask of 32 is used for single hosts. Also, you can use a +# (between 0 and 32 (IPv6) or 128(IPv6) inclusive) that specifies +# the number of significant bits in the mask Also, you can use a # separate IP address and netmask to specify the set of hosts. # # METHOD can be "trust", "reject", "md5", "crypt", "password", -- GitLab