私はそれを使い始め、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
(この機能を使用すると、who
そしてlast
注文する)。直接そうすることは潜在的な脆弱性と見なされます。 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 のドキュメントでは、フォークを異なる方法で説明します。
私のOSでutmp / ptysをサポートするには、setuid / setgidを作成する必要があります。これは安全ですか?
これはバージョン7.1以降に適用されます。これで、オペレーティングシステムに必要な権限を使用してurxvtを正しくインストールすることをお勧めします。
rxvt-unicodeがsetuidまたはsetgidを実行していることを検出すると、ヘルパープロセスに分岐して特権タスク(一部のシステムではpty処理、他のシステムではutmp / wtmp / lastlog処理)を実行し、すぐに権限を削除します。これは、実行時に権限を維持する他のほとんどの端末よりもはるかに安全です(ただし、攻撃者には「助けになる」可能性があるPerlソルバーなどの機能が含まれているため、urxvtに関連しています)。
このフォークは非常に初期段階であるmain()で最初に実行され、main()の前に実行されている初期化コードやシステムの動的ローダーなどで発生する可能性があるエラーを減らします。これにより危険がほとんど発生しません。
ターミナルがutmp / wtmpをサポートしていることを確認する簡単な方法は、次のように実行することです。w
注文する。結果の出力は次のことを示します。w
コマンド(ターミナルがこの機能をサポートしている場合)私はこれを見るxterm
:
09:57:14 更新 2:34, ユーザー 5 人, 負荷平均: 0.05, 0.01, 0.00 ログインしたユーザーTTY @ IDLE JCPU PCPUから Tompts/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 localhost:10.0 09:57 0.00秒0.04秒0.00sw
これはst
:
09:59:07 更新 2:36, ユーザー 4 人, 負荷平均: 0.00, 0.00, 0.00 ログインしたユーザーTTY @ IDLE JCPU PCPUから Tompts/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 //source/ トムpts/4 192.168.1.8:S.3 09:51 27.00s 0.39s 0.00s sh -c stterm