SysRq: Killer de proces
Deci, crezi că poți ucide orice program aflat în mișcare cu comanda `kill -9`? Dar dacă aveți un server X sau programul dvs. care folosește biblioteca "minunată" svgalib? Aici ajungeți la salvarea "magic SysRq" - o combinație specială de taste, interceptată direct de kernel, care poate fi utilizată, precum și alte combinații pentru a face o oprire de urgență.
[Vikas G P. Traducere: Vladimir Srednikh]
Deci, crezi că poți ucide orice program care se mișcă cu comanda kill -9. Dar dacă aveți un server X sau programul dvs. care folosește biblioteca "minunată" svgalib? Acolo, magia SysRq ne va ajuta.
Magic SysRq este o combinație de chei, interceptată direct de kernel, care poate fi utilizată, precum și alte combinații pentru a face o închidere de urgență. Toate acestea sunt descrise în documentația / sysrq.txt și sunt implementate în drivere / char / sysrq.c în codul sursă al kernel-ului. Acest lucru se face, în principal, pentru dezvoltatorii kernel-ului, dar poate fi util și pentru oamenii obișnuiți. Deoarece aceasta se face ca parte a driverului de tastatură, acesta funcționează întotdeauna în timp ce nucleul rulează.
Notă: la sfârșitul articolului, când menționez "tasta SysRq" - aceasta înseamnă o cheie (în partea stângă a tastei Scroll lock). Și când menționez "magia SysRq" - aceasta va însemna o combinație
Pentru a face combinația magică SysRq disponibilă, nucleul trebuie să fie compilat cu opțiunea CONFIG_MAGIC_SYSRQ. Majoritatea distribuțiilor îl includ în mod implicit. Dacă nu este cazul, atunci trebuie doar să o recompilați. )
După ce terminați cu kernel-ul, verificați dacă SysRq este activat în mod implicit.
Dacă vedeți 0 - înseamnă că nu este permisă. Scrieți orice număr non-zero în fișierul / proc / sys / kernel / sysrq pentru ao rezolva.
Pentru a vă asigura că a fost întotdeauna rezolvată, adăugați aceste linii la unul dintre scenariile de inițializare (de preferință în rc.local).
Alternativ, puteți utiliza fișierul / etc / sysctl sau /etc/sysctl.conf, în cazul în care este prezent în distribuție (de exemplu, în RedHat mea fișierul este). Pentru a activa sysrq, adăugați următoarea linie:
Combinația magică a SysRq este unică. Fiecare tastă atunci când este apăsată sau eliberată generează un cod numit cod de scanare. În ciuda faptului că două chei (Alt + SysRq) sunt utilizate pentru combinația magică SysRq, este trimis un singur cod de scanare (0x54, zecimal 84). Puteți verifica acest lucru cu comanda showkey -s.
[Ed. - un memento pentru incepatori: nu este nevoie sa apasati nimic pe tastatura timp de 10 secunde, astfel ca showkey-ul programului sa-si termine munca. Și totuși - în "X", showkey refuză să lucreze, așa că rulați-o în consola text.]
Și cum să o folosiți?
Magic SysRq este numit ca
k: cheia de acces securizată. Acesta ucide toate procesele care rulează pe consola virtuală curentă, astfel încât niciun program curios inutil să poată capta apăsările de la tastatură în timp ce tastați parola.
u: O încercare de a demonta sistemul de fișiere rădăcină ( „/“) și remontarea-l în modul doar-pentru-citit. În plus față de oprirea de urgență, această comandă poate fi util dacă aveți un Linux doar o singură partiție și doriți să efectuați o fsck sau nivel scăzut de editare a sistemului de fișiere (de exemplu, recuperarea fișierelor șterse de pe un sistem de fișiere ext2 Vezi Ext2FS Anularea ștergerii Îndrumătorul (Ed .. - Pentru a restaura fișierele șterse în sistemul de fișiere ext3, montați-l ca ext2.)
s: Această comandă resetează conținutul tampoanelor pe disc. Acest lucru trebuie făcut înainte de dezasamblare.
b: Implementează un reboot direct, la fel ca un buton Resetare. Pentru o închidere sigură, trebuie mai întâi să resetați tampoanele și să demontați sistemul.
p: Imprimă conținutul registrelor procesorului.
(Notă: este corect, nu este clar pentru mine, ca programator, de ce - se schimbă la o viteză frenetică.)
(Notă: Sunt de acord că informațiile sunt scrise în jurnalele de sistem.)
m: Afișează informații despre memorie.
t: Afișează informații despre executarea sarcinilor.
0-9: Setează nivelul de ieșire specificat pentru depanare pentru consola.
e: Trimite semnalul SIGTERM (comanda de închidere) la toate procesele, cu excepția init.
i: Trimite un semnal SIGKILL (terminare necondiționată) la toate procesele, cu excepția init.
l: Trimite semnalul SIGKILL la toate procesele, inclusiv init (nu poți face nimic după asta).
"h" - Afișează ajutor (de fapt, orice altă cheie decât cele de mai sus va provoca ajutor, dar "h" este mai ușor de reținut :-)
închidere
Cum pot dezactiva modul SysRq? În documentația (sysrq.txt) nu există nimic specific în acest sens. Acolo se spune despre apăsarea tastelor stânga și dreapta Ctrl, Alt și Shift, dar am o cale mai ușoară. Trebuie doar să apăsați din nou Alt + SysRq și să ieșiți din acest mod.
Ceea ce înțeleg: nucleul își amintește starea magiei SysRq: presată sau eliberată. Când apăsați tasta pentru prima dată, starea se schimbă în starea presată. Și când apăsați orice tastă în timp ce este apăsat SysRq, kernel-ul îl interpretează ca o comandă. Dacă apăsați din nou SysRq, starea sa se modifică la eliberare, iar alte intrări de la tastatură sunt procesate conform programului. (De fapt, nu este atât de simplu, uneori metoda de mai sus nu funcționează, cred că este pentru că nucleul folosește tabele separate de traducere a codului când este apăsat magistrala SysRq.)
Tasta SysRq însemna inițial, după cum puteți ghici, "Solicitare de sistem". A fost folosită pe primele terminale IBM pentru a cere unui computer central să execute comanda. Această cheie este acum folosită rar, cu excepția, probabil, kernel-ului Linux.
siguranță
Efectuarea unui sistem de operare magistrală accesibilă pe o mașină (server) în desfășurare poate fi potențial periculoasă. Oricine are acces fizic la mașină poate "să cadă" mașina. De asemenea, trebuie să dezactivați SysRq dacă alte persoane se pot conecta la distanță de pe aparat. semnal
concluzie
Hack magic SysRq poate fi uneori foarte convenabil. Fiți atenți, totuși. De asemenea, vă oferă o privire asupra funcționării interne a kernel-ului. Dacă doriți, puteți adăuga câteva comenzi pe cont propriu!
Am absolvit liceul și locuiesc în Hassan, Karnataka, India (Hassan, Karnataka din India) încercând să echilibrez între studierea și studierea Linux-ului.
Vikas G P. Traducere: Vladimir Srednih - SysRq: Killer de proces Tipărește această pagină