KamoCRM

Goccia `su` — ha ingoiato SIGWINCH, quindi nessun terminale mai ridimensionato

FixKlusterServices
Spegnimento
3 settembre 2026 alle ore 19:11 UTC
Autore
Kamo
Impegno
0b5b8a3

Catturato eseguendo il protocollo contro la macchina dal vivo, non leggendolo: dopo un telaio di controllo di ridimensionamento, `tput cols` nella shell ha ancora riportato la dimensione il terminal aperto a. `su` FORKS piuttosto che execs, quindi il client tmux sedeva in un gruppo di processo diverso dal primo piano del PTY, e il SIGWINCH il kernel solleva su TIOCSWINSZ andò a `su`, che lo ignora. Ogni guscio avvolto in qualsiasi larghezza della finestra prima aveva, e meno, vim e htop ha disegnato a quello sbagliato. L'agente è già radice, quindi ora cade privilegi se stesso — initgroups, setgid, Setuid, chdir — ed execs tmux direttamente. tmux diventa il processo di primo piano del PTY e il segnale atterra dove è destinato. Tre cose cadono da esso, tutti loro miglioramenti: * L'ambiente bambino è ora BUILT piuttosto che ereditato, e questo è un confine di sicurezza, non tidiness. L'ambiente di questo processo detiene KAMO DESKTOP AGENT TOKEN — il token del portatore per ogni operazione di conto questa macchina — e un bambino che ha ereditato os.environ avrebbe consegnato a shell del membro, dove `env` lo stampa. "su -" capitava di pulirlo; niente si basava su questo di proposito. * Nessuna shell parses una stringa di comando dovunque su questo percorso più. argv è un elenco di parti convalidate. * Nessuna sessione PAM è aperta, quindi un terminale non registra più una sessione di login che il loginctl conterebbe contro l'un-desktop-session-per-utente di questa macchina politica. Aprire un terminale non deve mai essere in grado di ottenere il desktop di qualcuno Si e' ritirato. Il check-account abilitato nel gestore ora trasporta tutto il peso, dal momento che su avrebbe rifiutato una password chiusa stessa e setuid non lo farà. Era già là; ora è carico-portante e lo dice. Inoltre: la pompa ritorna invece di sollevare quando il suo coetaneo scompare mid-select (EBADF/ECONNRESET). Questa è la fine ordinaria di un terminale — una scheda chiusa — non una colpa. 113 test, tra cui uno che mette un token falso in os.environ e afferma che lo fa non raggiungere il bambino.

Tutte le modifiche

Come quello che vedi la spedizione?

Tutto questo arriva nel vostro spazio di lavoro da solo. Iniziare sul piano gratuito e leggere di nuovo questa pagina in un mese.

Inizia gratis per sempreVisualizza il prezzo