Rxvt
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
or上看到這種行為xterm
。他們為自己打開一個程序和bash
. 正常嗎?Debian 10,rxvt-unicode 包。
**
urxvt
*執行 setuid/setgid 以使用utmp/wtmp
(允許您使用who
andlast
命令的功能)。直接這樣做被認為是一個潛在的漏洞。 **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 的文件以不同的方式解釋了分叉:
應該是,從 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