Permanently change permissions of /var/run/postgresql
Clash Royale CLAN TAG#URR8PPP
On Linux Mint 17.0 Cinnamon Edition, I want to use /var/run/postgresql
as the unix_socket_directories
option for all of my postgres databases.
Whenever I run the command pg_ctl -D postgres-data -o '-F -p 33311' start
to start my local database, I get the error FATAL: could not create lock file "/var/run/postgresql/.s.PGSQL.33311.lock": Permission denied
.
As many answers across AskUbuntu, StackOverflow and various forums suggest, I have to run sudo chmod 777 /var/run/postgresql
or sudo chown -R $USER:$USER /var/run/postgresql
to change the permissions of the directory so that I can write to it. Then I am able to start my database. However, every time I reboot, the permissions go away; the directory is no longer world-writable and the user postgres-xc
reclaims user and group ownership over the directory.
Neither sudo adduser $USER postgres
or sudo adduser $USER postgres-xc
alleviates the permissions issue.
I tried doing a clean install as described here, but I still have the issue on reboot.
I've tried changing the value of unix_socket_directories
to /tmp
in ./postgres-data/postgresql.conf
(the local database config file), and this allows me to start that particular database without having to update permissions on every reboot. However, I also have a script which uses pg_ctl -D $DIR initdb && pg_ctl -D $DIR start
to setup and start databases on the fly. As such, a default postgresql.conf
config file is used for these databases, so unix_socket_directories
is the unwritable /var/run/postgresql
and I get permission denied errors when running that script. Manually/programmatically editing these configs on-the-fly to use unix_socket_directories = '/tmp'
is... undesirable.
I know that I could use the -o
flag with pg_ctl
to override the unix_socket_directories
option to /tmp
, but this script is shared by other developers who do not use Ubuntu, so I would not necessarily want to restrict everyone to using the /tmp
directory, especially if their configurations differed slightly. I would prefer everyone use the default location for their installation. Personally, I would also prefer to keep the default directory for general compatibility with other Ubuntu packages; e.g., pgadmin looks at /var/run/postgresql
for a lock file by default.
I have also tried editing /etc/postgresql/9.3/main/pg_ctl.conf
in an attempt to automatically pass set these options whenever I use pg_ctl
:
# Automatic pg_ctl configuration
# This configuration file contains cluster specific options to be passed to
# pg_ctl(1).
pg_ctl_options = '-o "-c unix_socket_directories=/tmp -c unix_socket_group=jackson -c unix_socket_permissions=0777"'
But that did not have any effect.
Please advise on how I can use /var/run/postgresql
as my unix_socket_directories
option for all of my postgres databases without having to run sudo chown -R $USER:$USER /var/run/postgresql
every time I restart my system. Thanks.
permissions linux-mint chmod chown postgresql
|
show 1 more comment
On Linux Mint 17.0 Cinnamon Edition, I want to use /var/run/postgresql
as the unix_socket_directories
option for all of my postgres databases.
Whenever I run the command pg_ctl -D postgres-data -o '-F -p 33311' start
to start my local database, I get the error FATAL: could not create lock file "/var/run/postgresql/.s.PGSQL.33311.lock": Permission denied
.
As many answers across AskUbuntu, StackOverflow and various forums suggest, I have to run sudo chmod 777 /var/run/postgresql
or sudo chown -R $USER:$USER /var/run/postgresql
to change the permissions of the directory so that I can write to it. Then I am able to start my database. However, every time I reboot, the permissions go away; the directory is no longer world-writable and the user postgres-xc
reclaims user and group ownership over the directory.
Neither sudo adduser $USER postgres
or sudo adduser $USER postgres-xc
alleviates the permissions issue.
I tried doing a clean install as described here, but I still have the issue on reboot.
I've tried changing the value of unix_socket_directories
to /tmp
in ./postgres-data/postgresql.conf
(the local database config file), and this allows me to start that particular database without having to update permissions on every reboot. However, I also have a script which uses pg_ctl -D $DIR initdb && pg_ctl -D $DIR start
to setup and start databases on the fly. As such, a default postgresql.conf
config file is used for these databases, so unix_socket_directories
is the unwritable /var/run/postgresql
and I get permission denied errors when running that script. Manually/programmatically editing these configs on-the-fly to use unix_socket_directories = '/tmp'
is... undesirable.
I know that I could use the -o
flag with pg_ctl
to override the unix_socket_directories
option to /tmp
, but this script is shared by other developers who do not use Ubuntu, so I would not necessarily want to restrict everyone to using the /tmp
directory, especially if their configurations differed slightly. I would prefer everyone use the default location for their installation. Personally, I would also prefer to keep the default directory for general compatibility with other Ubuntu packages; e.g., pgadmin looks at /var/run/postgresql
for a lock file by default.
I have also tried editing /etc/postgresql/9.3/main/pg_ctl.conf
in an attempt to automatically pass set these options whenever I use pg_ctl
:
# Automatic pg_ctl configuration
# This configuration file contains cluster specific options to be passed to
# pg_ctl(1).
pg_ctl_options = '-o "-c unix_socket_directories=/tmp -c unix_socket_group=jackson -c unix_socket_permissions=0777"'
But that did not have any effect.
Please advise on how I can use /var/run/postgresql
as my unix_socket_directories
option for all of my postgres databases without having to run sudo chown -R $USER:$USER /var/run/postgresql
every time I restart my system. Thanks.
permissions linux-mint chmod chown postgresql
What kind of file system is sitting in? When you reboot/restart the system, does this directory exist? Just wondering if this is sitting in a tmpfs file system or similar.
– user1174838
Jun 2 '15 at 0:29
Whatever the default file system is for a user installation of Linux Mint 17.0; ext4 I think.
– Jackson
Jun 2 '15 at 0:32
After a reboot, does the directory exist?
– user1174838
Jun 2 '15 at 1:19
Yes, the directory exists.
– Jackson
Jun 2 '15 at 2:14
X-post from askubuntu.com/q/631112/75715
– Craig Ringer
Jun 2 '15 at 2:19
|
show 1 more comment
On Linux Mint 17.0 Cinnamon Edition, I want to use /var/run/postgresql
as the unix_socket_directories
option for all of my postgres databases.
Whenever I run the command pg_ctl -D postgres-data -o '-F -p 33311' start
to start my local database, I get the error FATAL: could not create lock file "/var/run/postgresql/.s.PGSQL.33311.lock": Permission denied
.
As many answers across AskUbuntu, StackOverflow and various forums suggest, I have to run sudo chmod 777 /var/run/postgresql
or sudo chown -R $USER:$USER /var/run/postgresql
to change the permissions of the directory so that I can write to it. Then I am able to start my database. However, every time I reboot, the permissions go away; the directory is no longer world-writable and the user postgres-xc
reclaims user and group ownership over the directory.
Neither sudo adduser $USER postgres
or sudo adduser $USER postgres-xc
alleviates the permissions issue.
I tried doing a clean install as described here, but I still have the issue on reboot.
I've tried changing the value of unix_socket_directories
to /tmp
in ./postgres-data/postgresql.conf
(the local database config file), and this allows me to start that particular database without having to update permissions on every reboot. However, I also have a script which uses pg_ctl -D $DIR initdb && pg_ctl -D $DIR start
to setup and start databases on the fly. As such, a default postgresql.conf
config file is used for these databases, so unix_socket_directories
is the unwritable /var/run/postgresql
and I get permission denied errors when running that script. Manually/programmatically editing these configs on-the-fly to use unix_socket_directories = '/tmp'
is... undesirable.
I know that I could use the -o
flag with pg_ctl
to override the unix_socket_directories
option to /tmp
, but this script is shared by other developers who do not use Ubuntu, so I would not necessarily want to restrict everyone to using the /tmp
directory, especially if their configurations differed slightly. I would prefer everyone use the default location for their installation. Personally, I would also prefer to keep the default directory for general compatibility with other Ubuntu packages; e.g., pgadmin looks at /var/run/postgresql
for a lock file by default.
I have also tried editing /etc/postgresql/9.3/main/pg_ctl.conf
in an attempt to automatically pass set these options whenever I use pg_ctl
:
# Automatic pg_ctl configuration
# This configuration file contains cluster specific options to be passed to
# pg_ctl(1).
pg_ctl_options = '-o "-c unix_socket_directories=/tmp -c unix_socket_group=jackson -c unix_socket_permissions=0777"'
But that did not have any effect.
Please advise on how I can use /var/run/postgresql
as my unix_socket_directories
option for all of my postgres databases without having to run sudo chown -R $USER:$USER /var/run/postgresql
every time I restart my system. Thanks.
permissions linux-mint chmod chown postgresql
On Linux Mint 17.0 Cinnamon Edition, I want to use /var/run/postgresql
as the unix_socket_directories
option for all of my postgres databases.
Whenever I run the command pg_ctl -D postgres-data -o '-F -p 33311' start
to start my local database, I get the error FATAL: could not create lock file "/var/run/postgresql/.s.PGSQL.33311.lock": Permission denied
.
As many answers across AskUbuntu, StackOverflow and various forums suggest, I have to run sudo chmod 777 /var/run/postgresql
or sudo chown -R $USER:$USER /var/run/postgresql
to change the permissions of the directory so that I can write to it. Then I am able to start my database. However, every time I reboot, the permissions go away; the directory is no longer world-writable and the user postgres-xc
reclaims user and group ownership over the directory.
Neither sudo adduser $USER postgres
or sudo adduser $USER postgres-xc
alleviates the permissions issue.
I tried doing a clean install as described here, but I still have the issue on reboot.
I've tried changing the value of unix_socket_directories
to /tmp
in ./postgres-data/postgresql.conf
(the local database config file), and this allows me to start that particular database without having to update permissions on every reboot. However, I also have a script which uses pg_ctl -D $DIR initdb && pg_ctl -D $DIR start
to setup and start databases on the fly. As such, a default postgresql.conf
config file is used for these databases, so unix_socket_directories
is the unwritable /var/run/postgresql
and I get permission denied errors when running that script. Manually/programmatically editing these configs on-the-fly to use unix_socket_directories = '/tmp'
is... undesirable.
I know that I could use the -o
flag with pg_ctl
to override the unix_socket_directories
option to /tmp
, but this script is shared by other developers who do not use Ubuntu, so I would not necessarily want to restrict everyone to using the /tmp
directory, especially if their configurations differed slightly. I would prefer everyone use the default location for their installation. Personally, I would also prefer to keep the default directory for general compatibility with other Ubuntu packages; e.g., pgadmin looks at /var/run/postgresql
for a lock file by default.
I have also tried editing /etc/postgresql/9.3/main/pg_ctl.conf
in an attempt to automatically pass set these options whenever I use pg_ctl
:
# Automatic pg_ctl configuration
# This configuration file contains cluster specific options to be passed to
# pg_ctl(1).
pg_ctl_options = '-o "-c unix_socket_directories=/tmp -c unix_socket_group=jackson -c unix_socket_permissions=0777"'
But that did not have any effect.
Please advise on how I can use /var/run/postgresql
as my unix_socket_directories
option for all of my postgres databases without having to run sudo chown -R $USER:$USER /var/run/postgresql
every time I restart my system. Thanks.
permissions linux-mint chmod chown postgresql
permissions linux-mint chmod chown postgresql
edited May 23 '17 at 12:39
Community♦
1
1
asked Jun 1 '15 at 22:58
JacksonJackson
23629
23629
What kind of file system is sitting in? When you reboot/restart the system, does this directory exist? Just wondering if this is sitting in a tmpfs file system or similar.
– user1174838
Jun 2 '15 at 0:29
Whatever the default file system is for a user installation of Linux Mint 17.0; ext4 I think.
– Jackson
Jun 2 '15 at 0:32
After a reboot, does the directory exist?
– user1174838
Jun 2 '15 at 1:19
Yes, the directory exists.
– Jackson
Jun 2 '15 at 2:14
X-post from askubuntu.com/q/631112/75715
– Craig Ringer
Jun 2 '15 at 2:19
|
show 1 more comment
What kind of file system is sitting in? When you reboot/restart the system, does this directory exist? Just wondering if this is sitting in a tmpfs file system or similar.
– user1174838
Jun 2 '15 at 0:29
Whatever the default file system is for a user installation of Linux Mint 17.0; ext4 I think.
– Jackson
Jun 2 '15 at 0:32
After a reboot, does the directory exist?
– user1174838
Jun 2 '15 at 1:19
Yes, the directory exists.
– Jackson
Jun 2 '15 at 2:14
X-post from askubuntu.com/q/631112/75715
– Craig Ringer
Jun 2 '15 at 2:19
What kind of file system is sitting in? When you reboot/restart the system, does this directory exist? Just wondering if this is sitting in a tmpfs file system or similar.
– user1174838
Jun 2 '15 at 0:29
What kind of file system is sitting in? When you reboot/restart the system, does this directory exist? Just wondering if this is sitting in a tmpfs file system or similar.
– user1174838
Jun 2 '15 at 0:29
Whatever the default file system is for a user installation of Linux Mint 17.0; ext4 I think.
– Jackson
Jun 2 '15 at 0:32
Whatever the default file system is for a user installation of Linux Mint 17.0; ext4 I think.
– Jackson
Jun 2 '15 at 0:32
After a reboot, does the directory exist?
– user1174838
Jun 2 '15 at 1:19
After a reboot, does the directory exist?
– user1174838
Jun 2 '15 at 1:19
Yes, the directory exists.
– Jackson
Jun 2 '15 at 2:14
Yes, the directory exists.
– Jackson
Jun 2 '15 at 2:14
X-post from askubuntu.com/q/631112/75715
– Craig Ringer
Jun 2 '15 at 2:19
X-post from askubuntu.com/q/631112/75715
– Craig Ringer
Jun 2 '15 at 2:19
|
show 1 more comment
3 Answers
3
active
oldest
votes
Run the following to reclaim the directory (immediately and on subsequent boots):
service='reclaim-postgresql'
service_file="/etc/init.d/$service"
echo "#!/bin/sh
set -e
### BEGIN INIT INFO
# Provides: $service
# Required-Start: $postgres-xc
# Required-Stop: $postgres-xc
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Reclaim /var/run/postgresql
### END INIT INFO
chown -R $USER:$USER /var/run/postgresql"
| sudo tee "$service_file"
sudo chmod +x "$service_file"
sudo update-rc.d "$service" defaults
sudo service "$service" start
Note that when running sudo apt-get upgrade
to update postgres, you may need to temporarily sudo chown -R postgres:postgres /var/run/postgresql
in order for the upgrade to succeed.
add a comment |
Depending on your init system, add the chown/chmod command in the relevant init script for PostgreSQL such as /etc/init.d/postgresql
.
add a comment |
Permissions for /var/run/postgresql are taken from /usr/lib/tmpfiles.d/postgresql.conf
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f206917%2fpermanently-change-permissions-of-var-run-postgresql%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Run the following to reclaim the directory (immediately and on subsequent boots):
service='reclaim-postgresql'
service_file="/etc/init.d/$service"
echo "#!/bin/sh
set -e
### BEGIN INIT INFO
# Provides: $service
# Required-Start: $postgres-xc
# Required-Stop: $postgres-xc
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Reclaim /var/run/postgresql
### END INIT INFO
chown -R $USER:$USER /var/run/postgresql"
| sudo tee "$service_file"
sudo chmod +x "$service_file"
sudo update-rc.d "$service" defaults
sudo service "$service" start
Note that when running sudo apt-get upgrade
to update postgres, you may need to temporarily sudo chown -R postgres:postgres /var/run/postgresql
in order for the upgrade to succeed.
add a comment |
Run the following to reclaim the directory (immediately and on subsequent boots):
service='reclaim-postgresql'
service_file="/etc/init.d/$service"
echo "#!/bin/sh
set -e
### BEGIN INIT INFO
# Provides: $service
# Required-Start: $postgres-xc
# Required-Stop: $postgres-xc
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Reclaim /var/run/postgresql
### END INIT INFO
chown -R $USER:$USER /var/run/postgresql"
| sudo tee "$service_file"
sudo chmod +x "$service_file"
sudo update-rc.d "$service" defaults
sudo service "$service" start
Note that when running sudo apt-get upgrade
to update postgres, you may need to temporarily sudo chown -R postgres:postgres /var/run/postgresql
in order for the upgrade to succeed.
add a comment |
Run the following to reclaim the directory (immediately and on subsequent boots):
service='reclaim-postgresql'
service_file="/etc/init.d/$service"
echo "#!/bin/sh
set -e
### BEGIN INIT INFO
# Provides: $service
# Required-Start: $postgres-xc
# Required-Stop: $postgres-xc
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Reclaim /var/run/postgresql
### END INIT INFO
chown -R $USER:$USER /var/run/postgresql"
| sudo tee "$service_file"
sudo chmod +x "$service_file"
sudo update-rc.d "$service" defaults
sudo service "$service" start
Note that when running sudo apt-get upgrade
to update postgres, you may need to temporarily sudo chown -R postgres:postgres /var/run/postgresql
in order for the upgrade to succeed.
Run the following to reclaim the directory (immediately and on subsequent boots):
service='reclaim-postgresql'
service_file="/etc/init.d/$service"
echo "#!/bin/sh
set -e
### BEGIN INIT INFO
# Provides: $service
# Required-Start: $postgres-xc
# Required-Stop: $postgres-xc
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Reclaim /var/run/postgresql
### END INIT INFO
chown -R $USER:$USER /var/run/postgresql"
| sudo tee "$service_file"
sudo chmod +x "$service_file"
sudo update-rc.d "$service" defaults
sudo service "$service" start
Note that when running sudo apt-get upgrade
to update postgres, you may need to temporarily sudo chown -R postgres:postgres /var/run/postgresql
in order for the upgrade to succeed.
edited Jan 7 '16 at 23:07
answered Jun 6 '15 at 19:15
JacksonJackson
23629
23629
add a comment |
add a comment |
Depending on your init system, add the chown/chmod command in the relevant init script for PostgreSQL such as /etc/init.d/postgresql
.
add a comment |
Depending on your init system, add the chown/chmod command in the relevant init script for PostgreSQL such as /etc/init.d/postgresql
.
add a comment |
Depending on your init system, add the chown/chmod command in the relevant init script for PostgreSQL such as /etc/init.d/postgresql
.
Depending on your init system, add the chown/chmod command in the relevant init script for PostgreSQL such as /etc/init.d/postgresql
.
answered Jun 4 '15 at 12:56
Josip RodinJosip Rodin
931412
931412
add a comment |
add a comment |
Permissions for /var/run/postgresql are taken from /usr/lib/tmpfiles.d/postgresql.conf
add a comment |
Permissions for /var/run/postgresql are taken from /usr/lib/tmpfiles.d/postgresql.conf
add a comment |
Permissions for /var/run/postgresql are taken from /usr/lib/tmpfiles.d/postgresql.conf
Permissions for /var/run/postgresql are taken from /usr/lib/tmpfiles.d/postgresql.conf
answered Jan 23 at 7:30
Dmitry MedvedevDmitry Medvedev
11
11
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f206917%2fpermanently-change-permissions-of-var-run-postgresql%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
What kind of file system is sitting in? When you reboot/restart the system, does this directory exist? Just wondering if this is sitting in a tmpfs file system or similar.
– user1174838
Jun 2 '15 at 0:29
Whatever the default file system is for a user installation of Linux Mint 17.0; ext4 I think.
– Jackson
Jun 2 '15 at 0:32
After a reboot, does the directory exist?
– user1174838
Jun 2 '15 at 1:19
Yes, the directory exists.
– Jackson
Jun 2 '15 at 2:14
X-post from askubuntu.com/q/631112/75715
– Craig Ringer
Jun 2 '15 at 2:19