Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 12801f336d9e363d2d56a08891cdf472 > files > 24

howto-text-sl-2006-5mdv2010.0.noarch.rpm

  Linux-Tips-HOWTO
  Paul Anderson <paul@geeky1.ebtech.net>
  prevedel Andrej Grauf <andrej.grauf@club.win-ini.si>
  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

  panderson@ebtech.net


  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 zocki@goldfish.cube.net.
  # È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, grimaldo@panama.iaehv.nl, 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,
  ohammers@cu-online.com.


  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,
  A.Cox@swansea.ac.uk


  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, jim@starshine.org,
  ki me je opozoril na to. -Vzdr¾evalec)


  2.7.  Iskanje najveèjih imenikov. Mick Ghazey, mick@lowdown.com


  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, stern@amath.washing­
  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
  <psmith@wellfleet.com>. 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, dal@wimsey.com


  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, jon@gtex02.us.es


  È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,
  simon@foobar.co.uk


  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, mdickey@thorplus.lib.purdue.edu


       #!/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, rockwell@nova.umd.edu


  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,
  tolnas@nestor.engr.utk.edu


  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, tolnas@sun1.engr.utk.edu
       #
       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, simon@foobar.co.uk


       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, paul@geeky1.ebtech.net


  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, paul@geekey1.ebtech.net


  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.  vps@unicorn.miimm.spb.su 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, ace3@midway.uchicago.edu


  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,
  michael@actrix.gen.nz


  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,
  jadestar@rahul.net


  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, jadestar@rahul.net


  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, dossey@ou.edu


  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, paul@geekyl.ebtech.net


  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,
  jadestar@rahul.net


  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, a.triulzi@ic.ac.uk


  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.