以非 root 用户身份启动屏幕时“不再有 PTY”

以非 root 用户身份启动屏幕时“不再有 PTY”

每当我尝试以非 root 用户身份启动屏幕会话时,我都会收到“不再有 PTY”的信息。作为回应。与 root 位于同一目录中的相同命令可以正常工作。

我尝试了以下解决方案发布但不会改变任何东西:

$ ls /dev/pts  
$ cat /proc/sys/kernel/pty/nr
0
$ cat /proc/sys/kernel/pty/max
4096

即使卸载并重新安装也无济于事:

$ grep /dev/pts /proc/mounts
devpts /dev/pts devpts rw,nosuid,noexec,relatime 0 0
$ umount devpts
$ mount devpts /dev/pts -t devpts -o mode=620

我的相关问题:使用 screen 启动 Minecraft 服务器无法正常工作

答案1

您很可能无法screen使用 BSD 伪终端,因为它被编译为使用特定风格的伪终端(绝不会同时使用)。主要有两种风格及其变体:

  • 一个函数(例如openpty) 提供主设备和从设备的名称
  • 程序在主/从对列表中搜索未使用的对

在后一种情况下,你可以做

strings /usr/bin/screen

并找到类似这样的内容:0123456789abcdef(可能更长)。如果没有找到,则它是为 Unix98 伪终端编译的。

如果你找到字符串,可能screen必须运行 setuid'd,例如root(这样它就可以修改主/从对的权限和所有权)。

由于问题意味着它的运行方式为root,经过类似的操作后,它可能对普通用户有用

sudo chmod u+s /usr/bin/screen

相关内容