Re: PATCH: Configurable file mode mask

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Stephen Frost <sfrost@snowman.net>
Cc: David Steele <david@pgmasters.net>, Tom Lane <tgl@sss.pgh.pa.us>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Alvaro Herrera <alvherre@alvh.no-ip.org>, Adam Brightwell <adam.brightwell@crunchydata.com>, Robert Haas <robertmhaas@gmail.com>, "Tsunakawa, Takayuki" <tsunakawa.takay@jp.fujitsu.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2018-03-21T03:14:47Z
Lists: pgsql-hackers
On Tue, Mar 20, 2018 at 05:44:22PM -0400, Stephen Frost wrote:
> * David Steele (david@pgmasters.net) wrote:
>> On 3/16/18 11:12 AM, Stephen Frost wrote:
>> It seems to me that pg_basebackup and pg_receivexlog should have a -g
>> option to control the mode of the files that they write to disk (not
>> including the modes stored in the tar files).
>> 
>> Or perhaps we should just update the perms in the tar files for now and
>> leave the rest alone.
> 
> Having options to pg_basebackup to control what's done makes sense to
> me- but whatever those options do, I'd expect them to apply equally to
> the tar files and to the files extracted with plain mode.  Having those
> be different really strikes me as very odd.

Agreed for the consistency part, permissions should be applied
consistently for the folder and the tar format.

Having the option for pg_receivewal definitely makes sense to me, as it
is the one in charge of opening and writing the WAL segments.  For
pg_basebackup, let's not forget that there is one tar file for each
tablespace, and that each file is received separately using a COPY
stream.  There is some logic already which parses the tar header part of
an individual file in order to look for recovery.conf (see
ReceiveTarFile() in pg_basebackup.c).  It would be possible to enforce
grouping permissions when receiving each file, and this would be rather
low-cost in performance I think.  Honestly, my vote would go for having
the permissions set correctly by the source server as this brings
consistency to the whole experience without complicating the interface 
of pg_basebackup, and this also makes the footprint of this patch on
pg_basebackup way lighter.
--
Michael

Commits

  1. Allow group access on PGDATA

  2. Refactor dir/file permissions

  3. Revert "Add basic TAP test setup for pg_upgrade"

  4. Add basic TAP test setup for pg_upgrade