以 root 身份运行的屏幕会话?(不应该)node.js

Tic*_*ock 5 permissions gnu-screen iptables

cd /serv  
screen -R node  
{in the screen}  
node test.js  
C^a d  
Run Code Online (Sandbox Code Playgroud)

最初,

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 
Run Code Online (Sandbox Code Playgroud)

但仅仅几秒钟后

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  
Run Code Online (Sandbox Code Playgroud)

屏幕的终端如何切换到 root?这是否意味着节点服务器实际上是使用 root 权限运行的?不应该。唯一可能成为问题的另一个因素是 iptables 将端口 80 转发到节点服务器侦听的端口 8000,因此它不必以 root 身份运行。如果这是问这个错误的地方,我深表歉意,也许我应该在 node.js 社区中问?

我也没有事先 su root 或执行任何 sudo 命令。

Eno*_*oot 1

如果我正确理解如何处理您的系统上的事物,您的系统一旦screen分离,就会破坏pts,并出于某种原因重新创建它udev

udev是控制 /dev 中设备创建和销毁的子系统,/dev 是动态生成的文件系统。pts创建/销毁由 处理ptmx,用于创建伪终端主/从对。pts/*是相应的从机PTM或伪终端主机。因此,您看到的任何权限修改都是所述设备节点的销毁和创建的直接结果,而不是修改。至于文件的日期,由于设备节点是克隆,因此用于创建这些节点的原始设备的创建日期很可能是您在输出中看到的时间ls

  • man ptmx-- 描述 ptmx 如何创建新的 pts 伪终端设备节点。

我不明白的是为什么你的系统的行为与我的系统在/dev/pts/*. 我没有经历过感知到的设备权限更改;它们要么完全消失(这是应该的),要么无论我的操作如何,权限都不会改变(例如,分离屏幕,设备保留,并且不会被破坏/重新创建。)。不仅如此,与我新创建的pts/*设备关联的日期也是当前日期。

一种可能性是您使用的 VPS 与此行为有关。例如,我无法在我的 VPS 上执行分布式升级,因为他们使用的系统只允许一个内核版本,即他们已经破解并安装的内核版本。阻止您更新自己的内核的限制也可能会影响其他子系统的功能。虽然这只是猜测,但这是有道理的。

也可能只是 udev 的配置方式不同。

第 3 版,在 Gilles 的大力帮助下。;)