Kad apsaugoti savo kompiuterių tinklą nuo tikrų blogiukų nepakanka turėti linuksinius kompiuterius, juos dar reikia tinkamai sukonfigūruoti. JAV „Nacionalinė saugumo agentūra“ (NSA) apie kompiuterių saugumą tikriausiai žino viską ir mūsų laimei, tomis žiniomis nė kiek nebijo pasidalinti.

Jie savo tinklalapyje patalpino išsamias instrukcijas (PDF) kaip suderinti RedHat Enterprise Linux 5 absoliučiam saugumui. Taip pat, čia rasite labai sutrumpintą versiją-atmintinę. Kažką panašaus galima rasti Debian-ui (PDF, spauskite šią nuorodą).

Pasirūpinkit savo kompiuteriu maksimaliai. Paranojos niekuomet nebus per daug ;)

Nors įvairių programų konfigūraciniai failai sudėti nuspėjamose vietose, prireikus jų kartą per šimtą metų tenka pakrapštyti pakaušį ir prisiminti kur ieškoti. Programų ir jų konfigų pavadinimai nebūtinai sutampa, kad surasti failą tenka pažiūrėti į kelias vietas. Surasti ne problema, bet laikas gaištasi, užgaunama tikro linuksoido savimeilė.

Kad nuslopinti sukilusius nemalonius jausmus, padarykim kad komandinėje eilutėje įrašius „setup programos_pavadinimas“ iškart galėtume redaguoti reikiamą konfigą. Maždaug tokia pati idėja kaip su man puslapiais – nereikia nieko prisiminti, užtenka žinoti programos pavadinimą.

Tokią idėją įgyvendinti paprasta. Pirma, į ~/.bashrc įdedame funkciją setup():


setup() {
  if [ $# = 0 ]
  then
   cat $HOME/.config/list
  else
   komanda=`grep ^$1 $HOME/.config/list | cut -f 2-`
   $komanda
  fi
}

(tikrinam ar įvesti argumentai, jei ne, parodomas list failo turinys, jei argumentas yra, su grep list faile ieškom tos programos, ištraukiam komandą, kuri eina po tabuliacijos ir ją įvykdom)

Antra, sukuriam failą ~/.config/list kuriame bus komandinių eilučių, paleidžiančių konfigo failus, sąrašas. Štai kelios eilutės iš sąrašo:


### progr. pav. ### tabas ### konfigą atidaranti komanda
setup  nano ~/.config/list
bash   nano ~/.bashrc
arch   sudo nano /etc/rc.conf
kde    systemsettings

Pačia pirma eilute pasirūpinu lengvu šio sąrašo pasiekimu (komanda bus: setup setup).

Į kitas eilutes įrašykit dažniausiai redaguojamus konfigus. Jei konsolę naudojat grafinėj aplinkoj, tokiu būdu drąsiai galit paleidinėti grafines programas, pavyzdžiui kaip aš, KDE sistemos nustatymus.

Susidūriau vakar su problemėle. Kopijuojant gigabaitinį failą į USB atmintuką kompiuteris ima smarkiai stabdyti, net pelės žymeklis laikas nuo laiko prišąla prie ekrano. Pasižiūrėjau su top-u, procesorius beveik neapkrautas, jis neturėtu stabdyti. RAM užpildytas pilnai, čia aišku kešuojamas kopijuojamas failas, bet į swap-ą nieko nekrauna, todėl stabdyti taip pat neturėtu.

Priežastis paaiškėja pažiūrėjus į šią eilutę:

Cpu(s): 2.1%us, 1.3%sy, 0.0%ni, 0.3%id, 96.3%wa, 0.0%hi, 0.0%si, 0.0%st

96.3%wa reiškia, kad procesorius nieko daryti negali nes užsiėmęs laukimu kol atsilaisvins kažkoks procesas. Kvaila situacija panaši į valdininko darbą…

Šiandien radau sprendimą. Pasirodo problema linux užduočių planavimo nustatymuose. Jis bando vieną, neskaidomą užduotį paskirstyti tarp dviejų branduolių. O jie vienas kitą blokuoja :( Ką darom? Pirmiausia pažiūrim į pertraukimų sąrašą:

kiras@linuksoidas $ cat /proc/interrupts
      CPU0   CPU1
...
19:   99     29095 IO-APIC-fasteoi ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3
...

Susirandam pertraukimų numerius skirtus usb jungtims. Pas mane tik vienas, 19. Tada pririšam juos prie vieno kurio nors branduolio, pavyzdžiui prie nulinio:

echo 1 > /proc/irq/19/smp_affinity

… žiūrim kas gavosi. Man šis veiksmas padėjo. Jei susidūrėt su tokia pačia problema ir priežastis ta pati, padės ir jums.

Ilgą laiką buvau Openbox naudotojas, o prieš tai naudojau Fluxbox, o dar prieš tai Gnome, o pradėjau nuo KDE. Bet jos visos turėjo vieną ir tą patį trūkumą: jos netvarkė langų už mane. Unix filosofija visuomet teigė, kad programa turi atlikti vieną darbą ir jį atlikti gerai. Jei langų tvarkyklė neveikia pagal savo pavadinimą ir palieka visus minimize/maximize džiaugsmus man kaip naudotojui tai ji neatitinka Unix filosofijos. Kadangi net langų tvarkyklė neatitinka Unix filosofijos tai tada nėra fun naudotis kompiuteriu. Taip galiausiai tas langinių tampymas pagal windows įpročius mane užkniso ir taip atėjo laikas naujovėms. Atėjo Awesome laikas. O tai atrodo maždaug taip:

ArchLinux___Awesome_Greenish_by_nustyle

Esminė idėja labai paprasta atidaromas naujas langas, o likę sumažinami pagal iš anksto užprogramuotą schemą kurią galima pasirinkti arba susikurti. Visi kvaili tampymai ir -/☐/x eina *. Pele užtempus ant lango arba Mod4+j kombinacija aktyvuojami vis kiti langai. Mod4+f kombinacija perjungia tą langą į fullscreen rėžimą. Mod+skaičiai siūlo turėti dar iki 9 darbastalių. Tie kas nori geriau pažinti awesome valdymą siūlau paskaityti:

man awesome

Norint galima susikonfigūruoti *box stiliaus „startą“ arba windows stiliaus startą arba netgi paleisti programas klavišų kombinacijomis. Pvz.: Mod4+Enter atidaro terminalą. Būtent didžiausios linksmybės prasideda pradėjus konfigūruoti. Viskas valdoma per Lua (lua.org) skriptus. Kalba nėra sunki. Tarkime jei norime, kad klavišų Mod4+m kombinacija atidarytų Firefox mums reikės tokios papildomos eilutės awesome/rc.lua skripte:

awful.key({ modkey, }, "m", function () awful.util.spawn("firefox") end),

Jei kam įdomu bus galėsiu plačiau paaiškinti Awesome Lua skriptinimą, bet tai gana savaime suprantama, ypač jei žiūrite į jau esamus pavyzdžius. Labiausiai žavi galimybės: vos keliomis viena į kitą panašiomis eilutėmis pasidariau tokį pat menu kokį mėgau ant Openbox ir be to susikūriau klavišų kombinacijas visoms mėgstamiausioms programoms paleisti. Vėliau manau padarysiu dar daugiau. Labiausiai gundo viršuje esančios juostos „užskriptinimas“ taip, kad joje matyčiau tik ką noriu.

Šiomis dienom susidūriau su net keliais Ubuntu naujokais ir žinot ką? Jie visi amžinai randa įvairiausių ir sunkiausių būdų kaip instaliuoti programas į Linux kurie galiausiai jiems per daug sudėtingi pasirodo.  Viskas iš tikrųjų yra labai paprasta ir atliekama taip kaip čia parodyta 1:00-1:20
Ar labai panašiai jei turite kitą ne „Debian-based” distribuciją.

Kitas variantas yra susirasti paketų tvarkyklę Synaptic ar ką nors panašaus. Niekada, dar kartą kartoju niekada jums nereikia eiti ilgu ir nuobodžiu windos keliu. Nereikia instaliuojant programą atsidaryti interneto naršyklės ir ko nors per ją siųstis savo nuožiūra, nebent kokie nors forumai kur nors nurodo viską kaip nors kitaip ir detaliai.

Tikiuosi šitas mielas klipukas prisidės prie paprasto klausimo išsprendimo taip kaip priklauso: paprastai ir greitai. Sėkmės instaliuojant. ;)

Tai labai paprasta:

  • $ pdftops apsaugotas.pdf tmp.ps
  • $ pstopdf tmp.ps naujas.pdf

Zombių būna ne vien Holivude, linukse jie taip pat kartais apsigyvena. Juos aptikti nėra sunku, bet nužudyti problematiška, mirti jie nesiteikia. Juk jie zombiai! Skirtingai nuo Holivudiškų, linuksiniai zombiai nekenksmingi ir neužkrečiami.

Zombiais linukse vadinami procesai, kurie jau nustojo veikti, bet įrašas iš procesų sąrašo dar nepašalintas. Tą įrašą pašalinti turėtu „motininis“ (parent) procesas, kuris sukūrė „dukterinį“ (child) procesą, bet pastarasis nusibaigė anksčiau nei buvo tikimąsi. Jei viskas tvarkoje, zombis po kurio laiko bus pašalintas. Bet kartais, dėl programinių klaidų, zombis lieka kabėti.

Kaip zombius aptikti? Tikriausiai žinot komandą top. Pasileiskit, ir Tasks eilutės gale bus įrašas „kažkiek zombie“. Štai, pas mane yra net vienas toks:

zombie

Tikriausiai apie jį norėsite sužinoti daugiau informacijos, koks procesas nenori mirti ir iš kur jis atsirado? Informaciją apie zombį parodys ši komanda:

$ ps -el | grep Z

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 Z 0 17607 1671 0 80 0 - 0 ? ? 00:00:00 dhcpcd <l;defunct<

Pas mane niekaip nemiršta dhcpcd procesas, kurio ID 17607. Kad išsiaiškinti zombio gimdytoją, pirmiausia žiūriu į PPID (Parent Process ID) ir tada ieškau procesu su šiuo ID:

$ ps -el | grep 1671

1 S 0 1671 1 0 80 0 - 42278 ? ? 00:08:44 wicd
0 S 0 1675 1671 0 80 0 - 20296 ? ? 00:02:44 wicd-monitor
4 Z 0 17607 1671 0 80 0 - 0 ? ? 00:00:00 dhcpcd

Štai kas pagimdė mano zombį, wicd ─ WiFi demonas! Pabandykim zombį nužudyti:

$ sudo kill -9 17607

Deja, zombiai taip lengvai nemiršta. Šis negyvėlis vis dar gyvas :( Kad nužudyti zombį linukse, žudyti reikia ne patį zombį bet jo gimdytoją! Bet ne viskas taip paprasta, jei zombio gimdytojas yra init procesas (PID numeris 1), tai nužudę jį užmušim visą linuksą. Bus tas pats kaip nuspausti reset mygtuką. Mano atveju, nužudžius wicd nieko baisaus nenutiks, tik neturėsiu interneto. Ir kai paleisiu wicd vėl, jis sukurs tą patį dhcpcd procesą, kuris dėl kažkokios smulkios klaidelės vėl taps zombiu.

Tai ką daryti? Ogi nieko. Linuksiniai zombiai smegenų nevalgo ─ nenaudoja atminties ir nerija procesoriaus resursų. Viskas ką jie daro, tai užima papildomą eilutę procesų sąraše, nieko daugiau.

Truputį daugiau apie zombius skaitykit čia [EN]. Ir dar čia, bendrai apie procesus [RU].