Назад | Перейти на главную страницу

Linux «tmux» в разрешении отказано

Я пытаюсь запустить несколько автоматических сценариев от root, которые запустят другие сценарии от имени другого пользователя в сеансе "tmux".

Пример:

Файл 1 - "start_test_script.sh" - в "корневом" домашнем каталоге:

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

Файл 2 - "test_script.sh" - в домашнем каталоге "user":

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

Пояснение:

«Файл 1» будет выполняться как «root», который выполняет «Файл 2» как «пользователь».

«Файл 2» запустит отдельный сеанс «tmux» с именем «test», а затем попытается запустить третий файл в этом сеансе.

Обычно это должно работать нормально, я пробовал это локально на Virtualbox, и у меня не было проблем.

Я запустил VPS-сервер и попробовал, но он не работает должным образом. Ошибок в корне нет, но случаются две вещи.

Я получаю ошибку в созданном сеансе "tmux" в "user":

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

И третий скрипт "./test_script_02.sh" не запускается. Сеанс "tmux" просто зависает там после создания, я даже не могу ничего писать в сеансе, пока не нажму "CTRL-C". Когда я нажимаю "CTRL-C", я получаю ту же ошибку, что и ниже. Выглядит точно так же.

Когда я пытаюсь открыть сеанс «tmux» от самого «пользователя», запустив команду «tmux» из его оболочки, сеанс tmux выполняется, но я получаю сообщение об ошибке в верхней части сеанса, и внутри сеанса это выглядит так:

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

Заранее спасибо.


РЕДАКТИРОВАТЬ 01:

Итак, очевидно, что то, что я сделал на VPS, не совсем то же самое, что и на моем локальном компьютере.

На локальном компьютере, когда вы устанавливаете сервер, вы создаете пользователя рядом с пользователем root, который добавляется в группу «sudo». Находясь на VPS, они напрямую перетаскивают вас в "корневую" оболочку.

Итак, я пытался работать как «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» в первую очередь, создавать нового пользователя и добавлять его в группу «sudo».

Запустите sudo с параметром -i: sudo -i -u user ./test_script.sh. Это также установит переменные среды для пользователя.