From b4c315ba9e46167ded6be89558787d0cdca50f6b Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <peter_e@gmx.net> Date: Sat, 15 Jul 2000 21:35:47 +0000 Subject: [PATCH] Revise locale and Kerberos documentation --- doc/README.kerberos | 31 ---- doc/src/sgml/client-auth.sgml | 91 +++++++++-- doc/src/sgml/config.sgml | 291 ---------------------------------- doc/src/sgml/runtime.sgml | 121 +++++++++++++- 4 files changed, 199 insertions(+), 335 deletions(-) delete mode 100644 doc/README.kerberos diff --git a/doc/README.kerberos b/doc/README.kerberos deleted file mode 100644 index 189d035b912..00000000000 --- a/doc/README.kerberos +++ /dev/null @@ -1,31 +0,0 @@ -Edit postgresql-7.0RC5/src/Makefile.global.in -Change PG_KRB_SRVTAB to somewhere useful for you, and PG_KRB_SRVNAM to -whatever you want your postgres kerberos service called. - -Uncommment out KRBVERS=5 in Makefile.global.in. - -Run configure, make, and install PostgreSQL. - -Generate the keytab (PG_KRB_SRVTAB): -kadmin% ank -randkey postgres/server.my.domain.org -kadmin% ktadd -k krb5.keytab postgres/server.my.domain.org - -Make sure the keytab is read-only to the postgres user. -Make sure your client binaries can see the new libraries. - -edit pg_hba.conf and change the authentication method to krb5. - -Everything should then work. If you use mod_auth_krb and mod_perl on -your web server, you can use AuthType KerberosV5SaveCredentials with a -mod_perl script. This gives secure database access over the web. No -extra passwords required. - -Cheers, - -Mike Wyer, -Department of Computing, Imperial College --- -Mike Wyer <mw@doc.ic.ac.uk> || "Woof?" -http://www.doc.ic.ac.uk/~mw || Gaspode the Wonder Dog -Work: 020 7594 8440 || from "Moving Pictures" -Mobile: 07879 697119 || by Terry Pratchett diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml index 500fc6ea3fa..f22b0af662f 100644 --- a/doc/src/sgml/client-auth.sgml +++ b/doc/src/sgml/client-auth.sgml @@ -1,4 +1,4 @@ -<!-- $Header: /cvsroot/pgsql/doc/src/sgml/client-auth.sgml,v 1.2 2000/07/04 16:31:51 petere Exp $ --> +<!-- $Header: /cvsroot/pgsql/doc/src/sgml/client-auth.sgml,v 1.3 2000/07/15 21:35:47 petere Exp $ --> <chapter id="client-authentication"> <title>Client Authentication</title> @@ -295,7 +295,8 @@ host all 192.168.2.0 255.255.255.0 ident othermap file after the <literal>password</> or <literal>crypt</> keyword, respectively, in <filename>pg_hba.conf</>. If you do not use this feature, then any user that is known to the database system can - connect (as long as he passes password authentication, of course). + connect to any database (as long as he passes password + authentication, of course). </para> <para> @@ -316,7 +317,7 @@ host all 192.168.2.0 255.255.255.0 ident othermap <para> Lines with and without passwords can be mixed in secondary - password files. Lines without password indicate use the main + password files. Lines without password indicate use of the main password in <literal>pg_shadow</> that is managed by <command>CREATE USER</> and <command>ALTER USER</>. Lines with passwords will cause that password to be used. A password entry of @@ -348,14 +349,20 @@ host all 192.168.2.0 255.255.255.0 ident othermap authentication system suitable for distributed computing over a public network. A description of the <productname>Kerberos</productname> system is far beyond the scope - of this document; in all generality it can be quite complex. The - <ulink url="http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html">Kerberos <acronym>FAQ</></ulink> - can be a good starting point for exploration. + of this document; in all generality it can be quite complex (yet + powerful). The <ulink + url="http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html">Kerberos + <acronym>FAQ</></ulink> or <ulink + url="ftp://athena-dist.mit.edu">MIT Project Athena</ulink> can be + a good starting point for exploration. Several sources for + <productname>Kerberos</> distributions exist. </para> <para> In order to use <productname>Kerberos</>, support for it must be - enable at build time. Both Kerberos 4 and 5 are supported. + enable at build time. Both Kerberos 4 and 5 are supported + (<literal>./configure --with-krb4</> or <literal>./configure + --with-krb5</> respectively). </para> <para> @@ -365,14 +372,74 @@ host all 192.168.2.0 255.255.255.0 ident othermap build. Make sure that your server keytab file is readable (and preferrably only readable) by the Postgres server account (see <xref linkend="postgres-user">). The location of the keytab file - is specified at build time. By default it is + is specified at build time; by default it is <filename>/etc/srvtab</filename> in Kerberos 4 and - <filename>FILE:/usr/local/postgres/krb5.keytab</filename> in + <filename>FILE:/usr/local/pgsql/etc/krb5.keytab</filename> in Kerberos 5. </para> -<!-- Note from Peter E.: Some of the Kerberos usage information is -still in config.sgml and some in doc/README.kerberos. It should be -integrated here. --> + + <para> + To generate the keytab file, use for example (with version 5) +<screen> +kadmin% <userinput>ank -randkey postgres/server.my.domain.org</> +kadmin% <userinput>ktadd -k krb5.keytab postgres/server.my.domain.org</> +</screen> + Read the <productname>Kerberos</> documentation for defails. + </para> + + <para> + In the <productname>Kerberos</> 5 hooks, the following assumptions + are made about user and service naming: + + <itemizedlist> + <listitem> + <para> + User principal names (anames) are assumed to contain the actual + Unix/<productname>Postgres</> user name in the first component. + </para> + </listitem> + <listitem> + <para> + The <productname>Postgres</> service is assumed to be have two + components, the service name and a hostname, canonicalized as + in Version 4 (i.e., with all domain suffixes removed). + </para> + </listitem> + </itemizedlist> + + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry>Parameter</> + <entry>Example</> + </row> + </thead> + <tbody> + <row> + <entry>user</> + <entry>frew@S2K.ORG</> + </row> + <row> + <entry>user</> + <entry>aoki/HOST=miyu.S2K.Berkeley.EDU@S2K.ORG</> + </row> + <row> + <entry>host</> + <entry>postgres_dbms/ucbvax@S2K.ORG</> + </row> + </tbody> + </tgroup> + </informaltable> + </para> + + <para> + If you use mod_auth_krb and mod_perl on your Apache web server, + you can use AuthType KerberosV5SaveCredentials with a mod_perl + script. This gives secure database access over the web, no extra + passwords required. + </para> + </sect2> <sect2> diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 59eda7a6377..c80a8beb800 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -262,297 +262,6 @@ PSTYLE= /home/tgl/SGML/db118.d/docbook/print </para> </sect1> - <sect1> - <title>Locale Support</title> - - <para> - <note> - <para> - Written by Oleg Bartunov. - See <ulink url="http://www.sai.msu.su/~megera/postgres/">Oleg's web page</ulink> - for additional information on locale and Russian language support. - - </para> - </note> - While doing a project for a company in Moscow, Russia, - I encountered the problem that postgresql had no - support of national alphabets. After looking for possible workarounds - I decided to develop support of locale myself. - I'm not a C-programer but already had some experience with locale programming - when I work with perl - (debugging) and glimpse. After several days of digging through - the <productname>Postgres</productname> source tree I made very minor corections to - src/backend/utils/adt/varlena.c and src/backend/main/main.c and got what I needed! - I did support only for - <envar>LC_CTYPE</envar> and <envar>LC_COLLATE</envar>, - but later <envar>LC_MONETARY</envar> was added by others. I got many - messages from people about this patch so I decided to send it to developers - and (to my surprise) it was - incorporated into the <productname>Postgres</productname> distribution. - </para> - <para> - People often complain that locale doesn't work for them. - There are several common mistakes: - - <itemizedlist> - <listitem> - <para> - Didn't properly configure postgresql before compilation. - You must run configure with --enable-locale option to enable locale support. - Didn't setup environment correctly when starting postmaster. - You must define environment variables - <envar>LC_CTYPE</envar> and <envar>LC_COLLATE</envar> - before running postmaster - because backend gets information about locale from environment. - I use following shell script - (runpostgres): - - <programlisting> - #!/bin/sh - - export LC_CTYPE=koi8-r - export LC_COLLATE=koi8-r - postmaster -B 1024 -S -D/usr/local/pgsql/data/ -o '-Fe' - </programlisting> - - and run it from rc.local as - - <programlisting> - /bin/su - postgres -c "/home/postgres/runpostgres" - </programlisting> - - </para> - </listitem> - <listitem> - <para> - Broken locale support in OS (for example, locale support in libc - under Linux several times has changed - and this caused a lot of problems). Latest perl has also support of - locale and if locale is broken <command>perl -v</command> will - complain something like: - - <programlisting> - 8:17[mira]:~/WWW/postgres>setenv LC_CTYPE not_exist - 8:18[mira]:~/WWW/postgres>perl -v - perl: warning: Setting locale failed. - perl: warning: Please check that your locale settings: - LC_ALL = (unset), - LC_CTYPE = "not_exist", - LANG = (unset) - are supported and installed on your system. - perl: warning: Falling back to the standard locale ("C"). - </programlisting> - - </para> - </listitem> - <listitem> - <para> - Wrong location of locale files! - - Possible locations include: - <filename>/usr/lib/locale</filename> - (Linux, Solaris), <filename>/usr/share/locale</filename> (Linux), - <filename>/usr/lib/nls/loc</filename> (DUX 4.0). - - Check <command>man locale</command> to find the correct location. - Under Linux I did a symbolic link between <filename>/usr/lib/locale</filename> and - <filename>/usr/share/locale</filename> to be sure that - the next libc will not break my locale. - </para> - </listitem> - </itemizedlist> - </para> - - <sect2> - <title>What are the Benefits?</title> - - <para> - You can use ~* and order by operators for strings contain characters - from national alphabets. Non-english users - definitely need that. If you won't use locale stuff just undefine - the USE_LOCALE variable. - </para> - </sect2> - - <sect2> - <title>What are the Drawbacks?</title> - - <para> - There is one evident drawback of using locale - its speed! - So, use locale only if you really need it. - </para> - </sect2> - </sect1> - - <sect1> - <title>Kerberos Authentication</title> - - <para> - <productname>Kerberos</productname> is an industry-standard secure authentication - system suitable for distributed computing over a public network. - </para> - - <sect2> - <title>Availability</title> - - <para> - The - <productname>Kerberos</productname> - authentication system is not distributed with <productname>Postgres</productname>. Versions of - <productname>Kerberos</productname> - are typically available as optional software from operating system - vendors. In addition, a source code distribution may be obtained through - <ulink url="ftp://athena-dist.mit.edu">MIT Project Athena</ulink>. - </para> - <note> - <para> - You may wish to obtain the MIT version even if your - vendor provides a version, since some vendor ports have been - deliberately crippled or rendered non-interoperable with the MIT - version. - </para> - </note> - <para> - Users located outside the United States of America and - Canada are warned that distribution of the actual encryption code in - <productname>Kerberos</productname> - is restricted by U. S. Government export regulations. - </para> - <para> - Inquiries regarding your <productname>Kerberos</productname> - should be directed to your vendor or - <ulink url="info-kerberos@athena.mit.edu">MIT Project Athena</ulink>. - Note that <acronym>FAQL</acronym>s - (Frequently-Asked Questions Lists) are periodically posted to the - <ulink url="mailto:kerberos@athena.mit.edu"><productname>Kerberos</productname> mailing list</ulink> - (send - <ulink url="mailto:kerberos-request@athena.mit.edu">mail to subscribe</ulink>), - and - <ulink url="news:comp.protocols.kerberos">USENET news group</ulink>. - </para> - </sect2> - - <sect2> - <title>Installation</title> - - <para> - Installation of - <productname>Kerberos</productname> - itself is covered in detail in the - <citetitle>Kerberos Installation Notes</citetitle> . - Make sure that the server key file (the <filename>srvtab</filename> - or <filename>keytab</filename>) - is somehow readable by the <productname>Postgres</productname> account. - </para> - <para> - <productname>Postgres</productname> and its clients can be compiled to use - either Version 4 or Version 5 of the MIT - <productname>Kerberos</productname> - protocols by setting the - <envar>KRBVERS</envar> - variable in the file <filename>src/Makefile.global</filename> to the - appropriate value. You can also change the location where - <productname>Postgres</productname> - expects to find the associated libraries, header files and its own - server key file. - </para> - <para> - After compilation is complete, <productname>Postgres</productname> - must be registered as a <productname>Kerberos</productname> - service. See the - <citetitle>Kerberos Operations Notes</citetitle> - and related manual pages for more details on registering services. - </para> - </sect2> - - <sect2> - <title>Operation</title> - - <para> - After initial installation, <productname>Postgres</productname> - should operate in all ways as a normal - <productname>Kerberos</productname> - service. For details on the use of authentication, see the - <citetitle>PostgreSQL User's Guide</citetitle> reference sections - for <application>postmaster</application> - and <application>psql</application>. - </para> - <para> - In the - <productname>Kerberos</productname> - Version 5 hooks, the following assumptions are made about user - and service naming: - - <itemizedlist> - <listitem> - <para> - User principal names (anames) are assumed to - contain the actual Unix/<productname>Postgres</productname> user name - in the first component. - </para> - </listitem> - <listitem> - <para> - The <productname>Postgres</productname> service is assumed to be have two components, - the service name and a hostname, canonicalized as in Version 4 (i.e., with all domain - suffixes removed). - </para> - </listitem> - - </itemizedlist> - </para> - - <para> - <table tocentry="1"> - <title>Kerberos Parameter Examples</title> - <titleabbrev>Kerberos</titleabbrev> - - <tgroup cols="2"> - <thead> - <row> - <entry> - Parameter - </entry> - <entry> - Example - </entry> - </row> - </thead> - <tbody> - <row> - <entry> - user - </entry> - <entry> - frew@S2K.ORG - </entry> - </row> - <row> - <entry> - user - </entry> - <entry> - aoki/HOST=miyu.S2K.Berkeley.EDU@S2K.ORG - </entry> - </row> - <row> - <entry> - host - </entry> - <entry> - postgres_dbms/ucbvax@S2K.ORG - </entry> - </row> - </tbody> - </tgroup> - </table> - </para> - <para> - Support for Version 4 will disappear sometime after the production - release of Version 5 by MIT. - </para> - </sect2> - </sect1> </chapter> <!-- Keep this comment at the end of the file diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index 0413fc11cc5..cc6900ece43 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.13 2000/07/12 17:38:41 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.14 2000/07/15 21:35:47 petere Exp $ --> <Chapter Id="runtime"> @@ -1036,6 +1036,125 @@ env PGOPTIONS='--geqo=off' psql </sect2> </sect1> + + <sect1 id="locale"> + <title>Locale Support</title> + + <note> + <title>Acknowledgement</title> + <para> + Written by Oleg Bartunov. See <ulink + url="http://www.sai.msu.su/~megera/postgres/">Oleg's web + page</ulink> for additional information on locale and Russian + language support. + </para> + </note> + + <para> + While doing a project for a company in Moscow, Russia, I + encountered the problem that <productname>Postgres</> had no + support of national alphabets. After looking for possible + workarounds I decided to develop support of locale myself. I'm not + a C programmer but already had some experience with locale + programming when I work with <productname>Perl</> (debugging) and + <productname>Glimpse</>. After several days of digging through the + <productname>Postgres</> source tree I made very minor corections + to <filename>src/backend/utils/adt/varlena.c</> and + <filename>src/backend/main/main.c</> and got what I needed! I did + support only for <envar>LC_CTYPE</envar> and + <envar>LC_COLLATE</envar>, but later <envar>LC_MONETARY</envar> was + added by others. I got many messages from people about this patch + so I decided to send it to developers and (to my surprise) it was + incorporated into the <productname>Postgres</> distribution. + </para> + + <para> + People often complain that locale doesn't work for them. There are + several common mistakes: + + <itemizedlist> + <listitem> + <para> + Didn't properly configure <productname>Postgres</> before + compilation. You must run <filename>configure</> with the + <option>--enable-locale</> option to enable locale support. + </para> + </listitem> + + <listitem> + <para> + Didn't setup environment correctly when starting postmaster. You + must define environment variables <envar>LC_CTYPE</envar> and + <envar>LC_COLLATE</envar> before running postmaster because + backend gets information about locale from environment. I use + following shell script: +<programlisting> +#!/bin/sh + +export LC_CTYPE=koi8-r +export LC_COLLATE=koi8-r +postmaster -B 1024 -S -D/usr/local/pgsql/data/ -o '-Fe' +</programlisting> + </para> + </listitem> + + <listitem> + <para> + Broken locale support in the operating system (for example, + locale support in libc under Linux several times has changed and + this caused a lot of problems). Perl has also support of locale + and if locale is broken <command>perl -v</> will complain + something like: +<screen> +8:17[mira]:~/WWW/postgres>setenv LC_CTYPE not_exist +8:18[mira]:~/WWW/postgres>perl -v +perl: warning: Setting locale failed. +perl: warning: Please check that your locale settings: +LC_ALL = (unset), +LC_CTYPE = "not_exist", +LANG = (unset) +are supported and installed on your system. +perl: warning: Falling back to the standard locale ("C"). +</screen> + </para> + </listitem> + + <listitem> + <para> + Wrong location of locale files. Possible locations include: + <filename>/usr/lib/locale</filename> (Linux, Solaris), + <filename>/usr/share/locale</filename> (Linux), + <filename>/usr/lib/nls/loc</filename> (DUX 4.0). + + Check <command>man locale</command> to find the correct + location. Under Linux I made a symbolic link between + <filename>/usr/lib/locale</filename> and + <filename>/usr/share/locale</filename> to be sure that the next + libc will not break my locale. + </para> + </listitem> + </itemizedlist> + </para> + + <formalpara> + <title>What are the Benefits?</title> + <para> + You can use ~* and order by operators for strings contain + characters from national alphabets. Non-english users definitely + need that. + </para> + </formalpara> + + <formalpara> + <title>What are the Drawbacks?</title> + <para> + There is one evident drawback of using locale - its speed! So, use + locale only if you really need it. + </para> + </formalpara> + </sect1> + + <sect1 id="postmaster-shutdown"> <title>Shutting down the server</title> -- GitLab