cd /serv
screen -R node
{in the screen}
node test.js
C^a d
最初,
ls -l /dev/pts
total 0
crw--w---- 1 tick-tock tty 136, 0 2011-04-19 16:41 0
crw--w---- 1 tick-tock tty 136, 1 2011-04-19 16:41 1
但仅仅几秒钟后
ls -l /dev/pts
total 0
crw--w---- 1 tick-tock tty 136, 0 2011-04-19 16:47 0
crw--w---- 1 root tty 136, 1 2011-02-21 20:00 1
屏幕终端如何切换到root?这是否意味着节点服务器实际上是以 root 权限运行的?不应该的。唯一可能成为问题的因素是 iptables 将端口 80 转发到节点服务器侦听的端口 8000,因此它不必以 root 身份运行。如果这是错误的地方,我深表歉意,也许我应该在 Node.js 社区中提问?
我也没有事先 su root 或执行任何 sudo 命令。
答案1
如果我正确理解如何处理您的系统上的事物,您的系统一旦screen
分离,就会破坏pts
,并出于某种原因重新创建它。udev
udev
是控制 /dev 中设备创建和销毁的子系统,/dev 是动态生成的文件系统。pts
创建/销毁由 处理ptmx
,用于创建伪终端主/从对。pts/*
是相应的从机PTM
或伪终端主机。因此,您看到的任何权限修改都是销毁和创建所述设备节点的直接结果,而不是修改。至于文件的日期,由于设备节点是克隆,因此用于创建这些节点的原始设备的创建日期很可能是您在输出中看到的时间ls
。
man ptmx
-- 描述 ptmx 如何创建新的 pts 伪终端设备节点。
我不明白的是为什么你的系统的行为与我的系统在/dev/pts/
*.我没有经历过感知到的设备权限更改;它们要么完全消失(这是应该的),要么无论我的操作如何,权限都不会改变(例如,分离屏幕,设备保留,并且不会被破坏/重新创建。)。不仅如此,与我新创建的pts/*
设备关联的日期也是当前日期。
一种可能性是您使用的 VPS 与此行为有关。例如,我无法在我的 VPS 上执行分布式升级,因为他们使用的系统只允许一个内核版本,即他们已经破解并安装的版本。阻止您更新自己的内核的限制也可能会影响其他子系统的功能。虽然这只是猜测,但这是有道理的。
也可能只是 udev 的配置方式不同。
第 3 版,在 Gilles 的大力帮助下。 ;)
答案2
Screen 有几个编译时选项,其中之一是多用户模式。如果在此模式下安装,屏幕通常会使用 suid root 进行安装。看多用户模式文档。你的也是这样安装的吗?的输出是什么ls -l /usr/bin/screen
?