Home Explore Blog CI



postgresql

12th chunk of `doc/src/sgml/config.sgml`
97dcce244d4bb5ffe821121ad7009908556100e0805587500000000100000faa
 server start.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry id="guc-unix-socket-directories" xreflabel="unix_socket_directories">
      <term><varname>unix_socket_directories</varname> (<type>string</type>)
      <indexterm>
       <primary><varname>unix_socket_directories</varname> configuration parameter</primary>
      </indexterm>
      </term>
      <listitem>
       <para>
        Specifies the directory of the Unix-domain socket(s) on which the
        server is to listen for connections from client applications.
        Multiple sockets can be created by listing multiple directories
        separated by commas.  Whitespace between entries is
        ignored; surround a directory name with double quotes if you need
        to include whitespace or commas in the name.
        An empty value
        specifies not listening on any Unix-domain sockets, in which case
        only TCP/IP sockets can be used to connect to the server.
       </para>

       <para>
        A value that starts with <literal>@</literal> specifies that a
        Unix-domain socket in the abstract namespace should be created
        (currently supported on Linux only).  In that case, this value
        does not specify a <quote>directory</quote> but a prefix from which
        the actual socket name is computed in the same manner as for the
        file-system namespace.  While the abstract socket name prefix can be
        chosen freely, since it is not a file-system location, the convention
        is to nonetheless use file-system-like values such as
        <literal>@/tmp</literal>.
       </para>

       <para>
        The default value is normally
        <filename>/tmp</filename>, but that can be changed at build time.
        On Windows, the default is empty, which means no Unix-domain socket is
        created by default.
        This parameter can only be set at server start.
       </para>

       <para>
        In addition to the socket file itself, which is named
        <literal>.s.PGSQL.<replaceable>nnnn</replaceable></literal> where
        <replaceable>nnnn</replaceable> is the server's port number, an ordinary file
        named <literal>.s.PGSQL.<replaceable>nnnn</replaceable>.lock</literal> will be
        created in each of the <varname>unix_socket_directories</varname> directories.
        Neither file should ever be removed manually.
        For sockets in the abstract namespace, no lock file is created.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry id="guc-unix-socket-group" xreflabel="unix_socket_group">
      <term><varname>unix_socket_group</varname> (<type>string</type>)
      <indexterm>
       <primary><varname>unix_socket_group</varname> configuration parameter</primary>
      </indexterm>
      </term>
      <listitem>
       <para>
        Sets the owning group of the Unix-domain socket(s).  (The owning
        user of the sockets is always the user that starts the
        server.)  In combination with the parameter
        <varname>unix_socket_permissions</varname> this can be used as
        an additional access control mechanism for Unix-domain connections.
        By default this is the empty string, which uses the default
        group of the server user.  This parameter can only be set at
        server start.
       </para>

       <para>
        This parameter is not supported on Windows.  Any setting will be
        ignored.  Also, sockets in the abstract namespace have no file owner,
        so this setting is also ignored in that case.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry id="guc-unix-socket-permissions" xreflabel="unix_socket_permissions">
      <term><varname>unix_socket_permissions</varname> (<type>integer</type>)
      <indexterm>
       <primary><varname>unix_socket_permissions</varname> configuration parameter</primary>
      </indexterm>
      </term>
      <listitem>
       <para>
        Sets the access permissions

Title: Unix Domain Socket Configuration: Directories, Group, and Permissions
Summary
This section describes the PostgreSQL configuration parameters for Unix domain sockets. It details `unix_socket_directories`, which specifies the directories where the server listens for connections from client applications using Unix domain sockets. It explains the use of abstract namespaces (Linux only), the default directory (/tmp or empty on Windows), and the creation of socket and lock files. The section also covers `unix_socket_group`, which sets the owning group of the Unix domain sockets, and notes that it's not supported on Windows or for abstract sockets. Finally, it introduces `unix_socket_permissions` which configures the socket's access permissions.