IPB
>  Man Pages > Unix > Solaris 10 11/06 > Section 5 > grant man page

grant man page

Section 5 - Solaris 10 11/06 Man Pages

Other operating system man pages available here


Advanced Search

Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!





SQL Commands                                              GRANT()



NAME
     GRANT - define access privileges


SYNOPSIS
     GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
         [,...] | ALL [ PRIVILEGES ] }
         ON [ TABLE ] tablename [, ...]
         TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

     GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
         ON DATABASE dbname [, ...]
         TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

     GRANT { EXECUTE | ALL [ PRIVILEGES ] }
         ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]
         TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

     GRANT { USAGE | ALL [ PRIVILEGES ] }
         ON LANGUAGE langname [, ...]
         TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

     GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
         ON SCHEMA schemaname [, ...]
         TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

     GRANT { CREATE | ALL [ PRIVILEGES ] }
         ON TABLESPACE tablespacename [, ...]
         TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

     GRANT role [, ...]
         TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH ADMIN OPTION ]


DESCRIPTION
     The GRANT command has two basic variants:  one  that  grants
     privileges  on  a  database  object  (table, view, sequence,
     database,  function,   procedural   language,   schema,   or
     tablespace), and one that grants membership in a role. These
     variants are similar in many ways, but  they  are  different
     enough to be described separately.

     As of PostgreSQL 8.1, the concepts of users and groups  have
     been unified into a single kind of entity called a role.  It
     is therefore no longer necessary to use the keyword GROUP to
     identify  whether  a  grantee is a user or a group. GROUP is
     still allowed in the command, but it is a noise word.

  GRANT ON DATABASE OBJECTS
     This variant of the GRANT command gives specific  privileges
     on  a database object to one or more roles. These privileges
     are added to those already granted, if any.




SQL - Language StatemLast change: 2005-11-05 1







SQL Commands                                              GRANT()



     The key word PUBLIC indicates that the privileges are to  be
     granted  to  all  roles, including those that may be created
     later. PUBLIC may be thought of  as  an  implicitly  defined
     group  that  always includes all roles.  Any particular role
     will have the sum of  privileges  granted  directly  to  it,
     privileges  granted to any role it is presently a member of,
     and privileges granted to PUBLIC.

     If WITH GRANT OPTION is  specified,  the  recipient  of  the
     privilege  may  in  turn grant it to others. Without a grant
     option, the recipient cannot do that. Grant  options  cannot
     be granted to PUBLIC.

     There is no need to grant privileges  to  the  owner  of  an
     object  (usually the user that created it), as the owner has
     all privileges by default. (The owner could, however, choose
     to revoke some of his own privileges for safety.)  The right
     to drop an object, or to alter its definition in any way  is
     not  described  by  a grantable privilege; it is inherent in
     the owner, and cannot  be  granted  or  revoked.  The  owner
     implicitly has all grant options for the object, too.

     Depending  on  the  type  of  object,  the  initial  default
     privileges  may  include granting some privileges to PUBLIC.
     The default is no public access  for  tables,  schemas,  and
     tablespaces;  TEMP  table  creation privilege for databases;
     EXECUTE privilege for functions;  and  USAGE  privilege  for
     languages.   The  object  owner  may  of course revoke these
     privileges. (For maximum security, issue the REVOKE  in  the
     same  transaction  that creates the object; then there is no
     window in which another user may use the object.)

     The possible privileges are:

     SELECT
          Allows SELECT [select(5)] from any column of the speci-
          fied  table,  view, or sequence. Also allows the use of
          COPY [copy(5)] TO. For sequences, this  privilege  also
          allows the use of the currval function.

     INSERT
          Allows INSERT [insert(5)] of a new row into the  speci-
          fied table. Also allows COPY [copy(5)] FROM.

     UPDATE
          Allows UPDATE [update(5)] of any column of  the  speci-
          fied  table.  SELECT  ... FOR UPDATE and SELECT ... FOR
          SHARE also require this privilege (besides  the  SELECT
          privilege).  For  sequences,  this privilege allows the
          use of the nextval and setval functions.

     DELETE




SQL - Language StatemLast change: 2005-11-05 2







SQL Commands                                              GRANT()



          Allows DELETE [delete(5)] of a row from  the  specified
          table.

     RULE Allows the creation of a rule on the  table/view.  (See
          the CREATE RULE [create_rule(5)] statement.)

     REFERENCES
          To create a foreign key constraint, it is necessary  to
          have  this privilege on both the referencing and refer-
          enced tables.

     TRIGGER
          Allows the creation  of  a  trigger  on  the  specified
          table.  (See  the  CREATE  TRIGGER  [create_trigger(5)]
          statement.)

     CREATE
          For databases, allows new schemas to be created  within
          the database.

          For schemas, allows new objects to  be  created  within
          the schema.  To rename an existing object, you must own
          the object and have this privilege for  the  containing
          schema.

          For  tablespaces,  allows  tables  and  indexes  to  be
          created  within the tablespace, and allows databases to
          be created that have the tablespace  as  their  default
          tablespace. (Note that revoking this privilege will not
          alter the placement of existing objects.)

     TEMPORARY

     TEMP Allows temporary tables to be created while  using  the
          database.

     EXECUTE
          Allows the use of the specified function and the use of
          any  operators that are implemented on top of the func-
          tion. This is the only type of privilege that is appli-
          cable  to  functions.  (This syntax works for aggregate
          functions, as well.)

     USAGE
          For procedural languages, allows the use of the  speci-
          fied  language  for  the  creation of functions in that
          language. This is the only type of  privilege  that  is
          applicable to procedural languages.

          For schemas, allows access to objects contained in  the
          specified   schema  (assuming  that  the  objects'  own
          privilege requirements are also met). Essentially  this




SQL - Language StatemLast change: 2005-11-05 3







SQL Commands                                              GRANT()



          allows  the  grantee  to ``look up'' objects within the
          schema.

     ALL PRIVILEGES
          Grant all of the available  privileges  at  once.   The
          PRIVILEGES  key  word is optional in PostgreSQL, though
          it is required by strict SQL.

     The privileges required by other commands are listed on  the
     reference page of the respective command.

  GRANT ON ROLES
     This variant of the GRANT command  grants  membership  in  a
     role  to  one  or  more other roles. Membership in a role is
     significant because it conveys the privileges granted  to  a
     role to each of its members.

     If WITH ADMIN OPTION is specified, the member  may  in  turn
     grant  membership  in the role to others, and revoke member-
     ship in the role as well. Without the admin option, ordinary
     users cannot do that. However, database superusers can grant
     or revoke membership in any role to  anyone.   Roles  having
     CREATEROLE  privilege  can grant or revoke membership in any
     role that is not a superuser.

NOTES
     The REVOKE [revoke(5)] command  is  used  to  revoke  access
     privileges.

     When a non-owner of an object attempts to  GRANT  privileges
     on  the  object,  the command will fail outright if the user
     has no privileges whatsoever on the object. As long as  some
     privilege  is  available,  the  command will proceed, but it
     will grant only those privileges  for  which  the  user  has
     grant  options.  The GRANT ALL PRIVILEGES forms will issue a
     warning message if no grant  options  are  held,  while  the
     other forms will issue a warning if grant options for any of
     the privileges specifically named in  the  command  are  not
     held.   (In  principle  these statements apply to the object
     owner as well, but since the  owner  is  always  treated  as
     holding all grant options, the cases can never occur.)

     It should be noted that database superusers can  access  all
     objects  regardless  of  object  privilege settings. This is
     comparable to the rights of root in a Unix system.  As  with
     root,  it's  unwise  to  operate  as a superuser except when
     absolutely necessary.

     If a superuser chooses to issue a GRANT or  REVOKE  command,
     the  command  is  performed  as though it were issued by the
     owner of the  affected  object.  In  particular,  privileges
     granted  via such a command will appear to have been granted




SQL - Language StatemLast change: 2005-11-05 4







SQL Commands                                              GRANT()



     by the object owner.  (For role membership,  the  membership
     appears to have been granted by the containing role itself.)

     GRANT and REVOKE can also be done by a role that is not  the
     owner  of  the  affected object, but is a member of the role
     that owns the object, or is a member of a  role  that  holds
     privileges WITH GRANT OPTION on the object. In this case the
     privileges will be recorded as having been  granted  by  the
     role  that  actually owns the object or holds the privileges
     WITH GRANT OPTION. For example, if table t1 is owned by role
     g1,  of  which  role  u1  is  a  member,  then  u1 can grant
     privileges on t1 to u2, but those privileges will appear  to
     have  been  granted directly by g1. Any other member of role
     g1 could revoke them later.

     If the role executing GRANT holds  the  required  privileges
     indirectly  via  more  than  one role membership path, it is
     unspecified which containing role will be recorded as having
     done the grant. In such cases it is best practice to use SET
     ROLE to become the specific role you want to  do  the  GRANT
     as.

     Currently, PostgreSQL does not support granting or  revoking
     privileges  for individual columns of a table.  One possible
     workaround is to create  a  view  having  just  the  desired
     columns and then grant privileges to that view.

     Use psql(1)'s \z command to obtain information about  exist-
     ing privileges, for example:

     => \z mytable

                             Access privileges for database "lusitania"
      Schema |  Name   | Type  |                     Access privileges
     --------+---------+-------+------------------------------------------------------------
      public | mytable | table | {miriam=arwdRxt/miriam,=r/miriam,"group todos=arw/miriam"}
     (1 row)

     The entries shown by \z are interpreted thus:

                   =xxxx -- privileges granted to PUBLIC
              uname=xxxx -- privileges granted to a user
        group gname=xxxx -- privileges granted to a group

                       r -- SELECT ("read")
                       w -- UPDATE ("write")
                       a -- INSERT ("append")
                       d -- DELETE
                       R -- RULE
                       x -- REFERENCES
                       t -- TRIGGER
                       X -- EXECUTE




SQL - Language StatemLast change: 2005-11-05 5







SQL Commands                                              GRANT()



                       U -- USAGE
                       C -- CREATE
                       T -- TEMPORARY
                 arwdRxt -- ALL PRIVILEGES (for tables)
                       * -- grant option for preceding privilege

                   /yyyy -- user who granted this privilege

     The above example display would be seen by user miriam after
     creating table mytable and doing

     GRANT SELECT ON mytable TO PUBLIC;
     GRANT SELECT, UPDATE, INSERT ON mytable TO GROUP todos;


     If the ``Access privileges'' column is  empty  for  a  given
     object, it means the object has default privileges (that is,
     its privileges column is null).  Default  privileges  always
     include  all  privileges for the owner, and may include some
     privileges for PUBLIC  depending  on  the  object  type,  as
     explained above. The first GRANT or REVOKE on an object will
     instantiate the default privileges (producing, for  example,
     {miriam=arwdRxt/miriam}) and then modify them per the speci-
     fied request.

     Notice that the  owner's  implicit  grant  options  are  not
     marked  in  the  access  privileges display. A * will appear
     only when grant options  have  been  explicitly  granted  to
     someone.

EXAMPLES
     Grant insert privilege to all users on table films:

     GRANT INSERT ON films TO PUBLIC;


     Grant all available privileges to user manuel on view kinds:

     GRANT ALL PRIVILEGES ON kinds TO manuel;

     Note that while the above will indeed grant  all  privileges
     if  executed by a superuser or the owner of kinds, when exe-
     cuted by someone else it will only grant  those  permissions
     for which the someone else has grant options.

     Grant membership in role admins to user joe:

     GRANT admins TO joe;


COMPATIBILITY





SQL - Language StatemLast change: 2005-11-05 6







SQL Commands                                              GRANT()



     According to the SQL standard, the PRIVILEGES  key  word  in
     ALL  PRIVILEGES  is required. The SQL standard does not sup-
     port setting the privileges on more than one object per com-
     mand.

     PostgreSQL allows an object owner to revoke his own ordinary
     privileges:  for  example,  a table owner can make the table
     read-only to himself by revoking his own INSERT, UPDATE, and
     DELETE privileges. This is not possible according to the SQL
     standard. The reason is that PostgreSQL treats  the  owner's
     privileges  as  having been granted by the owner to himself;
     therefore he can revoke them too. In the SQL  standard,  the
     owner's  privileges are granted by an assumed entity ``_SYS-
     TEM''. Not being ``_SYSTEM'', the owner cannot revoke  these
     rights.

     The SQL standard allows setting  privileges  for  individual
     columns within a table:

     GRANT privileges
         ON table [ ( column [, ...] ) ] [, ...]
         TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]


     The SQL standard provides for a  USAGE  privilege  on  other
     kinds  of objects: character sets, collations, translations,
     domains.

     The   RULE   privilege,   and   privileges   on   databases,
     tablespaces,  schemas,  languages,  and  sequences are Post-
     greSQL extensions.

SEE ALSO
     REVOKE [revoke(5)]






















SQL - Language StatemLast change: 2005-11-05 7






Man(1) output converted with man2html and wrapped by fishsponge

This page was generated on Wed Sep 12 11:27:48 GMT 2007

Your favourite pages:

No pages logged yet.
Trying to save cookie...

Top 10 most popular pages:

sqlite3 man page (5334 hits)
(openSUSE 10.2)

svn man page (5208 hits)
(FreeBSD 6.2)

adv_cap_autoneg man page (4870 hits)
(Solaris 10 11_06)

CPAN man page (4607 hits)
(Suse Linux 10.1)

ssh man page (4342 hits)
(Suse Linux 10.1)

ssh-socks5-proxy-connect man page (2877 hits)
(Solaris 10 11_06)

netcat man page (2717 hits)
(Suse Linux 10.1)

pprosetup man page (2488 hits)
(Solaris 10 11_06)

startproc man page (2471 hits)
(Suse Linux 10.1)

signal man page (2407 hits)
(Suse Linux 10.1)

Useful Links

Go Back

Visitor Statistics


Valid XHTML 1.0 Transitional     Valid CSS!

Partners: Cambridge Plus :: Pyrenees Prices and Terms and Conditions :: PIC Micro Development :: <Link Available>
Unix Man Pages / Linux Man Pages :: HiFi Forum :: SIP VoIP Phone & Provider Reviews :: UNIX/Linux Forum Archives

More info on advertising on Unix/Linux Forum