每当我尝试以非 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
答案1
您很可能无法screen
使用 BSD 伪终端,因为它被编译为使用特定风格的伪终端(绝不会同时使用)。主要有两种风格及其变体:
- 一个函数(例如
openpty
) 提供主设备和从设备的名称 - 程序在主/从对列表中搜索未使用的对
在后一种情况下,你可以做
strings /usr/bin/screen
并找到类似这样的内容:0123456789abcdef(可能更长)。如果没有找到,则它是为 Unix98 伪终端编译的。
如果你做找到字符串,可能screen
必须运行 setuid'd,例如root
(这样它就可以修改主/从对的权限和所有权)。
由于问题意味着它的运行方式为root
,经过类似的操作后,它可能对普通用户有用
sudo chmod u+s /usr/bin/screen