Linux“tmux”权限被拒绝

Linux“tmux”权限被拒绝

我正在尝试从 root 运行一些自动脚本,这些脚本将在“tmux”会话中以另一个用户的身份开始运行其他脚本。

例子:

文件 1 — “start_test_script.sh” — 在“root”主目录中:

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

文件 2 — “test_script.sh” — 在“用户”主目录中:

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

解释:

“文件 1” 将以“root”身份执行,而“文件 2” 将以“user”身份执行。

“文件 2” 将启动一个名为“test”的独立“tmux”会话,然后它将尝试在该会话中运行第 3 个文件。

通常这应该可以正常工作,我在 Virtualbox 上本地尝试过,没有任何问题。

我启动了 VPS 服务器并尝试了它,但它没有正常工作。root 中没有错误,但发生了两件事。

我在“用户”中创建的“tmux”会话中收到错误:

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

而且,第三个脚本“./test_script_02.sh”无法运行。“tmux”会话在创建后就挂在那里,除非我按“CTRL-C”,否则我甚至无法在会话中写入任何内容。当我按“CTRL-C”时,我得到了以下相同的错误。它看起来一模一样。

当我尝试通过从其 shell 运行“tmux”命令从“用户”本身打开“tmux”会话时,tmux 会话运行,但我在会话顶部收到一个错误,它在会话内部看起来像这样:

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

先谢谢了。


编辑01:

好的,显然我在 VPS 上所做的与在本地机器上所做的并不完全相同。

在本地计算机上,安装服务器时,除了 root 用户外,您还会创建一个用户,并将其添加到“sudo”组。在 VPS 上,他们会直接将您置于“root”shell 中。

因此我一直尝试以“root”身份运行,而不是以任何其他具有提升权限的用户身份运行。

我现在所做的是列出 /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

然后创建一个新用户“admin”并将其添加到“sudo”组,然后再次列出权限并发现:

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

现在,我不确定是否存在真正的原因,因为您可以看到“root”没有对组的写权限,而“admin”有。

现在,如果我以用户“admin”而不是“root”的身份运行命令,我就能够使我的脚本正常运行。

至于上面提到的从“用户”运行“tmux”时的第二个错误,它似乎只在从“root”运行脚本后才会发生,最后以上面第一个错误中提到的权限被拒绝而告终。

在这个阶段,我不确定是否可以称这个问题已经解决,也许我一开始就不应该使用“root”shell,而是创建一个新用户并将其添加到“sudo”组。

答案1

使用 -i 选项运行 sudo:。sudo -i -u user ./test_script.sh这也会为用户设置环境变量。

相关内容