Используя экран у другого пользователя с 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 ответа

Есть лучший трюк:

su - user
script /dev/null
screen

Причина в том, что когда вы входите в систему, вы получаете tty, который в вашем случае в настоящее время называется /dev/pts/0. Вы единственный, у кого есть доступ к этому tty, иначе другие пользователи могут связываться с вашим сеансом, пока вы работаете. (Root, конечно, также имеет доступ, потому что root всегда имеет доступ ко всему.)

Когда вы общаетесь с кем-то другим, вы все равно сохраняете свой собственный tty - потому что именно там будут показаны ваши вещи. Но теперь вы хотите, чтобы другой пользователь, которого вы судите, мог взять на себя ваш tty и начать показывать свои собственные вещи в нем.

Если вы доверяете всем остальным на сервере или, по крайней мере, другому пользователю, к которому вы предъявляете иск, вы можете сделать свой tty доступным для записи для всех или добавить себя и этого другого пользователя в группу и сделать его доступным для записи для этой группы. Или вы можете запустить экран как вы сами, а затем вместо этого su изнутри.

Вы можете запустить свой экран следующим образом:

скрипт -q -c "screen -RD" /dev/null

Другие вопросы по тегам