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