Skip to content

Commit

Permalink
Mark some contrib modules as "trusted".
Browse files Browse the repository at this point in the history
This allows these modules to be installed into a database without
superuser privileges (assuming that the DBA or sysadmin has installed
the module's files in the expected place).  You only need CREATE
privilege on the current database, which by default would be
available to the database owner.

The following modules are marked trusted:

btree_gin
btree_gist
citext
cube
dict_int
earthdistance
fuzzystrmatch
hstore
hstore_plperl
intarray
isn
jsonb_plperl
lo
ltree
pg_trgm
pgcrypto
seg
tablefunc
tcn
tsm_system_rows
tsm_system_time
unaccent
uuid-ossp

In the future we might mark some more modules trusted, but there
seems to be no debate about these, and on the whole it seems wise
to be conservative with use of this feature to start out with.

Discussion: https://postgr.es/m/32315.1580326876@sss.pgh.pa.us
  • Loading branch information
tglsfdc committed Feb 13, 2020
1 parent 7fdd919 commit eb67623
Show file tree
Hide file tree
Showing 46 changed files with 174 additions and 4 deletions.
1 change: 1 addition & 0 deletions contrib/btree_gin/btree_gin.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'support for indexing common datatypes in GIN'
default_version = '1.3'
module_pathname = '$libdir/btree_gin'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/btree_gist/btree_gist.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'support for indexing common datatypes in GiST'
default_version = '1.5'
module_pathname = '$libdir/btree_gist'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/citext/citext.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'data type for case-insensitive character strings'
default_version = '1.6'
module_pathname = '$libdir/citext'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/cube/cube.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'data type for multidimensional cubes'
default_version = '1.4'
module_pathname = '$libdir/cube'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/dict_int/dict_int.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'text search dictionary template for integers'
default_version = '1.0'
module_pathname = '$libdir/dict_int'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/earthdistance/earthdistance.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ comment = 'calculate great-circle distances on the surface of the Earth'
default_version = '1.1'
module_pathname = '$libdir/earthdistance'
relocatable = true
trusted = true
requires = 'cube'
1 change: 1 addition & 0 deletions contrib/fuzzystrmatch/fuzzystrmatch.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'determine similarities and distance between strings'
default_version = '1.1'
module_pathname = '$libdir/fuzzystrmatch'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/hstore/hstore.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'data type for storing sets of (key, value) pairs'
default_version = '1.6'
module_pathname = '$libdir/hstore'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/hstore_plperl/hstore_plperl.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ comment = 'transform between hstore and plperl'
default_version = '1.0'
module_pathname = '$libdir/hstore_plperl'
relocatable = true
trusted = true
requires = 'hstore,plperl'
1 change: 1 addition & 0 deletions contrib/intarray/intarray.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'functions, operators, and index support for 1-D arrays of integers'
default_version = '1.2'
module_pathname = '$libdir/_int'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/isn/isn.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'data types for international product numbering standards'
default_version = '1.2'
module_pathname = '$libdir/isn'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/jsonb_plperl/jsonb_plperl.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ comment = 'transform between jsonb and plperl'
default_version = '1.0'
module_pathname = '$libdir/jsonb_plperl'
relocatable = true
trusted = true
requires = 'plperl'
1 change: 1 addition & 0 deletions contrib/lo/lo.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'Large Object maintenance'
default_version = '1.1'
module_pathname = '$libdir/lo'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/ltree/ltree.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'data type for hierarchical tree-like structures'
default_version = '1.1'
module_pathname = '$libdir/ltree'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/pg_trgm/pg_trgm.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'text similarity measurement and index searching based on trigrams'
default_version = '1.4'
module_pathname = '$libdir/pg_trgm'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/pgcrypto/pgcrypto.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'cryptographic functions'
default_version = '1.3'
module_pathname = '$libdir/pgcrypto'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/seg/seg.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'data type for representing line segments or floating-point intervals'
default_version = '1.3'
module_pathname = '$libdir/seg'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/tablefunc/tablefunc.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'functions that manipulate whole tables, including crosstab'
default_version = '1.0'
module_pathname = '$libdir/tablefunc'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/tcn/tcn.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'Triggered change notifications'
default_version = '1.0'
module_pathname = '$libdir/tcn'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/tsm_system_rows/tsm_system_rows.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'TABLESAMPLE method which accepts number of rows as a limit'
default_version = '1.0'
module_pathname = '$libdir/tsm_system_rows'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/tsm_system_time/tsm_system_time.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'TABLESAMPLE method which accepts time in milliseconds as a limit'
default_version = '1.0'
module_pathname = '$libdir/tsm_system_time'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/unaccent/unaccent.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'text search dictionary that removes accents'
default_version = '1.1'
module_pathname = '$libdir/unaccent'
relocatable = true
trusted = true
1 change: 1 addition & 0 deletions contrib/uuid-ossp/uuid-ossp.control
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ comment = 'generate universally unique identifiers (UUIDs)'
default_version = '1.1'
module_pathname = '$libdir/uuid-ossp'
relocatable = true
trusted = true
6 changes: 6 additions & 0 deletions doc/src/sgml/btree-gin.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@
two separate indexes that would have to be combined via bitmap ANDing.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Example Usage</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/btree-gist.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@
<type>oid</type>, and <type>money</type>.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Example Usage</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/citext.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@
</para>
</tip>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Rationale</title>

Expand Down
17 changes: 13 additions & 4 deletions doc/src/sgml/contrib.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -54,22 +54,31 @@
Many modules supply new user-defined functions, operators, or types.
To make use of one of these modules, after you have installed the code
you need to register the new SQL objects in the database system.
In <productname>PostgreSQL</productname> 9.1 and later, this is done by executing
This is done by executing
a <xref linkend="sql-createextension"/> command. In a fresh database,
you can simply do

<programlisting>
CREATE EXTENSION <replaceable>module_name</replaceable>;
</programlisting>

This command must be run by a database superuser. This registers the
new SQL objects in the current database only, so you need to run this
command in each database that you want
This command registers the new SQL objects in the current database only,
so you need to run it in each database that you want
the module's facilities to be available in. Alternatively, run it in
database <literal>template1</literal> so that the extension will be copied into
subsequently-created databases by default.
</para>

<para>
For all these modules, <command>CREATE EXTENSION</command> must be run
by a database superuser, unless the module is
considered <quote>trusted</quote>, in which case it can be run by any
user who has <literal>CREATE</literal> privilege on the current
database. Modules that are trusted are identified as such in the
sections that follow. Generally, trusted modules are ones that cannot
provide access to outside-the-database functionality.
</para>

<para>
Many modules allow you to install their objects in a schema of your
choice. To do that, add <literal>SCHEMA
Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/cube.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@
representing multidimensional cubes.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Syntax</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/dict-int.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
unique words, which greatly affects the performance of searching.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Configuration</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/earthdistance.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@
project.)
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Cube-Based Earth Distances</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/fuzzystrmatch.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@
</para>
</caution>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Soundex</title>

Expand Down
11 changes: 11 additions & 0 deletions doc/src/sgml/hstore.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
simply text strings.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title><type>hstore</type> External Representation</title>

Expand Down Expand Up @@ -633,6 +639,11 @@ ALTER TABLE tablename ALTER hstorecol TYPE hstore USING hstorecol || '';
convention). If you use them, <type>hstore</type> values are mapped to
Python dictionaries.
</para>

<para>
Of these additional extensions, <literal>hstore_plperl</literal> is
considered trusted; the rest are not.
</para>
</sect2>

<sect2>
Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/intarray.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@
treated as though it were a linear array in storage order.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title><filename>intarray</filename> Functions and Operators</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/isn.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@
dropped from a future version of this module.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Data Types</title>

Expand Down
7 changes: 7 additions & 0 deletions doc/src/sgml/json.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -622,6 +622,13 @@ SELECT jdoc-&gt;'guid', jdoc-&gt;'name' FROM api WHERE jdoc @&gt; '{"tags": ["qu
use them, <type>jsonb</type> values are mapped to Python dictionaries,
lists, and scalars, as appropriate.
</para>

<para>
Of these extensions, <literal>jsonb_plperl</literal> is
considered <quote>trusted</quote>, that is, it can be installed by
non-superusers who have <literal>CREATE</literal> privilege on the
current database. The rest require superuser privilege to install.
</para>
</sect2>

<sect2 id="datatype-jsonpath">
Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/lo.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@
and a trigger <function>lo_manage</function>.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Rationale</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/ltree.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@
Extensive facilities for searching through label trees are provided.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Definitions</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/pgcrypto.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@
<productname>PostgreSQL</productname>.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>General Hashing Functions</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/pgtrgm.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
strings.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Trigram (or Trigraph) Concepts</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/seg.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
making it especially useful for representing laboratory measurements.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Rationale</title>

Expand Down
6 changes: 6 additions & 0 deletions doc/src/sgml/tablefunc.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
multiple rows.
</para>

<para>
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
</para>

<sect2>
<title>Functions Provided</title>

Expand Down
Loading

0 comments on commit eb67623

Please sign in to comment.