Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitca02eca

Browse files
committed
limit tablespace permissions kludge to only PG11
1 parent64d5d32 commitca02eca

File tree

1 file changed

+35
-27
lines changed

1 file changed

+35
-27
lines changed

‎src/dir.c

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -939,6 +939,7 @@ opt_externaldir_map(ConfigOption *opt, const char *arg)
939939
* Enforce permissions from backup_content.control. The only
940940
* problem now is with PGDATA itself.
941941
* TODO: we must preserve PGDATA permissions somewhere. Is it actually a problem?
942+
* Shouldn`t starting postgres force correct permissions on PGDATA?
942943
*
943944
* TODO: symlink handling. If user located symlink in PG_TBLSPC_DIR, it will
944945
* be restored as directory.
@@ -949,35 +950,9 @@ create_data_directories(parray *dest_files, const char *data_dir, const char *ba
949950
{
950951
inti;
951952
parray*links=NULL;
952-
mode_tpg_tablespace_mode=0;
953+
mode_tpg_tablespace_mode=DIR_PERMISSION;
953954
charto_path[MAXPGPATH];
954955

955-
/* Ugly: get PG_TBLSPC_DIR pemission mask.
956-
* We will use it to set permissions for tablespace directories.
957-
*/
958-
for (i=0;i<parray_num(dest_files);i++)
959-
{
960-
pgFile*file= (pgFile*)parray_get(dest_files,i);
961-
962-
if (!S_ISDIR(file->mode))
963-
continue;
964-
965-
/* skip external directory content */
966-
if (file->external_dir_num!=0)
967-
continue;
968-
969-
/* look for 'pg_tblspc' directory */
970-
if (strcmp(file->rel_path,PG_TBLSPC_DIR)==0)
971-
{
972-
pg_tablespace_mode=file->mode;
973-
break;
974-
}
975-
}
976-
977-
/* sanity */
978-
if (!pg_tablespace_mode)
979-
pg_tablespace_mode=DIR_PERMISSION;
980-
981956
/* get tablespace map */
982957
if (extract_tablespaces)
983958
{
@@ -987,6 +962,39 @@ create_data_directories(parray *dest_files, const char *data_dir, const char *ba
987962
parray_qsort(links,pgFileCompareName);
988963
}
989964

965+
/*
966+
* We have no idea about tablespace permission
967+
* For PG < 11 we can just force default permissions.
968+
*/
969+
#ifPG_VERSION_NUM >=110000
970+
if (links)
971+
{
972+
/* For PG>=11 we use temp kludge: trust permissions on 'pg_tblspc'
973+
* and force them on every tablespace.
974+
* TODO: remove kludge and ask data_directory_mode
975+
* at the start of backup.
976+
*/
977+
for (i=0;i<parray_num(dest_files);i++)
978+
{
979+
pgFile*file= (pgFile*)parray_get(dest_files,i);
980+
981+
if (!S_ISDIR(file->mode))
982+
continue;
983+
984+
/* skip external directory content */
985+
if (file->external_dir_num!=0)
986+
continue;
987+
988+
/* look for 'pg_tblspc' directory */
989+
if (strcmp(file->rel_path,PG_TBLSPC_DIR)==0)
990+
{
991+
pg_tablespace_mode=file->mode;
992+
break;
993+
}
994+
}
995+
}
996+
#endif
997+
990998
/*
991999
* We iterate over dest_files and for every directory with parent 'pg_tblspc'
9921000
* we must lookup this directory name in tablespace map.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp