The Linux Tips HOWTO
Paul Anderson,
[email protected]. Svensk �vers�ttning:
Linus �kerlund,
[email protected].
v3.1, 26 December 1997. Svensk �vers�ttning: 24 juni 1998.
Denna HOWTO inneh�ller s�dana d�r tips och trick som �r sv�ra att
hitta och som g�r Linux en aning trevligare.
______________________________________________________________________
Inneh�llsf�rteckning
1. Inledning
1.1 �vers�ttarens anm�rkningar
2. Korta tips
2.1 Praktiskt syslog-trick
2.2 Skalprogram f�r att l�sa de d�r komprimerade HOWTOna
2.3 Finns det tillr�ckligt med ledigt minne?
2.4 Verktyg f�r att rensa upp i dina loggfiler
2.5 Praktiskt skalprogram f�r att st�da upp core-filer
2.6 Flytta kataloger mellan filsystem.
2.7 Ta reda p� vilka kataloger som �r st�rst.
2.8 Linux Gazette
2.9 H�nvisning till en patch till GNU Make 3.70 f�r att �ndra VPATH-beteendet.
2.10 Hur f�r jag mitt system att inte k�ra fsck efter varje bootning?
2.11 Hur man undviker fsck orsakade av "device busy" d� man bootar om.
2.12 Hur du hittar de st�rsta filerna p� din h�rddisk.
2.13 Hur du skriver ut sidor med marginal f�r h�lslag.
2.14 Ett s�tt att s�ka igenom filtr�d efter ett visst regulj�rt m�nster.
2.15 Ett skalprogram f�r att st�da upp efter program som skapar autosave- och backup-filer.
2.16 Hur du tar reda p� vilken process som �ter mest minne.
2.17 St�lla in vi f�r C-programmering
2.18 Varf�r h�nger sig sendmail i fem minuter d� man startar RedHat?
2.19 Hur st�ller jag in RedHat s� att det anv�nder f�rg-ls?
2.20 Hur tar jag reda p� vilket bibliotek i /usr/lib som inneh�ller en viss funktion?
3. Detaljerade tips
3.1 Dela swap-partition mellan Linux och Windows.
3.2 Desperat undelete.
3.3 Hur du anv�nder immutable-flaggan.
3.4 Ett f�rslag om vad du ska stoppa in nya grejer.
3.5 Konvertera alla filer i en katalog till sm� bokst�ver.
3.6 N�gra tips f�r nya systemadministrat�rer
3.7 Hur du st�ller in in xdms v�ljare f�r host-val.
______________________________________________________________________
1. Inledning
V�llkommen till Linux Tips HOWTO, en lista av trevliga sm� trick och
optimeringar som g�r Linux roligare. Allt jag har h�r just nu �r tips
som jag tagit direkt ur eget huvud och tips fr�n den gamla Tips-HOWTOn
(varf�r ta bort ett bra tips?). S� skicka alla dina favorit-trick och
-tips till mig s� att jag kan ta med dem i n�sta Tips-HOWTO.
Paul Anderson Ansvarig f�r Linux TIPS HOWTO
[email protected]
1.1. �vers�ttarens anm�rkningar
Precis som vanligt s� kan det finnas tveksamma �vers�ttningar och
s�dant i det h�r dokumentet. N�gra kanske vill att jag ska �vers�tta
t.ex. variabler i skalprogram till svenska, vilket jag inte gjort.
Alla som har synpunkter �r v�lkomna att h�ra av sig till mig p�
[email protected].
2. Korta tips
2.1. Praktiskt syslog-trick Paul Anderson, ansvarig f�r Tips-HOWTOn
�ndra i din /etc/syslog.conf och l�gg in f�ljande rad:
# Skicka allt till tty8
*.* /dev/tty8
En sak att t�nka p�: KOM IH�G ATT ANV�NDA TABBAR! syslog gillar inte
mellanslag...
2.2. Skalprogram f�r att l�sa de d�r komprimerade HOWTOna Didier
Juges,
[email protected]
Fr�n en nyb�rjare till en annan kommer h�r ett kort skalprogram som
g�r det enklare att l�sa HOWTO-dokument. Mina HOWTOn finns i
/usr/doc/faq/howto/ och �r gzippade. Filnamnen �r XXX-HOWTO.gz, d�r
XXX �r �mnet. Jag skapade f�ljande skalprogram, vilket heter "howto",
i katalogen /usr/local/sbin:
______________________________________________________________________
#!/bin/sh
if [ "$1" = "" ]; then
ls /usr/doc/faq/howto | less
else
gunzip -c /usr/doc/faq/howto/$1-HOWTO.gz | less
fi
______________________________________________________________________
N�r det anropas utan argument s� visar det en lista �ver de
tillg�ngliga HOWTOna. N�r det sedan anropas med f�rsta delen av ett
filnamn (innan bindestrecket) som argument s� zippar det upp (och
beh�ller originalet intakt) och visar dokumentet.
F�r att t.ex. l�sa Serial-HOWTO.gz, skriv:
$ howto Serial
2.3. Finns det tillr�ckligt med ledigt minne? Hans Zoebelein,
[email protected]
H�r kommer ett kort skalprogram, vilket d� och d� kollar om det finns
tillr�ckligt med ledigt utrymme tillg�ngligt p� vad som helst som
dyker upp i mount (h�rddiskar, cdrom, disketter osv.).
Om utrymmet tar slut s� visas ett meddelande var Xte sekunde p�
sk�rmen och ett e-brev skickas f�r varje full enhet.
______________________________________________________________________
#!/bin/sh
#
# $Id: check_hdspace,v 1.18 1996/12/11 22:33:29 root Exp root $
#
#
# N�r jag gick mystiska felmeddelanden under en kompilering och
# tmp-filer fyllde upp mina diskar, skrev jag detta f�r att f� en
# varning innan diskarna blir fulla.
#
# Om det h�r r�ddar dina servrar fr�n att explodera, skicka ett
# e-brev till
[email protected] och prisa mig.
# Om din brinner upp p� grund av det s� �r jag ledsen, men jag
# har varnat dig: inga kompensationer.
# Om du vet hur man hanterar sed s� kan du f�rl�ta mig :)
#
# Stoppa in det och gl�m det: Stoppa 'check_hdspace &' i rc.local.
# Kollar efter ledigt utrymme p� enheter varje $SLEEPTIME sekunder.
# Du kan till och med kolla disketter och bandenheter. :)
# Om det finns mindre �n $MINFREE (kb) utrymme, s� echo-as en varning
# och ett e-brev skickas f�r varje aktuell enhet till $MAIL_TO_ME.
# Om det �terigen finns mer fritt utrymme �n vad som �r satt som gr�ns
# s� skickas ett nytt e-brev.
#
# ATT G�RA: Olika $MINFREE f�r olika enheter.
# Rensa ut gammalt skr�p ur /*tmp-kataloger om utrymmet tar slut.
DEVICES='/dev/sda2 /dev/sda8 /dev/sda9' # enhet; l�gg in diskar h�r
MINFREE=20480 # kb; varning under detta
SLEEPTIME=10 # sek; sov mellan kollarna
MAIL_TO_ME='root@localhost' # d�re; vem som f�r mail
# ------- inga �ndringar beh�vs under denna rad (f�rhoppningsvis :) -------
MINMB=0
ISFREE=0
MAILED=""
let MINMB=$MINFREE/1024 # jepp, vi �r strikta :)
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 "VARNING: $DEVICE endast $ISMB mb ledigt." >&2
#echo "mera prylar h�r" >&2
echo -e "\a\a\a\a"
if [ -z "`echo $MAILED | grep -w $DEVICE`" ] ; then
echo "VARNING: $DEVICE endast $ISMB mb ledigt. (Gr�nsen satt till $MINMB mb)" \
| mail -s "VARNING: $DEVICE endast $ISMB mb ledigt!" $MAIL_TO_ME
MAILEDH="$MAILED $DEVICE"
MAILED=$MAILEDH
# l�gg in annat, som st�dning av */tmp-
# kataloger, h�r
fi
elif [ -n "`echo $MAILED | grep -w $DEVICE`" ] ; then
# Bort med mailed-markeraren om det finns
# tillr�ckligt med utrymme igen, s� att vi
# kan skicka nya e-brev.
MAILEDH="`echo $MAILED | sed s#$DEVICE##`"
MAILED=$MAILEDH
fi
done
sleep $SLEEPTIME
done
______________________________________________________________________
2.4. Verktyg f�r att rensa upp i dina loggfiler Paul Anderson,
ansvarig f�r Tips-HOWTOn
Om du �r so mjag s� har du en lista med 250 prenumeranter, plus mer �n
100 meddelanden per dag som kommer med UUCP. Tja, vad ska en hacker
g�ra med sina enorma loggfiler? Installera chklogs. Chklogs �r
skrivet av Emilio Grimaldo,
[email protected], och den senaste
versionen (1.8) �r tillg�nglig via ftp fr�n
frp.iaehv.ln:/pub/users/grimaldo/chklogs-1.8.tar.gz. Det f�rklarar
ganska bra sj�lvt hur du ska installera det (du ska naturligtvis �ven
ta en titt p� informationen i doc-katalogen). N�r du har isntallerat
det ska du l�gga till f�ljande i crontab:
# K�r chklogs klockan 9 varje dag.
00 21 * * * /usr/local/sbin/chklogs -m
N�r du �nd� h�ller p�, gl�m inte att tala om f�r programmeraren vilket
trevligt program det �r :).
2.5. Praktiskt skalprogram f�r att st�da upp core-filer Otto Hammer�
smith,
[email protected]
Skapa en fil som heter rmcores (f�rfattaren kallar det handle-cores)
med f�ljande inneh�ll:
______________________________________________________________________
#!/bin/sh
USAGE="$0 <directory> <message-file>"
if [ $# != 2 ] ; then
echo $USAGE
exit
fi
echo Tar bort...
find $1 -name core -atime 7 -print -exec rm {} \;
echo skickar e-brev
for name in `find $1 -name core -exec ls -l {} \; | cut -c16-24`
do
echo $name
cat $2 | mail $name
done
______________________________________________________________________
Sedan g�r du s� att ett cron-jobb k�r det d� och d�.
2.6. Flytta kataloger mellan filsystem. Alan Cox,
[email protected]
Ett snabbt s�tt att flytta ett helt filtr�d fr�n en disk till en annan
�r
(cd /k�ll/katalog && tar cf - . ) | (cd /dest/katalog && tar xvfp -)
[ Byt fr�n cd /k�ll/katalog; tar...osv. f�r att f�rhindra m�jligheten
att katalogen f�rst�rs om en olycka intr�ffar. Tack till Jim Dennis,
[email protected], f�r att han gjorde mig uppm�rksam p� detta.
-Ansvarige. ]
2.7. Ta reda p� vilka kataloger som �r st�rst. Mick Ghazey,
[email protected]
Har du n�gonsin funderat p� vilka kataloger som �r de st�rsta p� din
dator? S� h�r tar du reda p� det:
du -S | sort -n
2.8. Linux Gazette
Kudos till John Fisk som grundade Linux Gazette. Det �r en suver�n e-
tidning och den �r GRATIS!!! Vad mer kan du �nska dig? Ta en titt p�:
http://www.ssc.com/lg
F�rresten s� visar det sig att (1) LG utges nu varje m�nad och (2)
John Fisk har inte l�ngre hand om det, utan m�nniskorna p� SSC.
2.9. H�nvisning till en patch till GNU Make 3.70 f�r att �ndra VPATH-
beteendet. Ted Stern,
[email protected]
Jag vet inte om m�nga har detta problem, men det finns en egenskap hos
GNU Make version 3.70 som jag inte tycker om. Det �r att VPATH beter
sig udnerligt om du anger en absolut s�kv�g. Det finns en extremt
stabil patch f�r att fixa detta, vilken du kan f� fr�n Paul D. Smith
<
[email protected]>. Han publicerar dokumentationen och patchen i
nyhetsgruppen gnu.utils.bug efter varje uppdatering av GNU Make. Sj�lv
l�gger jag till den h�r patchen och kompilerar om gmake p� varje
system jag har tillg�ng.
2.10. Hur f�r jag mitt system att inte k�ra fsck efter varje boot�
ning? Dale Lutz,
[email protected]
F: Hur f�r jag e2fsck att inte kolla min h�rddisk varenda g�ng jag
bootar om?
S: N�r du kompilerar om k�rnan s� markeras filsystemet som "smutsigt"
(dirty) och din h�rddisk kommer d� kollas efter varje ombootning. F�r
att fixa detta k�r du:
rdev -R /zImage 1
Detta fixar k�rnan, s� att den inte l�ngre �r �vertygad om att
filsystemet �r smutsigt.
Obs: Om du anv�nder lilo, l�gg till read-only till Linux-avdelningen i
din konfigureringsfil f�r lilo (vanligtvis /etc/lilo.conf).
2.11. Hur man undviker fsck orsakade av "device busy" d� man bootar
om. Jon Tombs,
[email protected]
Om du ofta f�r "device busy"-fel som g�r att filsystemet m�ste g�
igenom en fsck, d� du k�r shutdown, s� kommer h�r en enkel l�sning:
L�gg till raden
mount -o remount,ro /mount.dir
till /etc/rc.d/init.d/halt eller /etc/rc.d/rc.0.
G�r detta f�r varje monterat filsystem utom /, innan anropet till
umount -a. Detta betyder att om shutdown av n�gon anledning misslyckas
med att d�da alla processer och avmontera alla diskar s� kommer de
fortfarande att vara rena d� du bootar om. Detta spar en massa tid f�r
mig d� jag bootar om.
2.12. Hur du hittar de st�rsta filerna p� din h�rddisk. Simon Amor,
[email protected]
ls -l | sort +4n
Om du har v�ldigt d�ligt med utrymme s� funkar �ven det f�ljande, men
kan ta en hel del tid:
cd /
ls -lR | sort +4n
2.13. Hur du skriver ut sidor med marginal f�r h�lslag. Mike Dickey,
[email protected]
______________________________________________________________________
#!/bin/sh
# /usr/local/bin/print
# en enkel formatterad utskrift, f�r att att l�ta n�gon
# ta h�l p� utskriften och s�tta den i en p�rm
cat $1 | pr -t -o 5 -w 85 | lpr
______________________________________________________________________
2.14. Raul Deluth Miller,
[email protected] Ett s�tt att s�ka
igenom filtr�d efter ett visst regulj�rt m�nster.
Jag kallar detta skalprogram "forall". Anv�nd det s� h�r:
forall /usr/include grep -i ioctl
forall /usr/man grep ioctl
H�r kommer 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. Ett skalprogram f�r att st�da upp efter program som skapar
autosave- och backup-filer. Barry Tolnas,
[email protected]
H�r kommer ett enkelt skalprogram p� tv� rader som rekursivt g�r ned
genom kataloghierarkin och tar bort emacs autosave-filer (#) och
backup-filer ( ), .o-filer och .log-filer som TeX skapar. Det
komprimerar �ven .tex- och README-filer. Jag kallar det att "pressa
ihop" mitt system.
______________________________________________________________________
#!/bin/sh
#SQUEEZE tar bort on�digt filer och komprimerar .tex- och README-filer
#Av Barry tolnas,
[email protected]
#
echo pressar ihop $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.
[email protected] Hur du tar reda p� vilken process som �ter
mest minne. Simon Amor,
ps -aux | sort +4n
-ELLER-
ps -aux | sort +5n
2.17. St�lla in vi f�r C-programmering Paul Anderson, Ansvarig f�r
Tips-HOWTOn
Jag programmerar en massa C p� min fritid och har tagit mig tid att
st�lla in vi s� att det passar bra f�r C. H�r �r min .exrc:
______________________________________________________________________
set autoindent
set shiftwidth=4
set backspace=2
set ruler
______________________________________________________________________
Hur fungerar det? autoindent g�r att vi automatiskt indenterar varje
rad som f�ljer en indenterad rad, shiftwidth st�ller in tabbl�ngden
till 4 mellanslag, backspace sl�r p� backspacel�get och ruler g�r att
det visar radnummer. Kom ih�g att du kan g� till en specifik rad, s�g
20, genom att skriva:
______________________________________________________________________
vi +20 myfile.c
______________________________________________________________________
2.18. Varf�r h�nger sig sendmail i fem minuter d� man startar RedHat?
Paul Anderson,
[email protected]
Det h�r �r ett ganska vanligt problem, n�stan s� att det �r en FAQ
(ofta st�lld fr�ga. �vers.anm.). Jag vet inte om RedHat har fixat det
h�r problemet i sin distribution, men annars kan du sj�lv reparera
det. Om du kollar i din /etc/hosts-fil s� kommer du hitta n�got i stil
med:
127.0.0.1 localhost yourbox
N�r sendmail startas s� kollar det din maskins namn (hostname) (i
detta exempel �r det yourbox). Det ser d� att IP-numret f�r din
yourbox �r 127.0.0.1, vilket sendmail inte tycker om och g�r kollen
igen. Det forts�tter s� med detta ett tag, tills det ger upp och
avslutas. Att l�sa detta �r extremt enkelt, l�gg bara in n�got i stil
med
127.0.0.1 localhost
10.56.142.1 yourbox
i din /etc/hosts-fil.
2.19. Hur st�ller jag in RedHat s� att det anv�nder f�rg-ls? Paul
Anderson,
[email protected]
RedHats distribution kommer med f�rg-ls och varf�r de inte st�ller in
det f�r att anv�nda det som standard �r bortom min fattningsf�rm�ga.
H�r kommer en l�sning.
Skriv f�rst eval `DIRCOLORS`
Skriv sedan alias ls='ls --color=yes'
L�gg in 'alias....' i din /etc/bashrc
2.20. Hur tar jag reda p� vilket bibliotek i /usr/lib som inneh�ller
en viss funktion? Pawel Veselow,
[email protected]
Vad h�nder om du kompilerar och du har missat n�got bibliotek som
m�ste l�nkas in? Allt gcc rapporterar �r funktionsnamn... H�r kommer
ett enkelt kommando som g�r att du kan hitta det du letar efter:
for i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done
tgetnum �r namnet p� den funktion du letar efter.
3. Detaljerade tips
3.1. Dela swap-partition mellan Linux och Windows. Tony Acero,
[email protected]
1. Formattera partitionen som en dos-partition och skapa swapfilen f�r
Windows p� den, men k�r inte Windows �n. (Du ska h�lla swapfilen
helt tom f�r tillf�llet s� att den komprimeras bra.)
2. Boota Linux och sparar partitionen till en fil. Om partitionen var
t.ex. /dev/hda8:
dd if=/dev/hda8 of=/etc/dosswap
3. Komprimera filen dosswap; eftersom den i stort sett bara inneh�ller
nollor s� kommer den andra komprimeras bra.
gzip -9 /etc/dosswap
4. L�gg till det f�ljande till /etc/rc-filen f�r att f�rbereda och
installera swaputrymmet under Linux: XXXXX �r antalet block i
swappartitionen
mkswap /dev/hda8 XXXXX
swapon -av
Se till s� att du l�gger till en rad f�r swappartitionen i /etc/fstab.
5. Om ditt init/reboot-paket st�djer /etc/brc eller /sbin/brc, s� l�gg
till det f�ljande i /etc/brc. Annars kan du l�gga till det f�r hand
n�r du vill boota dos|os/2 och vill konvertera tillbaks
swappartitionen till dos/windows-versionen:
swapoff -av
zcat /etc/dosswap.gz | dd of=/dev/hda8 bs=1k count=100
# Observera att detta bara skriver tillbaks de f�rsta 100 blocke till
# partitionen. Enligt min erfarenhet r�cker det.
> > Vilka �r f�r- och nackdelarna med att g�ra detta?
F�rdelar: du spar en hel del h�rddiskutrymme.
Nackdelar: om steg 5 inte sker automatiskt s� m�ste du komma ih�g att
g�ra det f�r hand och dessutom g�r det ombootningsprocessen en
nanosekunde l�ngsammare. :-)
3.2. Desperat undelete. Michael Hamilton,
[email protected]
H�r kommer ett trick som jag varit tvungen att anv�nda ett par g�nger.
Desperata m�nniskors textfils-undelete.
Om du av misstag raderar en textfil, t.ex. e-post eller resultatet av
en sen natts programmeringssession, s� beh�ver inte allt vara
f�rlorat. Om filen n�gonsin sparades p� disk, allts� om den existerade
i �tminstone 30 skunder, s� kan dess inneh�ll fortfarande finnas kvar
p� partitionen.
Du kan anv�nda kommandot grep f�r att leta igenom den r�a partitionen
efter inneh�llet i filen.
Nyligen tog jag t.ex. bort ett e-brev. Jag avslutade omedelbart all
aktivitet som kunde modifiera den partitionen: i detta fall l�t jag
bara bli att spara filer och kompilera osv. I andra fall har jag
faktiskt g�tt igenom de besv�r det inneb�r att ta ner systemet till
enanv�ndarl�ge (single user mode) och avmonterat filsystemet.
Sen anv�nde jag kommandot egrep p� partitionen: i mitt fall fanns e-
brevet i /usr/local/home/michael/, s� fr�n utdatan fr�n df kunde jag
sluta mig till att det fanns p� /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:
[michael@sputnik3 michael]# egrep -50 'ftp.+COL' /dev/hdb5 > /tmp/x
Jag �r extremt f�rsiktig n�r det g�ller att fipplat med partitioner,
s� jag tog en paus f�r att se till att jag f�rstod kommandots syntax
INNAN jag tryckte return. I det h�r fallet inneh�ll e-brevet ordet
`ftp', f�ljt av en del text som f�ljdes av ordet `COL'. Meddelandet
var runt 20 rader l�ngt, s� jag anv�nde -50 f�r att f� med alla rader
runt den frasen. F�rut har jag anv�nt -3000 f�r att se till att alla
rader i n�gon k�llkodsfil kom med. Jag omdirigerade utdatan fr�n egrep
till en annan partition - detta f�rhindrade att jag skrev �ver medde�
landet jag letade efter.
Sedan anv�nde jag strings f�r att hj�lpa mig med att inspektera
utdatan:
strings /tmp/x | less
D�r fanns e-brevet!
Den h�r metoden �r inte att lita p�, allt eller en del av diskutrymmet
kan redan ha blivit �teranv�nt.
Detta trick �r antagligen bara anv�ndbart p� ett enanv�ndarsystem. P�
system med flera anv�ndare och med mycket diskaktivitet s� kan
utrymmet du har frigjort mycket v�l redan ha �teranv�nts. Och de
flesta av oss kan inte bara ta ned maskinen f�r v�ra anv�ndare n�r vi
m�ste hitta en fil vi tagit bort.
P� det system jag k�r hemma har detta trick varit anv�ndbart vid
ungef�r tre g�nger under de senaste �ren - vanligtvis n�r jag f�rst�r
en del av dagens arbetsresultat. Om det jag gjort klarar sig s� l�ngt
att jag tycker att jag gjort anm�rkningsv�rda framsteg s� brukar jag
s�kerhetskopiera det p� disketter, s� jag beh�ver inte anv�nda detta
trick s� ofta.
3.3. Hur du anv�nder immutable-flaggan. Jim Dennis,
[email protected]
Anv�nda immutable-flaggan
S� fort du har installerat och konfigurerat ditt system s� b�r du g�
igenom /bin, /sbin, /usr/bin, /usr/sbin och /usr/lib (och n�gra av de
andra katalogerna) och p� ett sparsamt s�tt anv�nda 'chattr +i
kommando'. L�gg ocks� till det till k�rnfilerna i rotkatalogen. K�r nu
`mkdir /etc/.dist' och kopiera allt fr�n /etc/ dit (sj�lv g�r jag
detta i tv� steg, med /tmp/etcdist.tar f�r att undvika rekursion). (Du
kan �ven bara skapa /etc/.dist.tar.gz - och g�ra den immutable.)
Anledningen till allt detta �r att ber�nsa skadan du kan g�ra n�r du
�r inloggad som root. Du kan inte skriva �ver filer av misstag och du
kan inte g�ra systemet oanv�ndbart med ett mellanslag f�r mycket om du
anv�nder 'rm -rf' (du kan fortfarande f�rst�ra en massa data - men
dina bibliotek och bin�rfiler �r s�krare).
Detta g�r ocks� en hel del intr�ng och "denial of service"-angrepp
antingen om�jliga eller sv�rare (eftersom m�nga av dem �r beroende av
att kunna skriva �ver n�gon fil genom ingrepp av n�got SUIDat program
som *inte tillhandah�ller ett visst skalkommando*).
Det enda otrevliga med detta �r att n�r du kompilerar och k�r 'make
install' p� olika typer av systembin�rfiler. � andra sidan s� hindrar
det ocks� 'make install' fr�n att skriva �ver filerna. N�r du gl�mmer
att l�sa Makefilen och chattr -i filen som ska skrivas �ver (och
katalogerna till vilka du ska l�gga till filer) s� misslyckas make-
kommandot, men d� �r det bara att anv�nda kommandot chattr och k�ra
det igen. Du kan ocks� ta tillf�llet i akt och flytta dina gamla
bin�rfiler, bibliotek och vad som helst till en .old/-katalog, eller
byta namn p� dem eller tar-a dem eller vad som helst.
3.4. Ett f�rslag om vad du ska stoppa in nya grejer. Jim Dennis,
[email protected]
Alla nya saker ska in i /usr/local eller /usr/local/'hostname'!
Om din distribution �r en som l�mnar /usr/local tomt, s� skapa bara
din /usr/local/src, /usr/local/bin osv. och anv�nd dem. Om din
distribution stoppar saker i /usr/local-tr�det s� �r det kanske b�st
att k�ra 'mkdir /usr/local/`hostname`' och ge 'wheel'-gruppen +w till
den (jag g�r den ocks� SUID och SGID f�r att se till att varje medlem
i wheel-gruppen bara kan greja med sina egna filer d�r och att alla
filer som skapas tillh�r wheel-gruppen).
Se nu till att vara disciplinerad och *ALLTID! ALLTID! ALLTID!* stoppa
nya paket i /usr/local/src/.fr�n/$VAR_JAG_FICK_DET_IFR�N/ (f�r .tar
eller vilken fil det nu var) och kompilera dem under /usr/local/src
(eller .../$HOSTNAME/src). Se till att det installeras under local-
tr�det. Om det *absolut m�ste* installeras i /bin eller /usr/bin eller
n�gon annanstans, s� kan du skapa en l�nk fr�n local-tr�det till varje
element som finns n�gon annanstans.
Anledningen till detta, �ven om det leder till mer jobb, �r att det
hj�lper till att isolera det som ska s�kerhetskopieras och �terst�llas
fr�n distributions-mediet (nu f�r tiden �r det oftast en CD). Genom
att anv�nda en /usr/local/.from-katalog uppr�tth�ller du ocks� en
informell logg om varifr�n k�llkoden kommit, vilket hj�lper dig d�
letar efter nya versioner, och hj�lper dig d� du l�ser igenom
s�kerhetsmeddelandena i announcement-listor.
Ett av de system jag har hemma (det jag skriver detta p�) sattes upp
innan jag sj�lv b�rjade arbeta enligt dessa principer. Jag "vet"
fortfarande inte precis hur det skiljer sig fr�n ett system fr�n en
"ren installering". Detta trots att jag har gjort v�ldigt lite med det
systemet, inte konfigurerat det speciellt mycket och �r den enda som
anv�nder det.
I kontrast till detta s� har de system som jag satt upp p� jobbet
(sedan jag kastats in i rollen som systemadministrat�r) blivit
konfigurerade p� detta s�tt - de har administrerats av m�nga m�nniskor
och MIS-typer och har g�tt igenom m�nga stor uppgraderingar och
paketinstalleringar. Trots detta har jag en klar uppfattning om vilka
exakta element som lags in *efter* den ursprungliga installeringen och
konfigureringen.
3.5. Konvertera alla filer i en katalog till sm� bokst�ver. Justin
Dossey,
[email protected]
Jag la m�rke till n�gra �verdrivet sv�ra eller on�diga procedurer som
rekommenderades i avdelningen med 2c-tips i nummer 12. Eftersom det �r
mer �n ett, s� skickar jag dem till dig:
______________________________________________________________________
#!/bin/sh
# lowerit
# konvertera alla filnamn i den aktuella katalogen till sm�
# bokst�ver. p�verkar bara vanliga filer - �ndrar inte namnen
# kataloger. fr�gar om lov innan det skriver �ver en fil.
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
______________________________________________________________________
Oj. Det var ett l�ngt skalprogram. Jag skulle inte skriva ett skalpro�
gram f�r att g�ra det. Ist�llet skulle jag anv�nda detta kommando:
for i in * ; do [ -f $i ] && mv -i $i `echo $i | tr '[A-Z]' '[a-z]'`;
done;
direkt fr�n kommandoraden.
Bidragsgivaren s�ger att han skrev skalprogrammet s�som han gjorde det
f�r att det skulle bli l�ttare att f�rst� (se nedan).
I n�sta tips, som handlar om att l�gga till och ta bort anv�ndare, s�
g�r Geoff allt r�tt �nda tills han kommer till sista steget. Boota om?
Gosse, jag hoppas att han inte bootar om varenda g�ng han tar bort en
anv�ndare. Allt du beh�ver g�ra �r att utf�ra de tv� f�rsta stegen.
Vilket slags processer kan den anv�ndaren ha ig�ng, f�rresten? En
irc-bot? D�da processerna med ett enkelt
kill -9 `ps -aux |grep ^<username> |tr -s " " |cut -d " " -f2`
I f�ljande exempel �r anv�ndarnamnet foo:
kill -9 `ps -aux |grep ^foo |tr -s " " |cut -d " " -f2`
N�r vi klarat av det, l�t oss g� vidare till det bortgl�mda l�senordet
f�r root.
L�sningen som gavs i Gazetten �r den mest anv�nda, men inte den
enklaste. Till b�de LILO och loadlin kan man skicka med parametern
"single" f�r att boota direkt till standardskalet utan beh�va skriva
anv�ndarnamn eller l�senord. D�rifr�n kan man �ndra eller ta bort
vilket l�senord som helst, innan man skriver "init 3" f�r att k�ra
ig�ng fleranv�ndarl�get.
Antal ombootningar: 1 Det andra s�ttet Antal ombootningar: 2
Justin Dossey
3.6. N�gra tips f�r nya systemadministrat�rer Jim Dennis,
[email protected]
Skapa och uppr�tth�ll en /README.`hostname` och/eller en
/etc/README.`hostname`. (Eller kanske
/usr/local/etc/README.`hostname` - Ansvarige.)
Fr�n och med *dag ett* ska du absolut f�ra anteckningar i en loggfil.
Du kan l�gga in en rad med "vi /README.$dollar;(hostname)" i roots
/bash_logout. Ett annat s�tt �r att skriva ett su- eller sudo-
skalprogram som g�r n�got i stil med f�ljande:
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 -
(anv�nd typescript-kommandot f�r att skapa en sessionlogg och skapa en
funktion f�r att automatisera till�ggen och uppdateringarna av
loggen.)
Jag ska erk�nna att jag inte har lagt in denna automatisering av
princip - jag har hittills bara litat p� sj�lvdisciplin. Jag har dock
lekt med id�n (till och med g�tt s� l�ngt som till att g�ra prototyper
f�r skalprogrammen och skalfunktionerna som du ser dem i det h�r
dokumentet). En sak som hindrar mig fr�n att genomf�ra detta �r
script-kommandot sj�lvt. Jag tror jag kommer bli tvungen att plocka
hem k�llkoden och l�gga till n�gra kommandoradsparametrar (f�r att
pause/stoppa skalprogrammets "inspelning" av kommandoraden) innan jag
b�rjar anv�nda det.
Mitt sista f�rslag (f�r denna g�ng):
Roots s�kv�g ska best� av 'PATH= /bin'.
Det �r allt. Inget annat ska finnas i roots s�kv�g. Allt root g�r ska
finnas som en l�nk fr�n /bin eller genom ett alias eller en
skalfunktion, eller som ett skalprogram eller bin�rfil i /bin, eller
ska skrivas in med den fulla s�kv�gen.
Detta g�r alla som k�r som root (ibland sm�rtsamt) medvetna om vilket
f�rtroende han eller hon har f�r bin�rfiler. Den vise
systemadministrat�ren i ett fleranv�ndarsystem kollar d� och d� igenom
sina /bin- och /.*history-filer efter m�nster eller kryph�l.
Den verkligt motiverade administrat�ren kommer l�gga m�rke till
sekvenser som kan automatiseras, st�llen d�r f�rnuftskollar kan l�ggas
in och uppgifter f�r vilka "root"-privilegierna tillf�lligt kan
upph�vas (k�ra ig�ng editorer, MTAn och andra stora interaktiva
program med goda inst�llningsm�jligheter som *kan* l�ggas in
transparent eller i datafiler - som den k�nda ./.exrc f�r vi och emacs
./.emacs och det �nn mer v�lk�nda $EXINIT och de inb�ddade
header/footer-makrona). De kommandona kan naturligtvis k�ras med n�got
i stil med:
cp $data $n�gon_anv�ndares_hem/tmp
su -c $origkommando $diverse_argument
cp $n�gon_anv�ndares_hem/tmp $data
(...d�r det mer specifika beror p� kommandot.)
Den sista sortens f�rbeh�ll �r �verdrivna om det handlar om en ensam
anv�ndares arbetsstation - men de �r v�ldigt bra av princip, om du �r
administrat�r av ett fleranv�ndarsystem - speciellt ett allm�nt
exponerat system (som de p� netcom).
3.7. Hur du st�ller in in xdms v�ljare f�r host-val. Arrigo Triulzi,
[email protected]
1. Modifiera filen som k�r ig�ng xdm (oftast /etc/rc/rc.6 eller
/etc/rc.local) s� att den inneh�ller de f�ljande raderna i
avsnittet om xdm-start.
/usr/bin/X11/xdm
exec /usr/bin/X11/X -indirect hostname
2. Editera /usr/lib/X11/cdm/Xservers och kommentera ut raden som
startar servern p� den lokala maskinen (d.v.s. startar 0:)
3. Boota om maskinen och du �r klar.
Jag l�gger till detta eftersom det, n�r jag desperat f�rs�kte
konfigurera det f�r mitt eget subn�t, tog mig ungef�r en vecka att
reda ut alla problemen.
Varning: med gamla SLS (1.1.1) kan du av n�gon anledning l�mna ett
-nodaemon efter xdm-raden - detta fungerar INTE med senare utg�vor.