Используя экран у другого пользователя с su
Итак, если я сделаю это:
su -c 'screen -dmS screenname script to run' - user to run as
Это не сработает. Команда экрана работает, если она исключена из корня, поэтому проблем нет.
Если я сделаю:
su - user
screen
Я получил:
Cannot open your terminal '/dev/pts/0' - please check.
Что случилось?
РЕДАКТИРОВАТЬ: Я искал вокруг и не могу найти никакого хорошего решения этой проблемы.
Я пойду на следующую лучшую вещь: запуск экранов от имени пользователя root.
3 ответа
Причина в том, что когда вы входите в систему, вы получаете tty, который в вашем случае в настоящее время называется /dev/pts/0. Вы единственный, у кого есть доступ к этому tty, иначе другие пользователи могут связываться с вашим сеансом, пока вы работаете. (Root, конечно, также имеет доступ, потому что root всегда имеет доступ ко всему.)
Когда вы общаетесь с кем-то другим, вы все равно сохраняете свой собственный tty - потому что именно там будут показаны ваши вещи. Но теперь вы хотите, чтобы другой пользователь, которого вы судите, мог взять на себя ваш tty и начать показывать свои собственные вещи в нем.
Если вы доверяете всем остальным на сервере или, по крайней мере, другому пользователю, к которому вы предъявляете иск, вы можете сделать свой tty доступным для записи для всех или добавить себя и этого другого пользователя в группу и сделать его доступным для записи для этой группы. Или вы можете запустить экран как вы сами, а затем вместо этого su изнутри.
Вы можете запустить свой экран следующим образом:
скрипт -q -c "screen -RD" /dev/null