urxvt avvia due processi

Oct 25 2020

Ho iniziato a utilizzare urxvte ho notato che avvia 2 PID ogni volta che viene aperto. Sono consecutivi. Non includo 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

Ho provato urxvtd(il demone rxvt), avvia anche 2 PID. Non ho visto questo comportamento su sto xterm. Aprono per se stessi un processo e bash. È normale?

Debian 10, pacchetto rxvt-unicode.

Risposte

1 ThomasDickey Oct 25 2020 at 19:57

urxvtesegue setuid / setgid con cui lavorare utmp/wtmp(la funzione che ti permette di usare i comandi whoe last). Farlo direttamente è considerato una potenziale vulnerabilità. xtermgeneralmente usa assoluta , per proteggersi da ciò. stnon ha supporto diretto per utmp/wtmp. Secondo le sue FAQ, puoi farlo funzionare usando un altro programma:

## Why does st not handle utmp entries?

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

La documentazione di urxvt spiega il fork in un modo diverso:

Devo impostare setuid / setgid per supportare utmp / ptys sul mio sistema operativo, è sicuro?

Dovrebbe esserlo, a partire dalla versione 7.1. Sei incoraggiato a installare correttamente urxvt con i privilegi necessari per il tuo sistema operativo ora.

Quando rxvt-unicode rileva che esegue setuid o setgid, eseguirà un fork in un processo di supporto per operazioni privilegiate (gestione pty su alcuni sistemi, gestione utmp / wtmp / lastlog su altri) e rilascia immediatamente i privilegi. Questo è molto più sicuro della maggior parte degli altri terminali che mantengono i privilegi durante l'esecuzione (ma è più rilevante per urxvt, poiché contiene cose come interpreti perl, che potrebbero essere "utili" per gli attaccanti).

Questo fork è fatto come il primo in main (), che è molto presto e riduce possibili bug al codice di inizializzazione eseguito prima di main (), o cose come il caricatore dinamico del tuo sistema, che dovrebbe comportare un rischio minimo.

Un modo semplice per vedere se un terminale supporta utmp / wtmp è eseguire il wcomando. L'output risultante mostrerà quel wcomando se il terminale supporta la funzione. Lo vedo in xterm:

 09:57:14 su 2:34, 5 utenti, media di caricamento: 0,05, 0,01, 0,00
UTENTE TTY DA LOGIN @ IDLE JCPU PCPU COSA
tom pts / 1 192.168.1.8:S.0 07:24 5:45 7.49s 7.46s vile
tom pts / 2192.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
tom pts / 4 192.168.1.8:S.3 09:51 12.00s 0.16s 0.00s sh -c uxterm-de
tom pts / 5 localhost: 10.0 09:57 0.00s 0.04s 0.00sw

e questo in st:

 09:59:07 su 2:36, 4 utenti, media di caricamento: 0.00, 0.00, 0.00
UTENTE TTY DA LOGIN @ IDLE JCPU PCPU COSA
tom pts / 1 192.168.1.8:S.0 07:24 7:38 7.58s 7.55s vile
tom 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 /
tom pts / 4 192.168.1.8:S.3 09:51 27.00s 0.39s 0.00s sh -c stterm