  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 teko nali drugje,
  naredijo pa Linux prijazneji.
  ______________________________________________________________________


  Kazalo


  1. Uvod

  2. Kraji nasveti

     2.1 Uporabna zvijaa za Syslog
     2.2 Skripta za ogled stisnjenih HOWTO-jev
     2.3 Ali je dovolj prostora na disku???
     2.4 Pripomoek za odstranjevanje dnevnikov
     2.5 Prirona skripta za odstranjevanje odlagali
     2.6 Prenaanje imenikov med datotenimi sistemi
     2.7 Iskanje najvejih imenikov
     2.8 Glasilo za Linux
     2.9 Kako priti do popravka za program GNU make 3.70 in s tem
         prepreiti udno obnaanje VPATH
     2.10 Kako prepreiti preverjanje sistema s programom fsck ob
          vsakem zagonu raunalnika?
     2.11 Kako se izogniti preverjanju, do katerega pride zaradi
          "zasedenosti naprav"
     2.12 Kako poiskati najveje datoteke na trdem disku
     2.13 Kako natisniti strani, da jih boste lahko kasneje preluknjali
          in vstavili v mapo
     2.14 Nain za iskanje doloenih 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 knjinica v /usr/lib vsebuje
          doloeno funkcijo?
     2.22 Prevedel sem majhen testni program v C-ju, ko pa ga poenem,
          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


  Dobrodoli v Linux Tips-HOWTO, seznamu zanimivih zvija in
  optimizacij, ki naredijo Linux bolj zabaven. Spis vsebuje samo nasvete
  iz moje glave in nasvete iz prejnjega spisa Tips-HOWTO (Zakaj bi
  izpuali spodobne nasvete?). Zato bom zelo vesel vaih najljubih
  namigov in nasvetov, ki jih bom tako lahko uvrstil v naslednji Tips-
  HOWTO.

  Paul Anderson, vzdrevalec Linux TIPS HOWTO

  panderson@ebtech.net


  2.  Kraji nasveti


  2.1.  Uporabna zvijaa za Syslog. Paul Anderson, vzdrevalec spisa
  Tips-HOWTO

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

       # Izpii 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

  Zaetnik zaetniku. Tu je kratka skripta, ki vam bo olajala 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 kliete brez argumenta, ta izpie imenik s HOWTO-ji, ki
  so na voljo, kadar pa vnesete prvi del imena datoteke (pred vezajem),
  kot argument, samodejno raztegne  in izpie 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 nali kratko skripto, ki bo od asa do asa
  preverila, ali je e dovolj prostora na napravah, ki jih lahko
  izpiete z ukazom mount (diski, cdrom, disketa,)

  e zmanjkuje prostora, se na zaslonu vsakih X sekund izpie sporoilo,
  za vsako zapolnjeno napravo pa boste dobili tudi elektronsko
  sporoilo.

  #!/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 zael prejemati skrivnostna
  # sporoila o napakah. Zato sem spisal tole skripto, ki me opozori, preden
  # se diski zapolnijo.
  #
  # e vam te vrstice obvarujejo strenik pred poruitvijo,
  # poljite elektronsko sporoilo z zahvalami na zocki@goldfish.cube.net.
  # e vam tale skripta povzroa teave, mi je strano al, ampak
  # posvaril sem vas: brez pritob.
  # e res obvladate delo s sed, mi prosim oprostite :)
  #

  #
  # Poeni in pozabi: V rc.local vstavite 'check_hdspace &'.
  # Preveri koliino nezasedenega prostora na napravah vsakih $SLEEPTIME sekund.
  # Preverite lahko tudi diskete in trane naprave. :)
  # e je nezasedenega prostora manj kot $MINFREE (kb), bo sproila opozorilo
  # in poslala eno elektronsko sporoilo za vsako triggering napravo
  # na $MAIL_TO_ME.
  # e je prostora ve, kot je spodnja meja, podana z omejitvijo, pri
  # kateri se sproijo opozorila, se tudi opravilo elektronskega
  # poiljanja ponovno opremi.
  #

  # NALOGA: Razlien $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
  # sproi opozorilo
  SLEEPTIME=10                               # sec; mirovanje med preverjanjem
  MAIL_TO_ME='root@localhost'               # fool; kdo prejme opozorilo

  # ------ pod to vrstico ni potrebno vnaati 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.      (Sproilec 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. ienje
                       # imenikov */tmp...
                fi
                elif [ -n  "`echo $MAILED | grep -w $DEVICE`" ] ; then
                        # e je dovolj prostora, skripta odstrani
                        # oznako, da je bila elektronska pota poslana.
                        # Pripravljeni smo na novo opravilo poiljanja
                        # elektronske pote.
                        MAILEDH="`echo $MAILED  | sed s#$DEVICE##`"
                        MAILED=$MAILEDH
                fi

        done
        sleep $SLEEPTIME

  done


  2.4.  Tips-HOWTO Pripomoek za odstranjevanje dnevnikov. Paul Ander
  son, vzdrevalec spisa


  e ste takni kot jaz, potem imate seznam s 430 naroniki, plus 100+
  sporoil 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 razliico 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 zaeni chklogs.
       00 21 * * *       /usr/local/sbin/chklogs -m

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


  2.5.  Prirona 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 Briem...
  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 zaene vsake toliko asa.


  2.6.  Prenaanje imenikov med datotenimi sistemi. Alan Cox,
  A.Cox@swansea.ac.uk


  Hiter nain 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 nesree, se premaknite iz
  cd /source/directory; tar itd. Hvala Jimu Dennisu, jim@starshine.org,
  ki me je opozoril na to. -Vzdrevalec)


  2.7.  Iskanje najvejih imenikov. Mick Ghazey, mick@lowdown.com


  Ali vas je e kdaj zanimalo, kateri imeniki so na vaem raunalniku
  najveji? To lahko ugotovite na naslednji nain:

       du -S | sort -n


  2.8.  Glasilo za Linux


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

  MMG, izkae se, da (1) glasilo za Linux (LG) sedaj izhaja enkrat
  meseno 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
  prepreiti udno obnaanje VPATH. Ted Stern, stern@amath.washing
  ton.edu.


  Ne vem, ali ima veliko ljudi ta problem, vendar ima GNU make razliice
  3.70 "lastnost", ki mi ni ve. Namre to, da se VPATH udno obnaa,
  e podate absolutno pot do datoteke. Obstaja zelo dober popravek, ki
  te teave 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 noviarski skupini
  "gnu.utils.lug". Ta popravek uporabim in ponovno prevedem gmake na
  vsakem sistemu, do katerega imam dostop.


  2.10.  Kako prepreiti preverjanje sistema s programom fsck ob vsakem
  zagonu raunalnika? Dale Lutz, dal@wimsey.com


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

  O: Ko ponovno zgradite jedro, je datoteni sistem oznaen kot
  "umazan", torej bo va disk pregledan vsaki, ko boste zagnali
  raunalnik. To lahko prepreite, e zaenete:

       rdev -R /zImage 1

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

  Opozorilo: e uporabljate lilo, naj bo nastavitev za Linux v
  nastavitveni datoteki za lilo (obiajno 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 sporoilo o zasedenosti
  naprav, kar povzroi, da se ob ponovnem zagonu izvede preverjanje
  datotenega sistema, se lahko temu izognete na naslednji nain:

  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 prikljuen datoteni sistem, razen za /. To pomeni, da e se
  pri zaustavitvi zaradi doloenih 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 najveje 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 nain. To bo trajalo nekaj asa, ampak odlino 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.  Nain za iskanje doloenih regularnih izrazov v drevesnih
  strukturah datotek, Raul Deluth Miller, rockwell@nova.umd.edu


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

       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-vrstina skripta, ki preie 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, Vzdrevalec 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 sluijo te nastavitve? Autoindent povzroi, da vi avtomatsko
  poravna vsako vrstico glede na poravnavo prve vrstice, shiftwidth nas
  tavi razdaljo ^T na 4 presledke, backspace nastavi nain backspace,
  ruler pa povzroi, da vi izpisuje tevilo vrstic.  Da bi se pomaknili
  na doloeno vrstico, npr. v dvajseto, uporabite:

       vi +20 myfile.c


  2.18.  Uporaba ctags za poenostavitev programiranja


  Veina hackerjev ima ctags e nameen na svojem raunalniku, vendar
  ga ne uporabljajo. Zelo uporaben je lahko pri urejanju doloenih
  funkcij. Predpostavimo da imate v eni izmed mnogih izvornih datotek v
  imeniku programa, ki ga piete, 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 zaenete, 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, zaenite:

       vim -t AddEndResize

  S tem boste ustrezno datoteko odprli v urejevalniku, kazalec pa bo na
  zaetku 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 zaene, poie ime gostitelja (v tem primeru
  vasaskatla).  Potem ugotovi, da je IP za vasaskatla 127.0.0.1. Send
  mail tega ne mara, zato prine z novim iskanjem. To nadaljuje tako
  dolgo, dokler konno ne obupa in kona. 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 omogoijo uporabo
  barv kot privzeto nastavitev, pa presega moje znanje. Problem lahko
  reite 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 knjinica
  v /usr/lib vsebuje doloeno funkcijo? Pawel Veselow,


  Kaj storiti v primeru, e prevajate nek program in pozabite vkljuiti
  potrebno knjinico? Vsa poroila gcc so funkcijska imena.Tu je
  preprost ukaz, ki bo nael, kar iete:

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

  Kjer je tgetnum ime funkcije, ki jo iete.

  2.22.  Prevedel sem majhen testni program v C-ju, ko pa ga poenem, 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 doloen
  pogoj izpolnjen in rezultata nikoli ne izpie 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 zaenite (naj izmenjalna datoteka zaenkrat ostane e
     prazna, da jo je mono dobro stisniti).

  2. Ponovno zaenite raunalnik 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
     mogoe 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

     Prepriajte 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 (drugae to
     opravite rono, ko elite raunalnik zagnati v DOSu|OS/2 in
     poskuate izmenjalno particijo pretvoriti nazaj v razliico za
     dos/windows):

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

  # Ne pozabite, da se na ta nain zapie nazaj na particijo samo prvih
  100 blokov. Empirino sem ugotovil, da to zadoa.

  >>Kakne so prednosti in pomanjkljivosti taknega poetja?

  Prednost: prihranite precejno koliino prostora na disku.
  Pomanjkljivost: e 5. korak ni avtomatiziran, boste morali to opraviti
  rono, kar bo upoasnilo 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 nesrei odstranite tekstovno datoteko, npr. neko elektronsko
  sporoilo ali rezultate none 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 mogoe e vedno na particiji diska.

  Vsebino datoteke na particiji diska lahko poiete s pomojo ukaza
  grep.

  Na primer, pred kratkim sem zbrisal del elektronskega sporoila. 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 nain enega samega
  uporabnika in odklopiti datoteni sistem.

  Na particiji diska sem potem uporabil ukaz egrep: v mojem primeru je
  bilo elektronsko sporoilo 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 preprial, da res razumem pomen ukaza. V
  tem primeru je elektronsko sporoilo vsebovalo besedo 'ftp', ki ji je
  sledil tekst in na koncu e beseda 'COL'. Sporoilo je bilo dolgo
  okrog 20 vrstic, torej sem uporabil 50, da bi dobil vse vrstice okrog
  izraza. Vasih 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 prepreil, da bi se
  sporoilo, ki ga iem, prepisalo.

  Izhod sem preiskal z uporabo ukaza strings:

       strings /tmp/x | less

  in seveda nael elektronsko sporoilo.

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

  Ta zvijaa je verjetno uporabna samo na sistemih z enim uporabnikom.
  Na sistemih z ve uporabniki z visoko dejavnostjo diskov se je mogoe
  prostor na disku, ki ste ga sprostili, ponovno porabil. Prav tako
  veina izmed nas ne more kar tako prepreiti uporabe raunalnika
  ostalim uporabnikom, kadar elimo obnoviti neko datoteko.

  Na domaem sistemu me je ta zvijaa reila v priblino treh primerih v
  zadnjih nekaj letih po navadi takrat, ko sem po pomoti zavrgel
  rezultate celodnevnega dela: e moje delo preivi do neke toke, kjer
  imam obutek, da sem naredil pomemben napredek, to delo shranim na
  disketo in te zvijae 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 obiajne 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 oznaili kot
  nespremenljivega.
  Vzrok za vse to delo je zmanjati kodo, ki bi jo lahko naredili,
  kadar boste prijavljeni kot korenski uporabnik. Na ta nain ne boste
  mogli prepisati datotek z napanim preusmeritvenim operatorjem in
  presledkom v ukazu 'rm -fr' (e vedno lahko naredite veliko kodo
  sistema ne boste mogli pokodovati z nepravilno postavljenim vaim
  podatkom ampak vsaj vae knjinice in binarne datoteke bodo bolj
  zaitene).

  S tem boste prav tako onemogoili ali vsaj oteili uporabo tevilnih
  varnostnih in preklicnih storitev (ker veina 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 razlinih vrstah sistemskih binarnih datotek. Po
  drugi strani pa boste s tem prepreili, 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
  zaenite. Izkoristite lahko tudi prilonost in prestavite stare
  binarne datoteke, knjinice oz. kar koli je e v imeniku .old/, jih
  preimenujete, stisnete ali ponete z njimi kar pa elite.


  3.4.  Nasveti, kam dati nove stvari. Jim Dennis, jadestar@rahul.net


  Vse nove stvari se zanejo pod /usr/local! Ali v
  /usr/local/'hostname'.  e je vaa 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 vaa
  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). Prepriajte 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 (obiajno s CD-ja). Z uporabo imenika
  /usr/local/.from vzdrujete tudi dnevnik z informacijami, kje ste
  izvorno kodo dobili -- kar vam je v pomo pri iskanju novih razliic
  -- je pa nujno potreben, kadar nadzorujete sezname objav glede
  varnosti.

  Eden mojih domaih sistemov (s katerega kliem) je bil sestavljen
  preden sem zael uporabljati taken 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
  domaega sistema in da sem *edina* oseba, ki ga uporablja.

  V primerjavi s tem so vsi sistemi, ki sem jih nastavil v slubi (ko so
  mi zaupali vlogo sistemskega administratorja), nastavljeni na ta nain
  -- in eprav so jih upravljali razlini ljudje in so bili velikokrat
  nadgrajeni, pa vendar dobro vem kateri elementi so bili  dodani
  *naknadno* po zaetni 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 poiljam:

       #!/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 prepie obstojeo 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 veje
  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 raunalnika ne zaganja ponovno, vedno kadar odstrani
  uporabnika. Opraviti morate samo prva dva koraka.  Kakne procese pa
  naj bi uporabnik sploh uporabljal? Mogoe irc bot?  Postopek ubijete z
  enostavnim ukazom

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

  Primer; uporabniko 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.

  Reitev, ki je navedena v glasilu, je najbolj univerzalna, ne pa tudi
  najenostavneja. Z LILO in loadlin lahko vsak poda zagonski parameter
  "single" in raunalnik se neposredno zaene v privzeti lupini brez
  poziva za prijavo in geslo. V tem primeru lahko pred vnosom "init 3"
  za zagon ve-uporabnikega naina, vsakdo spremeni ali zbrie 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


  Zaeli 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 (preseneeni boste nad
  opravljenimi nadgraditvami). Premaknite se sedaj v src. V tem imeniku
  boste opravili veino dela.

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

  Obiajno na mojem sistemu ne zaganjam BIND, zaradi tega sem nael
  naslednje vrstice:

       # ifndef NAMED_BIND
       #  define NAMED_BIND    1     /* uporabi Berkeleyski internetni strenik */
       # endif

  in spremenil 1 v 0:

       # ifndef NAMED_BIND
       #  define NAMED_BIND    0     /* uporabi Berkeleyski internetni strenik */
       # 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
  poskua 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 razliice 8.9.0 naj bi bil sedaj nameen! V tem primeru sem
  predpostavil, da ste prej e opravili originalno nastavitev. Da bi na
  mojem sistemu vse potekalo gladko, ker gostim brezplane potne sez
  name za ljudi, ki uporabljajo majordomo, sem moral na zaetek datoteke
  /etc/sendmail.cf dodati:
       O DontBlameSendmail=forwardfileinunsafedirpath, forwardfileinunsafedirpathsafe

  Dandanes je sendmail zelo obutljiv 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 obutljivosti, uporabljam v kon
  zoli samo nain 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 vzdrujte /README.'hostname' in/ali
  /etc/README.'hostname' [oz. e je le mono
  /usr/local/etc/README.'hostname'  - Vzdrevalec.]

  Od prvega dne upravljanja dalje sistem zapisuje stvari v omreni
  dnevnik. Mogoe boste v root-ov /bash_logout vnesli vrstico "vi
  /README.$(ime gostitelja)". To lahko pravite tudi tako, da napiete
  skripto za su ali sudo, ki pone 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 pomojo ukaza typescript. Prav tako ustvarite
  funkcijo, ki bo avtomatizirala dopolnjevala in posodabljala dnevnik.)

  Priznati moram, da te avtomatizacije nisem vgradil do sedaj sem se
  zanaal 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 zael uporabljati ta nain.

  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 pone 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
  (vasih na zelo bole nain), kako zaupajo binarnim verzijam. Pameten
  sistemski administrator z ve uporabniki bo redno pregledoval datoteke
  /bin in /.*history, da bi s tem nael vzorce in zanne napake.

  Zares dobro motivirani sistemski administratorji bodo poiskali
  opravila, ki jih je mogoe avtomatizirati, mesta, kjer je mono vnesti
  logina preverjanja in opravila (zagon urejevalnikov, MTA in druge
  obsene interaktivne programe, z izpopolnjenimi lastnostmi skript, ki
  jih je mogoe vnaati 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 takne vrste ukazov mogoe 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).

  Veina teh zadnjih varnostnih ukrepov prenese na domao delovno
  postajo ali postajo z enim samim uporabnikom so pa zelo dober nain za
  upravljanje vejega 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 zaene 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 zaene strenik na lokalnem raunalniku
     (npr.  z zaetnim nizom 0:)

  3. Ponovno zaenite raunalnik in delo je opravljeno.

     To sem dodal zato, ker sem ga hotel nastaviti tudi za svojo
     podmreo, 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 kasnejih izdajah.
