Jatuhkan 'su' - itu menelan SIGWINCH, sehingga tidak ada terminal yang pernah resized

FixKlusterServices
Dikirim
3 September 2026 pukul 19.11 UTC
Penulis
Kamo
Commit
0b5b8a3

Tertangkap dengan menjalankan protokol terhadap mesin hidup, bukan dengan membacanya: setelah sebuah frame kontrol ubah ukuran, 'tput bestin' dalam shell masih melaporkan ukuran terminal dibuka di. 'su' FORKS daripada eksekutif, sehingga klien tmux duduk dalam grup proses yang berbeda dari PTY 's latar depan satu, dan SIGWINCH kernel menimbulkan di TIOCSWINSZ pergi ke 'su', yang mengabaikan itu. Setiap shell dibungkus pada apapun lebar jendela pertama memiliki, dan kurang, Vim dan hotop menarik ke salah satu. Agen sudah root, jadi sekarang tetes hak istimewa itu sendiri - dalam kelompok, setgid, setuid, chdir - dan eksekutif tmux langsung. tmux menjadi proses PTY latar depan dan sinyal mendarat di mana itu dimaksudkan untuk. Tiga hal yang jatuh dari itu, semua dari mereka perbaikan: * Lingkungan anak sekarang BUILT daripada diwariskan, dan itu adalah batas keamanan, tidak kegelisahan. Lingkungan proses ini memegang KAMO _ DESCTOP _ AGEN _ TOKEN - tanda tangan pembawa untuk setiap operasi akun di mesin ini - dan anak yang mewarisi os.environ akan menyerahkannya kepada shell anggota, mana 'env' sidik jari itu. 'su -' terjadi untuk menghapus itu; tidak ada adalah mengandalkan itu dengan sengaja. * Tidak ada shell parses perintah string mana saja di jalur ini lagi. argv adalah Daftar bagian yang sah. * Tidak ada sesi PAM yang dibuka, sehingga suatu terminal tidak lagi mendaftarkan sesi login loginctl yang akan menghitung terhadap satu mesin ini - desktop -session- per- pengguna kebijakan. Membuka terminal tak boleh dapat desktop seseorang menuai. Pemeriksaan akun yang dicantup- dalam handler sekarang membawa seluruh berat, karena su akan menolak password terkunci itu sendiri dan setuid tidak akan. Itu sudah ada; sekarang load- bantalan dan mengatakan begitu. Juga: pump return daripada menaikkan ketika peer nya menghilang mid- select (EBADF / ECONNRESET). Itu adalah akhir biasa terminal - tab tertutup - bukan kesalahan. 113 tes, termasuk salah satu yang menempatkan token palsu di os.environ dan menegaskan hal itu tidak tidak mencapai anak.

Semua perubahan

Seperti apa yang Anda lihat pengiriman?

Semua pembaruan ini secara otomatis mendarat di ruang kerja Anda. Mulai bebas dan menontonnya tumbuh minggu demi minggu.

Mulai Bebas SelamanyaTampilkan Harga