From 13920423466a345e832ed844e9513ad2eed43731 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Wed, 13 Feb 2002 19:32:17 +0000
Subject: [PATCH] Point out that --adduser actually makes the new user a
 superuser.  This was mentioned on the man page for the underlying CREATE USER
 command, but it should be explained here too.

---
 doc/src/sgml/ref/createuser.sgml | 36 +++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 12 deletions(-)

diff --git a/doc/src/sgml/ref/createuser.sgml b/doc/src/sgml/ref/createuser.sgml
index 40d8a7afe66..b54e4f8476a 100644
--- a/doc/src/sgml/ref/createuser.sgml
+++ b/doc/src/sgml/ref/createuser.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/createuser.sgml,v 1.23 2002/01/20 22:19:56 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/createuser.sgml,v 1.24 2002/02/13 19:32:17 tgl Exp $
 PostgreSQL documentation
 -->
 
@@ -79,7 +79,7 @@ PostgreSQL documentation
       <term>-d, --createdb</term>
       <listitem>
        <para>
-	Allows the new user to create databases.
+	The new user is allowed to create databases.
        </para>
       </listitem>
      </varlistentry>
@@ -88,7 +88,7 @@ PostgreSQL documentation
       <term>-D, --no-createdb</term>
       <listitem>
        <para>
-	Forbids the new user to create databases.
+	The new user is not allowed to create databases.
        </para>
       </listitem>
      </varlistentry>
@@ -97,7 +97,9 @@ PostgreSQL documentation
       <term>-a, --adduser</term>
       <listitem>
        <para>
-	Allows the new user to create other users.
+	The new user is allowed to create other users.
+	(Note: actually, this makes the new user a <firstterm>superuser</>.
+	The option is poorly named.)
        </para>
       </listitem>
      </varlistentry>
@@ -106,7 +108,8 @@ PostgreSQL documentation
       <term>-A, --no-adduser</term>
       <listitem>
        <para>
-	Forbids the new user to create other users.
+	The new user is not allowed to create other users (i.e.,
+	the new user is a regular user not a superuser).
        </para>
       </listitem>
      </varlistentry>
@@ -215,9 +218,17 @@ PostgreSQL documentation
   <para>
    <application>createuser</application> creates a 
    new <productname>PostgreSQL</productname> user.  
-   Only users with <literal>usesuper</literal> set in
-   the <literal>pg_shadow</literal> table can create 
-   new <productname>PostgreSQL</productname> users.
+   Only superusers (users with <literal>usesuper</literal> set in
+   the <literal>pg_shadow</literal> table) can create 
+   new <productname>PostgreSQL</productname> users,
+   so <application>createuser</application> must be
+   invoked by someone who is a <productname>PostgreSQL</productname>
+   superuser.
+  </para>
+
+  <para>
+   Being a superuser also implies the ability to bypass access permission
+   checks within the database, so superuser-dom should not be granted lightly.
   </para>
 
   <para>
@@ -227,10 +238,11 @@ PostgreSQL documentation
    the <productname>PostgreSQL</productname> interactive terminal
    <xref linkend="APP-PSQL">. Thus, there is nothing
    special about creating users via this or other methods. This means
-   that the <application>psql</application> must be found by the script and that
-   a database server is running at the targeted host. Also, any default
-   settings and environment variables available to <application>psql</application>
-   and the <application>libpq</application> front-end library do apply.
+   that the <application>psql</application> application must be found by the
+   script and that 
+   a database server must be running at the targeted host. Also, any default
+   settings and environment variables used by <application>psql</application>
+   and the <application>libpq</application> front-end library will apply.
   </para>
 
  </refsect1>
-- 
GitLab