Я пытаюсь запустить несколько автоматических сценариев от 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
. Это также установит переменные среды для пользователя.