urxvt启动两个进程

urxvt启动两个进程

我已经开始使用urxvt并注意到它每次打开时都会启动 2 个 PID。它们是连续的。我不包括bash

ps

PID    %CPU %MEM   VSZ   RSS TTY      STAT START   TIME COMMAND
21193  0.1  0.3 113368 29340 ?        Ss   12:13   0:00 rxvt
21194  0.0  0.0  31932  3716 ?        S    12:13   0:00 rxvt

pstree

├─rxvt─┬─bash
       └─rxvt

我尝试了urxvtd(rxvt 守护进程),它也启动了 2 个 PID。我还没有在st或上看到过这种行为xterm。他们为自己打开一个进程并且bash.正常吗?

Debian 10,rxvt-unicode 软件包。

答案1

urxvt运行 setuid/setgid 来使用utmp/wtmp(该功能可让您使用wholast命令)。直接这样做被认为是一个潜在的漏洞。 xterm一般使用乌腾普特,以防范这种情况。 st没有直接支持utmp/wtmp。根据其常见问题解答,您可以使用另一个程序来完成该工作:

## Why does st not handle utmp entries?

Use the excellent tool of [utmp](https://git.suckless.org/utmp/) for this task

urxvt 的文档以不同的方式解释了 fork:

我需要使其 setuid/setgid 来支持我的操作系统上的 utmp/ptys,这安全吗?

从 7.1 版本开始应该是这样。我们鼓励您现在使用操作系统所需的权限正确安装 urxvt。

当 rxvt-unicode 检测到它运行 setuid 或 setgid 时,它将分叉到一个帮助程序进程中进行特权操作(某些系统上的 pty 处理,其他系统上的 utmp/wtmp/lastlog 处理)并立即删除特权。这比大多数其他在运行时保留特权的终端要安全得多(但与 urxvt 更相关,因为它包含 perl 解释器等内容,这可能对攻击者“有帮助”)。

这个分叉是在 main() 中第一次完成的,这是非常早的,并且减少了在 main() 之前运行的初始化代码可能出现的错误,或者诸如系统的动态加载器之类的事情,这应该会导致很小的风险。

查看终端是否支持 utmp/wtmp 的一种简单方法是运行w命令。结果输出将表明w命令(如果终端支持该功能)。我看到这个xterm:

09:57:14 更新 2:34, 5 位用户, 平均负载: 0.05, 0.01, 0.00
来自登录的用户 TTY@ IDLE JCPU PCPU 什么
汤姆 pts/1 192.168.1.8:S.0 07:24 5:45 7.49s 7.46s 邪恶
汤姆 pts/2 192.168.1.8:S.1 07:25 42:02 0.13s 0.10s ded /usr/build/
汤姆 pts/3 192.168.1.8:S.2 09:15 7:45 0.41s 0.38s ded rpmbuild//S
汤姆 pts/4 192.168.1.8:S.3 09:51 12.00s 0.16s 0.00s sh -c uxterm-de
汤姆 pts/5 本地主机:10.0 09:57 0.00s 0.04s 0.00sw

这在st:

09:59:07 更新 2:36, 4 位用户, 平均负载: 0.00, 0.00, 0.00
来自登录的用户 TTY@ IDLE JCPU PCPU 什么
汤姆 pts/1 192.168.1.8:S.0 07:24 7:38 7.58s 7.55s 邪恶
汤姆 pts/2 192.168.1.8:S.1 07:25 43:55 0.13s 0.10s ded /usr/build/
汤姆 pts/3 192.168.1.8:S.2 09:15 9:38 0.41s 0.38s ded rpmbuild //来源/
汤姆 pts/4 192.168.1.8:S.3 09:51 27.00s 0.39s 0.00s sh -c stterm

相关内容