Linux-Tips-HOWTO
 Paul Anderson <[email protected]>
 prevedel Andrej Grauf <[email protected]>
 v3.6, junij 1998, prevod 22. december 1998

 Ta HOWTO vsebuje namige in nasvete, ki jih boste te�ko na�li drugje,
 naredijo pa Linux prijaznej�i.
 ______________________________________________________________________


 Kazalo


 1. Uvod

 2. Kraj�i nasveti

    2.1 Uporabna zvija�a za Syslog
    2.2 Skripta za ogled stisnjenih HOWTO-jev
    2.3 Ali je dovolj prostora na disku???
    2.4 Pripomo�ek za odstranjevanje dnevnikov
    2.5 Priro�na skripta za odstranjevanje odlagali��
    2.6 Prena�anje imenikov med datote�nimi sistemi
    2.7 Iskanje najve�jih imenikov
    2.8 Glasilo za Linux
    2.9 Kako priti do popravka za program GNU make 3.70 in s tem
        prepre�iti �udno obna�anje VPATH
    2.10 Kako prepre�iti preverjanje sistema s programom fsck ob
         vsakem zagonu ra�unalnika?
    2.11 Kako se izogniti preverjanju, do katerega pride zaradi
         "zasedenosti naprav"
    2.12 Kako poiskati najve�je datoteke na trdem disku
    2.13 Kako natisniti strani, da jih boste lahko kasneje preluknjali
         in vstavili v mapo
    2.14 Na�in za iskanje dolo�enih regularnih izrazov v drevesnih
         strukturah datotek
    2.15 Skripta za odstranjevanje varnostnih kopij datotek in samodejno
         shranjenih datotek, ki jih tvorijo nekateri programi
    2.16 Kako ugotoviti, kateri proces zavzema najve� pomnilnika?
    2.17 Priprava programa vi na programiranje v programskem jeziku C
    2.18 Uporaba ctags za poenostavitev programiranja
    2.19 Zakaj se sendmail ob zagonu v distribuciji RedHat obesi za
         5 minut?
    2.20 Kako lahko preuredim distribucijo RedHat tako, da bom lahko
         uporabljal ukaz ls z barvami?
    2.21 Kako lahko ugotovim, katera knji�nica v /usr/lib vsebuje
         dolo�eno funkcijo?
    2.22 Prevedel sem majhen testni program v C-ju, ko pa ga po�enem,
         ne dobim nobenega rezultata!

 3. Podrobni nasveti

    3.1 Deljenje izmenjalnih particij med Linuxom in Windows
    3.2 Obnavljanje zbrisanih datotek
    3.3 Kako uporabljati nespremenljive oznake
    3.4 Nasveti, kam dati nove stvari
    3.5 Kako spremeniti vse velike �rke v imenih datotek v majhne �rke
    3.6 Kako nadgraditi sendmail
    3.7 Nekaj nasvetov za nove sistemske administratorje
    3.8 Kako nastaviti xdm-ovega izbiralca za izbiro gostitelja

 ______________________________________________________________________


 1.  Uvod


 Dobrodo�li v Linux Tips-HOWTO, seznamu zanimivih zvija� in
 optimizacij, ki naredijo Linux bolj zabaven. Spis vsebuje samo nasvete
 iz moje glave in nasvete iz prej�njega spisa Tips-HOWTO (Zakaj bi
 izpu��ali spodobne nasvete?). Zato bom zelo vesel va�ih najljub�ih
 namigov in nasvetov, ki jih bom tako lahko uvrstil v naslednji Tips-
 HOWTO.

 Paul Anderson, vzdr�evalec Linux TIPS HOWTO

 [email protected]


 2.  Kraj�i nasveti


 2.1.  Uporabna zvija�a za Syslog. Paul Anderson, vzdr�evalec spisa
 Tips-HOWTO

 Uredite datoteko /etc/syslog.conf in vstavite naslednjo vrstico:

      # Izpi�i vse na tty8
                                      *.*      /dev/tty8

 Opozorilo: NE POZABITE UPORABITI TIPKE TAB! Syslog ne mara presledkov.

 2.2.  Skripta za ogled stisnjenih HOWTO-jev. Didier Juges, dj@des�
 tin.nfds.net

 Za�etnik za�etniku. Tu je kratka skripta, ki vam bo olaj�ala iskanje
 in ogled spisov howto. Moji HOWTO-ji so v imeniku /usr/doc/faq/howto/
 in so stisnjeni s programom gzip. Imena datotek so XXX-HOWTO.gz, kjer
 XXX predstavlja temo.  V imeniku /usr/local/sbin sem ustvaril
 naslednjo skripto in jo poimenoval "howto":

      #!/bin/sh
      if [ "$1" = "" ]; then
          ls /usr/doc/faq/howto | less
      else
          gunzip -c /usr/doc/faq/howto/$1-HOWTO.gz | less
      fi

 Kadar skripto kli�ete brez argumenta, ta izpi�e imenik s HOWTO-ji, ki
 so na voljo, kadar pa vnesete prvi del imena datoteke (pred vezajem),
 kot argument, samodejno raztegne  in izpi�e spis (original pri tem
 ostane nespremenjen).

 Za ogled spisa Serial-HOWTO vnesite:

      $ howto Serial


 2.3.  Ali je dovolj prostora na disku??? Hans Zoebelein, zocki@gold-
 fish.cube.net


 V tem razdelku boste na�li kratko skripto, ki bo od �asa do �asa
 preverila, ali je �e dovolj prostora na napravah, ki jih lahko
 izpi�ete z ukazom mount (diski, cdrom, disketa,)

 �e zmanjkuje prostora, se na zaslonu vsakih X sekund izpi�e sporo�ilo,
 za vsako zapolnjeno napravo pa boste dobili tudi elektronsko
 sporo�ilo.

 #!/bin/sh

 #
 # $Id: check_hdspace,v 1.18 1996/12/11 22:33:29 root Exp root $
 #

 #
 # Ko so datoteke tmp zapolnile moje diske, sem za�el prejemati skrivnostna
 # sporo�ila o napakah. Zato sem spisal tole skripto, ki me opozori, preden
 # se diski zapolnijo.
 #
 # �e vam te vrstice obvarujejo stre�nik pred poru�itvijo,
 # po�ljite elektronsko sporo�ilo z zahvalami na [email protected].
 # �e vam tale skripta povzro�a te�ave, mi je stra�no �al, ampak
 # posvaril sem vas: brez prito�b.
 # �e res obvladate delo s sed, mi prosim oprostite :)
 #

 #
 # Po�eni in pozabi: V rc.local vstavite 'check_hdspace &'.
 # Preveri koli�ino nezasedenega prostora na napravah vsakih $SLEEPTIME sekund.
 # Preverite lahko tudi diskete in tra�ne naprave. :)
 # �e je nezasedenega prostora manj kot $MINFREE (kb), bo spro�ila opozorilo
 # in poslala eno elektronsko sporo�ilo za vsako triggering napravo
 # na $MAIL_TO_ME.
 # �e je prostora ve�, kot je spodnja meja, podana z omejitvijo, pri
 # kateri se spro�ijo opozorila, se tudi opravilo elektronskega
 # po�iljanja ponovno opremi.
 #

 # NALOGA: Razli�en $MINFREE za vsako napravo.
 # �e zmanjka prostora na disku, iz imenikov /*tmp varno odstrani
 # staro �aro.

 DEVICES='/dev/sda2 /dev/sda8 /dev/sda9'    # naprava; tu navedite diske
 # spro�i opozorilo
 SLEEPTIME=10                               # sec; mirovanje med preverjanjem
 MAIL_TO_ME='root@localhost'               # fool; kdo prejme opozorilo

 # ------ pod to vrstico ni potrebno vna�ati sprememb (vsaj upam :) -------

 MINMB=0
 ISFREE=0
 MAILED=""
 let MINMB=$MINFREE/1024         # ja, mi smo striktni :)

 while [ 1 ]; do
    DF="`/bin/df`"
       for DEVICE in $DEVICES ; do
       ISFREE=`echo $DF | sed s#.\*$DEVICE" "\*[0-9]\*""\*[0-9]\*" "\*## | sed s#" ".\*##`

       if [ $ISFREE -le $MINFREE ] ; then
               let ISMB=$ISFREE/1024
               echo  "OPOZORILO: $DEVICE samo $ISMB mb prosto." >&2
               #echo "sem pridejo dodatne stvari" >&2
               echo -e "\a\a\a\a"

               if [ -z  "`echo $MAILED | grep -w $DEVICE`" ] ; then
                      echo "OPOZORILO: Na $DEVICE samo $ISMB mb prosto.      (Spro�ilec je nastavljen na $MINMB mb)" \
                      | mail -s "OPOZORILO: Na $DEVICE le $ISMB mb prosto!" $MAIL_TO_ME
                      MAILEDH="$MAILED $DEVICE"
                      MAILED=$MAILEDH
                      # sem vstavite �e druga opravila, npr. �i��enje
                      # imenikov */tmp...
               fi
               elif [ -n  "`echo $MAILED | grep -w $DEVICE`" ] ; then
                       # �e je dovolj prostora, skripta odstrani
                       # oznako, da je bila elektronska po�ta poslana.
                       # Pripravljeni smo na novo opravilo po�iljanja
                       # elektronske po�te.
                       MAILEDH="`echo $MAILED  | sed s#$DEVICE##`"
                       MAILED=$MAILEDH
               fi

       done
       sleep $SLEEPTIME

 done


 2.4.  Tips-HOWTO Pripomo�ek za odstranjevanje dnevnikov. Paul Ander�
 son, vzdr�evalec spisa


 �e ste tak�ni kot jaz, potem imate seznam s 430 naro�niki, plus 100+
 sporo�il na dan preko UUCP. Torej, kaj naj hacker naredi s temi
 ogromnimi dnevniki? Namesti naj chklogs. Avtor programa chklogs je
 Emilio Grimaldo, [email protected], trenutno razli�ico 1.8, ki
 sama po sebi daje dovolj informacij o poteku namestitve (seveda bi
 bilo dobro preveriti tudi informacije v imeniku doc), pa lahko najdete
 na <ftp://ftp.iaehv.nl/pub/users/grimaldo/chklogs-1.8.tar.gz>.  Ko
 boste program namestili, dodajte vnos crontab v naslednji obliki:

      # Vsak dan ob 21:00 za�eni chklogs.
      00 21 * * *       /usr/local/sbin/chklogs -m

 Ko ste �e pri tem, ne pozabite omeniti avtorju, kako uporaben program
 je to :)


 2.5.  Priro�na skripta za odstranjevanje odlagali��. Otto Hammersmith,
 [email protected].


 Ustvarite datoteko z imenom rmcores (avtor jo imenuje handle-cores) in
 naslednjo vsebino:

 #!/bin/sh
 USAGE="$0 <directory> <message-file>"

 if [ $# != 2 ] ; then
          echo $USAGE
          exit
 fi

   echo Bri�em...
 find $1 -name core -atime 7 -print -type f -exec rm {} \;

 echo e-mailing
 for name in `find $1 -name core -exec ls -l {} \; | cut -c16-24`
 do
         echo $name
         cat $2 | mail $name
 done

 Naj jo opravilo cron za�ene vsake toliko �asa.


 2.6.  Prena�anje imenikov med datote�nimi sistemi. Alan Cox,
 [email protected]


 Hiter na�in za premik celotne drevesne strukture datotek iz enega na
 drug disk

      (cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xvfp -)

 (Da bi se izognili izgubi imenikov v primeru nesre�e, se premaknite iz
 cd /source/directory; tar itd. Hvala Jimu Dennisu, [email protected],
 ki me je opozoril na to. -Vzdr�evalec)


 2.7.  Iskanje najve�jih imenikov. Mick Ghazey, [email protected]


 Ali vas je �e kdaj zanimalo, kateri imeniki so na va�em ra�unalniku
 najve�ji? To lahko ugotovite na naslednji na�in:

      du -S | sort -n


 2.8.  Glasilo za Linux


 Zasluge ima John Fisk, avtor glasila za Linux. To je odli�en e-zine
 plus in �e brezpla�en! Kaj ve� bi lahko �e zahtevali? Oglejte si
 <http://www.linuxgazette.com>.

 MMG, izka�e se, da (1) glasilo za Linux (LG) sedaj izhaja enkrat
 mese�no in (2) John Fisk ni ve� njegov urednik, saj sedaj zanj skrbi
 ekipa pri SSC.


 2.9.  Kako priti do popravka za program GNU make 3.70 in s tem
 prepre�iti �udno obna�anje VPATH. Ted Stern, [email protected]
 ton.edu.


 Ne vem, ali ima veliko ljudi ta problem, vendar ima GNU make razli�ice
 3.70 "lastnost", ki mi ni v�e�. Namre� to, da se VPATH �udno obna�a,
 �e podate absolutno pot do datoteke. Obstaja zelo dober popravek, ki
 te te�ave odpravi in ga lahko dobite od Paula D. Smitha
 <[email protected]>. Po vsaki popravljeni izdaji programa GNU make,
 ustrezne popravke in dokumentacijo tudi objavi v novi�arski skupini
 "gnu.utils.lug". Ta popravek uporabim in ponovno prevedem gmake na
 vsakem sistemu, do katerega imam dostop.


 2.10.  Kako prepre�iti preverjanje sistema s programom fsck ob vsakem
 zagonu ra�unalnika? Dale Lutz, [email protected]


 V: Kako naj prepre�im programu e2fsckm, da bi ob vsakem zagonu
 preverjal trde diske?

 O: Ko ponovno zgradite jedro, je datote�ni sistem ozna�en kot
 "umazan", torej bo va� disk pregledan vsaki�, ko boste zagnali
 ra�unalnik. To lahko prepre�ite, �e za�enete:

      rdev -R /zImage 1

 S tem popravite jedro tako, da datote�nega sistema ne bo ve� obrav�
 naval kot umazanega.

 Opozorilo: �e uporabljate lilo, naj bo nastavitev za Linux v
 nastavitveni datoteki za lilo (obi�ajno je to /etc/lilo.conf)
 namenjena "samo za branje" (read-only).


 2.11.  Kako se izogniti preverjanju, do katerega pride zaradi
 "zasedenosti naprav". Jon Tombs, [email protected]


 �e pri zaustavitvi sistema pogosto dobite sporo�ilo o zasedenosti
 naprav, kar povzro�i, da se ob ponovnem zagonu izvede preverjanje
 datote�nega sistema, se lahko temu izognete na naslednji na�in:

 V datoteko /etc/rc.d/init.d/halt ali /etc/rc.d/rc.0 pred izvedbo ukaza
 umount -a dodajte vrstico

      mount -o remount,ro /mount.dir

 za vsak priklju�en datote�ni sistem, razen za /. To pomeni, da �e se
 pri zaustavitvi zaradi dolo�enih razlogov ne prekinejo vsi procesi in
 se ne izvede odklop diskov, bodo ti ob ponovnem zagonu vseeno �isti. S
 tem med zagonom pridobim veliko �asa.


 2.12.  Kako poiskati najve�je datoteke na trdem disku. Simon Amor,
 [email protected]


 ls -l | sort +4n

 Tisti, ki ste zares na tesnem s prostorom, lahko uporabite tudi
 naslednji na�in. To bo trajalo nekaj �asa, ampak odli�no deluje:

      cd /
      ls -lR | sort +4n


 2.13.  Kako natisniti strani, da jih boste lahko kasneje preluknjali
 in vstavili v mapo. Mike Dickey, [email protected]


      #!/bin/sh
      # /usr/local/bin/print
      # preprosta urejena oblika izpisa na list, ki ga boste tako lahko
      # preluknjali in vstavili v mapo.

      cat $1 | pr -t -o 5 -w 85 | lpr


 2.14.  Na�in za iskanje dolo�enih regularnih izrazov v drevesnih
 strukturah datotek, Raul Deluth Miller, [email protected]


 To skripto imenujem 'forall' (za vse). Uporabite jo na naslednji
 na�in:

      forall /usr/include grep -i ioctl
      forall /usr/man grep ioctl

 Pa �e vsebina skripte forall:

      #!/bin/sh
      if [ 1 = `expr 2 \> $#` ]
      then
            echo Usage: $0 dir cmd [optargs]
            exit 1
      fi
      dir=$1
      shift
      find $dir -type f -print | xargs "$@"


 2.15.  Skripta za odstranjevanje varnostnih kopij datotek in samodejno
 shranjenih datotek, ki jih tvorijo nekateri programi, Barry Tolnas,
 [email protected]


 Tu je preprosta dvo-vrsti�na skripta, ki prei��e ureditev imenika in
 odstrani emacs-ove samodejno shranjene (#) datoteke, varnostne kopije
 datotek (-), datoteke .o in datoteke .log, ki jih naredi TeX. Prav
 tako jo lahko uporabite za stiskanje datotek .tex in README. Na svojem
 sistemu sem jo imenoval 'squeeze' (stiska�).

      #!/bin/sh
      #SQUEEZE odstrani nepotrebne datoteke in stisne datoteke .tex in README
      #Avtor Barry tolnas, [email protected]
      #
      echo squeezing $PWD
      find  $PWD \( -name \*~ -or -name \*.o -or -name \*.log -or -name \*\#\) -exec rm -f {} \;
      find $PWD \( -name \*.tex -or -name \*README\* -or -name \*readme\* \) -exec gzip -9 {} \;


 2.16.  Kako ugotoviti, kateri proces zavzema najve� pomnilnika? Simon
 Amor, [email protected]


      ps -aux | sort +4n

 -ALI-

      ps -aux | sort +5n


 2.17.  Priprava programa vi na programiranje v programskem jeziku C,
 Paul Anderson, Vzdr�evalec spisa Tips-HOWTO


 V prostem �asu veliko programiram v programskem jeziku C, zato sem
 pripravil program vi, tako da je primeren za programiranje v tem
 jeziku. Tukaj je moj .exrc:

      set autoindent
      set shiftwidth=4
      set backspace=2
      set ruler

 �emu slu�ijo te nastavitve? Autoindent povzro�i, da vi avtomatsko
 poravna vsako vrstico glede na poravnavo prve vrstice, shiftwidth nas�
 tavi razdaljo ^T na 4 presledke, backspace nastavi na�in backspace,
 ruler pa povzro�i, da vi izpisuje �tevilo vrstic.  Da bi se pomaknili
 na dolo�eno vrstico, npr. v dvajseto, uporabite:

      vi +20 myfile.c


 2.18.  Uporaba ctags za poenostavitev programiranja


 Ve�ina hackerjev ima ctags �e name��en na svojem ra�unalniku, vendar
 ga ne uporabljajo. Zelo uporaben je lahko pri urejanju dolo�enih
 funkcij. Predpostavimo da imate v eni izmed mnogih izvornih datotek v
 imeniku programa, ki ga pi�ete, neko funkcijo, ki bi jo radi
 posodobili. To funkcijo bomo poimenovali foo(). Prav tako ne veste,
 kje v izvorni datoteki ta funkcija je. V tem primeru vam lahko pomaga
 ctags. Ko ga za�enete, program v trenutnem imeniku ustvari datoteko z
 imenom tags, ki vsebuje seznam vseh funkcij, podatke, v katerih
 datotekah so te funkcije in kje so v datotekah said. Datoteka tags
 izgleda nekako tako:

      ActiveIconManager     iconmgr.c     /^void ActiveIconManager(active)$/
      AddDefaultBindings    add_window.c  /^AddDefaultBindings ()$/
      AddEndResize          resize.c      /^AddEndResize(tmp_win)$/
      AddFuncButton         menus.c       /^Bool AddFuncButton (num, cont, mods, func, menu, item)$/
      AddFuncKey            menus.c       /^Bool AddFuncKey (name, cont, mods, func, menu, win_name, action)$/
      AddIconManager        iconmgr.c     /^WList *AddIconManager(tmp_win)$/
      AddIconRegion         icons.c       /^AddIconRegion(geom, grav1, grav2, stepx, stepy)$/
      AddStartResize        resize.c      /^AddStartResize(tmp_win, x, y, w, h)$/
      AddToClientsList      workmgr.c     /^void AddToClientsList (workspace, client)$/
      AddToList             list.c        /^AddToList(list_head, name, ptr)$/

 Da bi uredili npr. funkcijo AddEndResize() v programu vim, za�enite:

      vim -t AddEndResize

 S tem boste ustrezno datoteko odprli v urejevalniku, kazalec pa bo na
 za�etku funkcije.


 2.19.  Zakaj se sendmail ob zagonu v distribuciji RedHat obesi za 5
 minut? Paul Anderson, [email protected]


 To je precej pogost problem, skoraj �e FAQ. Ne vem, �e je RedHat
 odpravil ta problem v svoji distribuciji, lahko pa ga odpravite sami.
 Poglejte v datoteko /etc/hosts in ugotovili boste, da izgleda nekako
 tako:

      127.0.0.1               localhost       vasaskatla

 Ko se sendmail za�ene, poi��e ime gostitelja (v tem primeru
 vasaskatla).  Potem ugotovi, da je IP za vasaskatla 127.0.0.1. Send�
 mail tega ne mara, zato pri�ne z novim iskanjem. To nadaljuje tako
 dolgo, dokler kon�no ne obupa in kon�a. Odprava tega problema je zelo
 enostavna. Uredite datoteko /etc/hosts in jo preoblikujte nekako tako:

      127.0.0.1               localhost
      10.56.142.1             vasaskatla


 2.20.  Kako lahko preuredim distribucijo RedHat tako, da bom lahko
 uporabljal ukaz ls z barvami? Paul Anderson, [email protected]


 Distribucija RedHat vsebuje barvni ls, zakaj pa ne omogo�ijo uporabo
 barv kot privzeto nastavitev, pa presega moje znanje. Problem lahko
 re�ite tako:

 Najprej vnesite eval 'DIRCOLORS'.

 Nato alias ls='ls --color=auto'.

 In vstavite 'alias.....' v datoteko /etc/bashrc.


 2.21.  [email protected] Kako lahko ugotovim, katera knji�nica
 v /usr/lib vsebuje dolo�eno funkcijo? Pawel Veselow,


 Kaj storiti v primeru, �e prevajate nek program in pozabite vklju�iti
 potrebno knji�nico? Vsa poro�ila gcc so funkcijska imena.Tu je
 preprost ukaz, ki bo na�el, kar i��ete:

      for i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done

 Kjer je tgetnum ime funkcije, ki jo i��ete.

 2.22.  Prevedel sem majhen testni program v C-ju, ko pa ga po�enem, ne
 dobim nobenega rezultata!

 Verjetno ste program prevedli v binarno datoteko z imenom test, mar
 ne? Linux vsebuje program z imenom test, ki preveri, ali je dolo�en
 pogoj izpolnjen in rezultata nikoli ne izpi�e na zaslon. Namesto vnosa
 test uporabite ./test.


 3.  Podrobni nasveti


 3.1.  Deljenje izmenjalnih particij med Linuxom in Windows. Tony
 Acero, [email protected]


 1. Sformatirajte particijo kot particijo za DOS in na njej ustvarite
    izmenjalno datoteko za Windows, vendar operacijskega sistema
    Windows �e ne za�enite (naj izmenjalna datoteka zaenkrat ostane �e
    prazna, da jo je mo�no dobro stisniti).

 2. Ponovno za�enite ra�unalnik v Linuxu in shranite particijo v
    datoteko. Npr. �e je bila to particija /dev/hda8:

      dd if=/dev/hda8 of=/etc/dosswap

 3. Stisnite izmenjalno datoteko za DOS; ker je navidezno prazna, jo je
    mogo�e zelo dobro stisniti:

      gzip -9 /etc/dosswap

 4. Da bi pripravili in namestili izmenjalno datoteko v Linuxu, dodajte
    v datoteko /etc/rc naslednje: XXXXX je �tevilo blokov v navidezni
    particiji

      mkswap /dev/hda8 XXXXX
      swapon -av

    Prepri�ajte se, da ste v datoteko /etc/fstab dodali vnos za izmenjalno
    particijo.

 5. V primeru da va� osnovni/zagonski paket podpira /etc/brc ali
    /sbin/brc, v datoteko /etc/brc dodajte naslednje (druga�e to
    opravite ro�no, ko �elite ra�unalnik zagnati v DOSu|OS/2 in
    posku�ate izmenjalno particijo pretvoriti nazaj v razli�ico za
    dos/windows):

      swapoff -av
      zcat /etc/dosswap.gz | dd of=/dev/hda8 bs=1k count=100

 # Ne pozabite, da se na ta na�in zapi�e nazaj na particijo samo prvih
 100 blokov. Empiri�no sem ugotovil, da to zado��a.

 >>Kak�ne so prednosti in pomanjkljivosti tak�nega po�etja?

 Prednost: prihranite precej�no koli�ino prostora na disku.
 Pomanjkljivost: �e 5. korak ni avtomatiziran, boste morali to opraviti
 ro�no, kar bo upo�asnilo proces ponovnega zagona za nanosekundo :-)


 3.2.  Obnavljanje zbrisanih datotek. Michael Hamilton,
 [email protected]


 Tu je trik, ki sem ga morali uporabiti �e nekajkrat.

 Obnovitev zbrisane tekstovne datoteke obupanega uporabnika.

 �e po nesre�i odstranite tekstovno datoteko, npr. neko elektronsko
 sporo�ilo ali rezultate no�ne programerske seanse, ni nujno, da je vse
 izgubljeno. �e je datoteka bila na disku in na njem ostala ve� kot 30
 sekund, je njena vsebina mogo�e �e vedno na particiji diska.

 Vsebino datoteke na particiji diska lahko poi��ete s pomo�jo ukaza
 grep.

 Na primer, pred kratkim sem zbrisal del elektronskega sporo�ila. Takoj
 sem prekinil vse operacije, ki bi particijo lahko spremenile: v tem
 primeru sem se samo izognil shranjevanju datotek, prevajanju, itd. V
 drugih primerih sem sistem moral celo privesti na na�in enega samega
 uporabnika in odklopiti datote�ni sistem.

 Na particiji diska sem potem uporabil ukaz egrep: v mojem primeru je
 bilo elektronsko sporo�ilo v imeniku /usr/local/hime/michael. Iz
 izhoda ukaza df sem lahko ugotovil, da je ta na particiji /dev/hdb5:

      sputnik3:~ % df
      Filesystem         1024-blocks  Used Available Capacity   Mounted on
      /dev/hda3              18621    9759     7901     55%   /
      /dev/hdb3             308852  258443    34458     88%   /usr
      /dev/hdb5             466896  407062    35720     92%   /usr/local

      sputnik3:~ % su
      Password:
      [root@sputnik3 michael]# egrep -50 'ftp.+COL' /dev/hdb5 > /tmp/x

 Kadar delam s particijami diska, sem zelo previden. Torej sem si vzel
 odmor in se pred potrditvijo prepri�al, da res razumem pomen ukaza. V
 tem primeru je elektronsko sporo�ilo vsebovalo besedo 'ftp', ki ji je
 sledil tekst in na koncu �e beseda 'COL'. Sporo�ilo je bilo dolgo
 okrog 20 vrstic, torej sem uporabil 50, da bi dobil vse vrstice okrog
 izraza. V�asih sem uporabljal tudi 3000 in s tem zagotovil, da sem
 dobil nazaj vse vrstice izvorne kode. Rezultat sem iz ukaza egrep
 usmeril na drugo particijo diska in s tem prepre�il, da bi se
 sporo�ilo, ki ga i��em, prepisalo.

 Izhod sem preiskal z uporabo ukaza strings:

      strings /tmp/x | less

 in seveda na�el elektronsko sporo�ilo.

 Ta metoda ni zanesljiva. Mogo�e je bilo nekaj, ali pa celoten prostor
 na disku, ponovno uporabljeno.

 Ta zvija�a je verjetno uporabna samo na sistemih z enim uporabnikom.
 Na sistemih z ve� uporabniki z visoko dejavnostjo diskov se je mogo�e
 prostor na disku, ki ste ga sprostili, ponovno porabil. Prav tako
 ve�ina izmed nas ne more kar tako prepre�iti uporabe ra�unalnika
 ostalim uporabnikom, kadar �elimo obnoviti neko datoteko.

 Na doma�em sistemu me je ta zvija�a re�ila v pribli�no treh primerih v
 zadnjih nekaj letih po navadi takrat, ko sem po pomoti zavrgel
 rezultate celodnevnega dela: �e moje delo pre�ivi do neke to�ke, kjer
 imam ob�utek, da sem naredil pomemben napredek, to delo shranim na
 disketo in te zvija�e sploh ne uporabljam pogosto.


 3.3.  Kako uporabljati nespremenljive oznake. Jim Dennis,
 [email protected]


 Uporaba nespremenljivih oznak

 Takoj po tem, ko boste namestili in nastavili va� sistem, preglejte
 datoteke /bin/sbin, /usr/bin, /usr/sbin, /usr/lib (in �e nekatere
 druge obi�ajne osumljence) in brez predsodkov uporabite ukaz chattr
 +i. To vrstico dodajte tudi v datoteke jedra v korenskem imeniku.
 Naredite nov imenik 'mkdir /etc/.dist/' in prekopirajte vsebino
 imenika /etc (to naredim v dveh korakih z uporabo /tmp/etcdist.tar in
 se s tem izognem podvajanju) v ta novi imenik. (Lahko bi tudi
 ustvarili imenik /etc/.dist.tar.gz) -- in ga ozna�ili kot
 nespremenljivega.
 Vzrok za vse to delo je zmanj�ati �kodo, ki bi jo lahko naredili,
 kadar boste prijavljeni kot korenski uporabnik. Na ta na�in ne boste
 mogli prepisati datotek z napa�nim preusmeritvenim operatorjem in
 presledkom v ukazu 'rm -fr' (�e vedno lahko naredite veliko �kodo
 sistema ne boste mogli po�kodovati z nepravilno postavljenim va�im
 podatkom ampak vsaj va�e knji�nice in binarne datoteke bodo bolj
 za��itene).

 S tem boste prav tako onemogo�ili ali vsaj ote�ili uporabo �tevilnih
 varnostnih in preklicnih storitev (ker ve�ina temelji na prepisovanju
 datotek med izvajanjem programa SUID, ki *ne nudi poljubnih ukazov
 lupine*).

 Edina neprijetnost se bo pojavila pri grajenju in izvajanju ukaza
 "make install" na razli�nih vrstah sistemskih binarnih datotek. Po
 drugi strani pa boste s tem prepre�ili, da bi 'make install' prepisal
 datoteke. Kadar pozabite prebrati Makefile in chattr -i, datoteke, ki
 bodo prepisane (in imenike, katerim �elite datoteke dodati) -- in se
 ukaz make ne izvede, samo uporabite ukaz chattr in ga ponovno
 za�enite. Izkoristite lahko tudi prilo�nost in prestavite stare
 binarne datoteke, knji�nice oz. kar koli je �e v imeniku .old/, jih
 preimenujete, stisnete ali po�nete z njimi kar pa� �elite.


 3.4.  Nasveti, kam dati nove stvari. Jim Dennis, [email protected]


 Vse nove stvari se za�nejo pod /usr/local! Ali v
 /usr/local/'hostname'.  �e je va�a distribucija ena tistih, ki pusti
 imenik /usr/local prazen, tvorite svoje imenike /usr/local/src,
 /usr/local/bin, itd. in jih uporabljajte. V primeru da va�a
 distribucija v drevesno strukturo imenika /usr/local shrani stvari,
 boste verjetno uporabili ukaz 'mkdir /usr/local/'hostname'' in mu
 podelili 'wheel' group +w (prav tako jih naredim SUID in SGID in s tem
 zagotovim, da lahko vsak �lan skupine wheel upravlja samo s svojimi
 datotekami in da vse ustvarjene datoteke pripadajo wheel skupini).

 Disciplinirajte se in nove pakete *Vedno! Vedno! Vedno!* shranite v
 /usr/local/src/.from/$KJERKOLI_SEM_JIH_DOBIL/ (za .tar oz. katere koli
 datoteke) in jih zgradite v imeniku /usr/local/src (ali
 /$HOSTNAME/src). Prepri�ajte se, da se namesti pod lokalno ureditev.
 �e je paket *nujno potrebno* namestiti v /bin, /usr/bin ali kjer koli
 drugje podajte symlink od lokalne ureditve do vsakega posameznega
 elementa.

 Vzrok za to -- �eprav je ve� dela -- je pomo� pri osamitvi tistih
 stvari, za katere je potrebno narediti varnostne kopije, jih obnoviti
 ali ponovno namestiti pri opravilu popolne ponovne namestitve z
 distribucijskega medija (obi�ajno s CD-ja). Z uporabo imenika
 /usr/local/.from vzdr�ujete tudi dnevnik z informacijami, kje ste
 izvorno kodo dobili -- kar vam je v pomo� pri iskanju novih razli�ic
 -- je pa nujno potreben, kadar nadzorujete sezname objav glede
 varnosti.

 Eden mojih doma�ih sistemov (s katerega kli�em) je bil sestavljen
 preden sem za�el uporabljati tak�en sistem. �e vedno ne *poznam*
 vsega, po �emer se razlikuje od po namestitvi pripravljenega sistema.
 To se mi dogaja kljub temu, da zelo malo delam s konfiguracijo
 doma�ega sistema in da sem *edina* oseba, ki ga uporablja.

 V primerjavi s tem so vsi sistemi, ki sem jih nastavil v slu�bi (ko so
 mi zaupali vlogo sistemskega administratorja), nastavljeni na ta na�in
 -- in �eprav so jih upravljali razli�ni ljudje in so bili velikokrat
 nadgrajeni, pa vendar dobro vem kateri elementi so bili  dodani
 *naknadno* po za�etni namestitvi in nastavitvi.


 3.5.  Kako spremeniti vse velike �rke v imenih datotek v majhne �rke.
 Justin Dossey, [email protected]


 V razdelku 2c nasvetov 12. izdaje sem opazil kar nekaj prezahtevnih
 ali nepotrebnih postopkov. Ker jih je ve�, vam jih po�iljam:

      #!/bin/sh
      # lowerit
      # spremeni vse velike �rke v imenih datotek v trenutnem imeniku v majhne �rke
      # uporabna samo za navadne datoteke--ne spreminja imen imenikov
      # preden prepi�e obstoje�o datoteko, boste morali to potrditi
      for x in `ls`
       do
       if [ ! -f $x ]; then
         continue
         fi
       lc=`echo $x  | tr '[A-Z]' '[a-z]'`
       if [ $lc != $x ]; then
         mv -i $x $lc
       fi
       done

 Uh, to je pa dolga skripta. Za izvajanje tega opravila jaz ne bi pisal
 skripte. Namesto tega bi v ukazni vrstici uporabil ukaz:

      for i in * ; do [ -f $i ] && mv -i $i `echo $i | tr '[A-Z]' '[a-z]'`; done;

 Avtor pravi, da je skripto zapisal v tej obliki zaradi ve�je
 razumljivosti (glej spodaj).

 V naslednjem primeru, o dodajanju in odstranjevanju uporabnikov, Geoff
 dela dokaj dobro, razen v zadnjem koraku. Ponoven zagon? Resno upam,
 da avtor ra�unalnika ne zaganja ponovno, vedno kadar odstrani
 uporabnika. Opraviti morate samo prva dva koraka.  Kak�ne procese pa
 naj bi uporabnik sploh uporabljal? Mogo�e irc bot?  Postopek ubijete z
 enostavnim ukazom

      kill -9 `ps -aux |grep ^<username> |tr -s " " |cut -d " " -f2`

 Primer; uporabni�ko ime je foo

      kill -9 `ps -aux |grep ^foo |tr -s " " |cut -d " " -f2`

 S tem je delo opravljeno; gremo naprej na pozabljeno korensko geslo.

 Re�itev, ki je navedena v glasilu, je najbolj univerzalna, ne pa tudi
 najenostavnej�a. Z LILO in loadlin lahko vsak poda zagonski parameter
 "single" in ra�unalnik se neposredno za�ene v privzeti lupini brez
 poziva za prijavo in geslo. V tem primeru lahko pred vnosom "init 3"
 za zagon ve�-uporabni�kega na�ina, vsakdo spremeni ali zbri�e katero
 koli geslo. �tevilo ponovnih zagonov v tem primeru: 1, �tevilo
 ponovnih zagonov v drugih primerih: 2

 Justin Dossey


 3.6.  Kako nadgraditi sendmail. Paul Anderson, [email protected]


 Za�eli bomo z neobdelano, �isto izvorno kodo. Najprej si priskrbite
 izvorno kodo Sendmaila. Zajel sem verzijo 8.9.0, kar pa je zelo
 zahtevno opravilo, kot boste ugotovili. Kodo sem dobil na
 <ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.9.0.tar.gz>.

 Dolga je okrog 1 MB in glede na to, da uporabljam 8.7.6, mislim, da je
 vredna truda. �e bo to delovalo, boste nedvomno izvedeli, saj sicer ne
 bom mogel izdati nove HOWTO verzije :)

 Ko ste kodo prenesli, jo razpakirajte. V trenutnem imeniku bom
 ustvaril imenik z imenom sendmail-8.9.0. Premaknite se v ta imenik ter
 preberite datoteki README in RELESE_NOTES (presene�eni boste nad
 opravljenimi nadgraditvami). Premaknite se sedaj v src. V tem imeniku
 boste opravili ve�ino dela.

 Kratko sporo�ilo: Sendmail je kratek, zelo uporaben, dobro napisan
 program. Binarna datoteka se na ra�unalniku 5x86 133 z 32 MB RAM-a
 prevede v manj kot 5 minutah! Celotno prevajanje in namestitev (brez
 nastavitev) traja manj kot 15 minut!

 Obi�ajno na mojem sistemu ne zaganjam BIND, zaradi tega sem na�el
 naslednje vrstice:

      # ifndef NAMED_BIND
      #  define NAMED_BIND    1     /* uporabi Berkeleyski internetni stre�nik */
      # endif

 in spremenil 1 v 0:

      # ifndef NAMED_BIND
      #  define NAMED_BIND    0     /* uporabi Berkeleyski internetni stre�nik */
      # endif

 Pri distribuciji Debian 1.3.1 se db.h glede na privzeto vrednost
 namesti v /usr/include/db, namesto v /usr/include, kjer jo sendmail
 posku�a najti. Pojdite v imenike src, mailstats, makemap, praliases in
 smrsh in tam izvedite naslednji ukaz:

      ./Build -I/usr/include/db

 Ko boste s tem gotovi, cd .. in vnesite make install.  Tako! Program
 sendmail razli�ice 8.9.0 naj bi bil sedaj name��en! V tem primeru sem
 predpostavil, da ste prej �e opravili originalno nastavitev. Da bi na
 mojem sistemu vse potekalo gladko, ker gostim brezpla�ne po�tne sez�
 name za ljudi, ki uporabljajo majordomo, sem moral na za�etek datoteke
 /etc/sendmail.cf dodati:
      O DontBlameSendmail=forwardfileinunsafedirpath, forwardfileinunsafedirpathsafe

 Dandanes je sendmail zelo ob�utljiv na dovoljenja imenikov in datotek
 ter bo javljal napake o imenikih in datotekah v privzetih imenih ali
 datotekah .forward, ki jih lahko spreminjajo skupine ali so prosto
 dostopne. Ker ni dobro odpraviti te ob�utljivosti, uporabljam v kon�
 zoli samo na�in enega uporabnika in se mi je zdelo, da je v redu tudi,
 �e obstaja ta majhna varnostna luknja. YMMV


 3.7.  Nekaj nasvetov za nove sistemske administratorje, Jim Dennis,
 [email protected]


 Ustvarite in vzdr�ujte /README.'hostname' in/ali
 /etc/README.'hostname' [oz. �e je le mo�no
 /usr/local/etc/README.'hostname'  - Vzdr�evalec.]

 Od prvega dne upravljanja dalje sistem zapisuje stvari v omre�ni
 dnevnik. Mogo�e boste v root-ov /bash_logout vnesli vrstico "vi
 /README.$(ime gostitelja)". To lahko pravite tudi tako, da napi�ete
 skripto za su ali sudo, ki po�ne nekaj podobnega:

      function exit \
              { unset exit; exit; \
                cat ~/tmp/session.$(date +%y%m%d) \
                >> /README.$(hostname) && \
                vi /README.$(hostname)
                }
      script -a ~/tmp/session.$(date +%y%m%d)
      /bin/su.org -

 (Dnevnik ustvarite s pomo�jo ukaza typescript. Prav tako ustvarite
 funkcijo, ki bo avtomatizirala dopolnjevala in posodabljala dnevnik.)

 Priznati moram, da te avtomatizacije nisem vgradil do sedaj sem se
 zana�al na samodisciplino. Kakor koli �e, s to zamislijo sem se igral
 (naredil sem celo prototip skripte in funkcije lupine, kot lahko
 vidite.) Nekaj, kar me pri tem moti, je ukaz 'script' sam. Mislim, da
 bom moral zajeti izvore in dodati nekaj parametrov ukazne vrstice (za
 prekinitev/zaustavitev shranjevanja skript iz ukazne vrstice), preden
 bom za�el uporabljati ta na�in.

 Moj zadnji nasvet (v tem trenutku):

 Korenska pot mora biti sestavljena iz 'PATH= /bin'

 To je to. Ni� drugega v korenski poti. Za vse, kar po�ne korenski
 uporabnik, poskrbi symlink iz /bin, privzeto ime ali funkcija lupine,
 oziroma je skripta ali binarna verzija v /bin ali pa je izpisana z
 eksplicitno potjo.

 S tem se vsi, ki se prijavljajo kot korenski uporabnik, zavedajo
 (v�asih na zelo bole� na�in), kako zaupajo binarnim verzijam. Pameten
 sistemski administrator z ve� uporabniki bo redno pregledoval datoteke
 /bin in /.*history, da bi s tem na�el vzorce in zan�ne napake.

 Zares dobro motivirani sistemski administratorji bodo poiskali
 opravila, ki jih je mogo�e avtomatizirati, mesta, kjer je mo�no vnesti
 logi�na preverjanja in opravila (zagon urejevalnikov, MTA in druge
 obse�ne interaktivne programe, z izpopolnjenimi lastnostmi skript, ki
 jih je mogo�e vna�ati v prosojne ali podatkovne datoteke kot je
 neslavni vi ./.exrc in emacs ./.emacs in celo bolj zahrbten $EXINIT in
 vgrajeni makri v glavi/nogi), ki jih je potrebno opravljati brez
 korenskih privilegijev. Seveda je tak�ne vrste ukazov mogo�e zaganjati
 s:

      cp $data $some_users_home/tmp
      su -c $origcommand $whatever_switches
      cp $some_users_home/tmp $data

 (kjer so specifikacije odvisne od ukaza).

 Ve�ina teh zadnjih varnostnih ukrepov prenese na doma�o delovno
 postajo ali postajo z enim samim uporabnikom so pa zelo dober na�in za
 upravljanje ve�jega �tevila uporabnikov �e posebej javnosti
 izpostavljeni sistemi (kot tisti pri netcom-u.)


 3.8.  Kako nastaviti xdm-ovega izbiralca za izbiro gostitelja. Arrigo
 Triulzi, [email protected]


 1. Uredite datoteko, ki za�ene xdm (najverjetneje je to datoteka
    /etc/rc/rc.6 ali /etc/rc.local), tako da bo v razdelku za zagon xdm
    vsebovala naslednje vrstice:

      /usr/bin/X11/xdm
      exec /usr/bin/X11/X -indirect hostname

 2. Uredite datoteko /usr/lib/X11/xdm/Xservers in odstranite znak za
    komentar v vrstici, ki za�ene stre�nik na lokalnem ra�unalniku
    (npr.  z za�etnim nizom 0:)

 3. Ponovno za�enite ra�unalnik in delo je opravljeno.

    To sem dodal zato, ker sem ga hotel nastaviti tudi za svojo
    podmre�o, pa sem za odpravo vseh problemov potreboval skoraj en
    teden.

 Opozorilo: s starimi distribucijami SLS (1.1.1) lahko po vrstici za
 klic xdm izpustite -nodaemon: to NE deluje pri kasnej�ih izdajah.