因此,如果我这样做:
su -c 'screen -dmS screenname script to run' - user to run as
不行。如果以 root 身份执行,screen 命令是可以工作的,所以没有问题。
如果我做:
su - user
screen
我得到:
Cannot open your terminal '/dev/pts/0' - please check.
怎么了?
编辑:我一直在寻找但似乎找不到解决这个问题的好方法。
我将选择下一个最好的选择:以 root 身份运行屏幕。
答案1
原因是当您登录时,您会得到一个 tty,在您的情况下,它当前称为 /dev/pts/0。您是唯一有权访问该 tty 的人,否则其他用户可能会在您工作时干扰您的会话。(当然,Root 也具有访问权限,因为 root 始终可以访问所有内容。)
当您对其他人执行 su 时,您仍保留自己的 tty - 因为您的内容将显示在那里。但现在您希望您正在 su 的其他用户能够接管您的 tty 并开始在其中显示他们自己的内容。
如果您信任服务器上的所有人,或者至少信任您要起诉的其他用户,则可以将您的 tty 设置为对所有人都可写,或者将您自己和其他用户添加到一个组,并使其对该组可写。或者,您可以以自己的身份启动屏幕,然后从其中执行 su。
答案2
有更好的技巧:
su - user
script /dev/null
screen
答案3
您可以按如下方式运行屏幕:
脚本-q-c“屏幕-RD”/dev/null