urxvt avvia due processi
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
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