Rxvt

urxvt 啟動兩個程序

  • October 25, 2020

我已經開始使用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。我沒有在stor上看到這種行為xterm。他們為自己打開一個程序和bash. 正常嗎?

Debian 10,rxvt-unicode 包。

**urxvt*執行 setuid/setgid 以使用utmp/wtmp(允許您使用whoandlast命令的功能)。直接這樣做被認為是一個潛在的漏洞。 **xterm**通常使用utempter來防止這種情況。 **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 的文件以不同的方式解釋了分叉:

我需要在我的作業系統上設置 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 up 2:34,5 個使用者,平均負載:0.05, 0.01, 0.00
來自登錄的使用者 TTY@空閒 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/
tom 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@空閒 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/
tom pts/3 192.168.1.8:S.2 09:15 9:38 0.41s 0.38s ded rpmbuild//SOURCES/
湯姆 pts/4 192.168.1.8:S.3 09:51 27.00s 0.39s 0.00s sh -c stterm

引用自:https://unix.stackexchange.com/questions/616288