Linux “tmux” Permission denined

linuxpermissionstmux

I'm trying to run some automated scripts from root that will start running other scripts as another user in a "tmux" session.

Example:

File 1 – "start_test_script.sh" – in "root" home directory:

#!/bin/bash
cd /home/user/; sudo -u user ./test_script.sh
cd ~

File 2 – "test_script.sh" – in "user" home directory:

#!/bin/bash
tmux new -d -s test
tmux send -t test './test_script_02.sh' ENTER

Explanation:

"File 1" will be executed as "root", that executes "File 2" as "user".

"File 2" will start a detached "tmux" session with name "test", then it will try to run a 3rd file in that session.

Usually that should work fine, I tried it locally on a Virtualbox and had no issues.

I started a VPS server and tried that but it isn't working as it should.
There are no errors in root but two things happen.

I get an error in the created "tmux" session in "user":

/root/.tmux.conf: /root/.tmux.conf: Permission denied

And, the 3rd script "./test_script_02.sh" doesn't run. The "tmux" session just hangs there after being created, I cannot even write anything in the session unless I press "CTRL-C"
When I press "CTRL-C", I get the same error below. It looks exactly the same.

When I try to open a "tmux" session from "user" itself by running the "tmux" command from it's shell, tmux session runs but I get an error in the top of the session and it looks like this inside the session:

-bash: /root/.bash_profile: Permission denied
user@server:/home/user$ 

Thanks in advanced.


EDIT 01:

OK, so apparently what I've done on the VPS is not exactly the same as on my local machine.

On the local machine, when you install the server, you create a user beside root that is added to the "sudo" group. While on VPS, they drop you on the "root" shell directly.

So I've been trying to run as "root" instead of any other user with elevated privileges.

What I've done now is listing the permissions on /dev/pts/

root@server:/dev/pts# ls -l
total 0
crw------- 1 root       tty  136, 0 Oct 31 16:12 0
crw--w---- 1 user       tty  136, 1 Oct 31 16:09 1
crw--w---- 1 user       tty  136, 2 Oct 31 14:19 2
crw--w---- 1 root       tty  136, 3 Oct 31 14:17 3
c--------- 1 root       root   5, 2 Oct 31 14:17 ptmx

Then created a new user "admin" and added is to the "sudo" group then listed the permissions again and found:

admin@server:~$ ls -l /dev/pts/*
crw------- 1 root       tty  136, 0 Oct 31 16:14 /dev/pts/0
crw--w---- 1 user       tty  136, 1 Oct 31 16:09 /dev/pts/1
crw--w---- 1 user       tty  136, 2 Oct 31 14:19 /dev/pts/2
crw--w---- 1 root       tty  136, 3 Oct 31 16:15 /dev/pts/3
crw--w---- 1 admin      tty  136, 4 Oct 31 16:15 /dev/pts/4
c--------- 1 root       root   5, 2 Oct 31 14:17 /dev/pts/ptmx

Now at this point I'm not sure if there is the real cause, as you can see "root" does not have write permissions to group while "admin" does.

Now if I run the command from user "admin" rather than "root" I'm able to get the my scripts running properly.

As for the 2nd error mentioned above when running "tmux" from "user", it seems to only occur after running the script from "root", that ends with permission denied mentioned in the first error above.

At this stage I'm not sure if I can call this solved, perhaps I shouldn't have used the "root" shell in the first place and created a new user and added it to the "sudo" group.

Best Answer

Run sudo with -i option: sudo -i -u user ./test_script.sh. That will set environment variables to user, too.