Usenet::
de.comp.os.linux.misc
de.comp.os.linux.hardware
de.comp.os.linux.x
de.comp.os.linux.networking
maus.os.linux
Serielle Verbindungen
Verbindung von zwei Rechnern per Nullmodem
Bemerkung: Sowohl mgetty,
als auch getty lesen die Datei /etc/gettydefs.
Diese Datei ist für mgetty
notwendig!
Um den Rechner, der eine eingehende Verbindung ermöglichen soll zu konfigurieren gibt es
zwei Möglichkeiten:
- Am besten (und einfachsten) mit mgetty :
Dazu trägt man in /etc/initab nur diese Zeile ein:
nu:123:respawn:/usr/local/sbin/mgetty -r -s 115200 nullmodem
Und in /dev/ erstellt man den Link /dev/nullmodem -> /dev/ttyS0.
Man kann mgetty nicht testweise von Hand starten, sondern nur über init!
In /etc/gettydefs muß dann diese Zeile hinein:
F115200# B115200 CS8 CRTSCTS # B115200 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F115200
- Wenn man keinen mgetty
hat (kann das wahr sein?), dann muß man den getty so einstellen:
In /etc/inittab diese Zeile eintragen:
S1:456:respawn:/sbin/getty ttyS1 DT1200 vt100
in /etc/default/getty.ttyS1:
TIMEOUT=60
WAITFOR=\r
in /etc/gettydefs:
#1200 bps Dumb Terminal entry
DT1200# B1200 CS8 CLOCAL # B1200 SANE -ISTRIP CLOCAL #S @L login: #DT1200
Mit dieser Konfiguration wurde eine Verbindung mit dem C64 ermöglicht.
Dann Neustart des Init: kill -HUP 1 oder init q
(Danach sollte ein login auf dem Terminal des anderen Rechners erscheinen.)
Modem-Verbindungen herstellen
1. /dev/modem sollte auf /dev/ttyS1 gelinkt werden.
2. Unter Umständen RTS/CTS einschalten:
in /sbin/init.d/boot.local eintragen: stty crtscts < /dev/modem
3. Re-Ring für Modem-Verbindungen mit nur einer Telefonleitung, die auch für Gespräche
genutzt werden soll, geht mit mgetty.
Nur in /etc/initab eintragen:
mo:123:respawn:/usr/sbin/mgetty -R 60 -s 57600 modem
Man kann mgetty nicht testweise von Hand starten, sondern nur über init!
In /etc/gettydefs
muß dann diese Zeile hinein:
F57600# B57600 CS8 CRTSCTS # B57600 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F57600
Mgetty wartet auf Klingeln und geht nicht (!) an die Leitung, sondern wartet erst 30
Sekunden und geht dann in den nächsten 60 Sekunden an die Leitung.
Es wird sowohl FAX, als auch Datenverbindung entgegengenommen.
Zum Fehlersuchen kann eventuell "script" oder "cu" oder "echo
-ne 'ATZ\r'>/dev/modem'" nützlich sein.
PPP
- Als ersten sollte man die grundlegende Netzkonfiguration vornehmen, die auch für Rechner ohne Netzverbindung notwendig ist.
- Informationen über den Anschluß bei LRZ oder TUM lesen.
- Kernel mit PPP-Unterstützung kompilieren
- PPP-Paket installieren
- Sendmail sollte man mit YAST auf SMTP mit DNS-Zugriff einstellen.
- Man muß Sendmail mit einem SMART_HOST konfigurieren, wenn man "hinter" einem Firewall PPP nutzt. (Wie üblich.)
- Das "ppp-on" -Skript legt man nach /usr/local/bin.
- Dazu gehört noch das "ppp-chat" -Skript, in dem das Paßwort steht. Diese Datei darf deshalb nicht für Fremde lesbar sein!
- Ausschalten kann man das PPP mit einem "ppp-off" -Skript
- Ganz wichtig: mkdir /var/lock
- Und immer dran denken: Im SYSLOG (F10) wird alles mitgeschrieben! Dort kann man Fehler finden!
- Zum Fehlersuchen: tcpdump
- Performance
Unter Linux ist im Kernel der ganze Netzwerk-Teil auf höchsten Durchsatz optimiert.
Das hat aber den großen Nachteil, daß bei PPP-Verbindungen dieser Effekt auftritt: Wenn ein Programm viele Daten überträgt, wie etwa bei FTP oder WWW, dann leidet die "Interaktivität", also die Reaktionszeit der langsamen Programme wie Telnet erheblich. Das geht so weit, daß man nicht mehr damit arbeiten kann.
Abhilfe schafft eine Änderung der Window-Größe, wie sie durch mein "setspeed"-Kommando in meinem "ppp-on" -Skript zu sehen ist.
Durch diese Änderung sinkt zwar der Datendurchsatz von 1.32 kB/s auf 1.21 kB/s, das ist aber wohl leicht zu verschmerzen.
Wer will, der kann auch mit den Nagle-Algorithmus im Kernel herumspielen: NagleFix-Patch
Andere Möglichkeit:
In /usr/src/drivers/net/ppp.c in ppp_init_dev() den tx_queue_len Parameter von 10 auf 3 oder 4 setzen. Ab Linux 2.1.77 gibt es auch einen neuen ioctl (SIOCSIFTXQLEN) um diesen Wert für jedes Device zu setzen. Bei ISDN Links läßt sich auch ein positiver Effekt mit einer kleineren tx_queue_len erreichen. - Sicherheitsaspekte:
- Alle Accounts sicher machen durch Paßwortvergabe.
- Das ppp-on Skript unlesbar machen, wenn Paßwörter drinstehen:
chmod 711 ppp-on - Das PPP-Paßwort darf nicht in der chat- oder gar pppd-Commandline (die kann man über ps
oder /prog/
/cmdline bekommen) stehen, sondern in einer Script-Datei, owner Root, mod 600. - In der Datei /etc/login.def ist definiert, von wo sich der Root einloggen darf:
CONSOLE tty1:tty2:tty3:tty4:tty5:tty6:tty7:tty8
Wenn sich Root über ttyS1 einloggen können soll, dann ttyS1 hinzufügen. - Eine mögliche Methode: Alles was nicht ausdrücklich erlaubt ist, ist verboten: Alle Dienste, die man nicht braucht aus der inetd.conf austragen.
- Man kann die Zugänge zu einem System mit einem sogenannten tcpwrapper sichern. Das setzt aber voraus, daß auf den Maschinen, von denen aus der Zugriff erfolgt, der "Authentication Service" (meist durch identd immplementiert) verfügbar ist. Man sollte sich aber klar sein, daß auch so ein Verfahren Schwächen und Angriffspunkte hat.
- Die r* Berkeley-Dienste (rcp, rlogin, rsh) sollte man durch SSH (Secure Shell) ersetzen.
- In /etc/inetd.conf sollte man tftp auskommentieren, wenn man es nicht braucht,
denn damit sind alle world-readable Files ohne Passwort jedem zugänglich. Wenn man tftp
(etwa für ein X-Terminal) braucht, dann sollte man es auf ein Verzeichnis einschränken,
indem man den Verzeichnisnamen dahinterschreibt:
tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /boot/tftp - Die Dateien /etc/hosts.allow und /etc/hosts.deny bestimmen, zu welchen
anderen Rechnern Verbindungen zugelassen werden. Allen Rechnern, die in /etc/hosts.allow
stehen wird Zugriff erlaubt, egal was in /etc/hosts.deny steht. Wenn der Rechner
in /etc/hosts.deny steht, dann wird der Zugriff verweigert. Wichtig: Wenn der
Rechner nirgends steht, dann wird der Zugriff erlaubt! Man sollte also alles Sperren, bis
auf Ausnahmen, indem man /etc/hosts.allow leer läßt und in /etc/hosts.deny
das einträgt:
ALL EXCEPT telnet, ftp, www, tcpmux : ALL EXCEPT LOCAL - In die Datei /etc/hosts.equiv sollte man Rechner eintragen, denen man vertraut. In der Regel sollte man nichts eintragen. Wenn z.B. hp3 eingetragen wird, dann können alle Benutzer von hp3 sich an meinem System unter dem gleichen Benutzernamen anmelden, wie auf hp3.
- Um NFS zu mounten:
mount -t nfs RECHNER:PFAD mountpoint
wobei der RECHNER in der Datei /etc/exports seinen PFAD exportieren muß.
LEO-incoming:
mount -t nfs hpleo1:/archive/leo/.mntpts/tum.info-tmp1 /mnt/a
LEO-devices und os:
mount -t nfs hpleo1:/archive/leo/.mntpts/tum.info-pub7 /mnt/a
LEO- Rest von devices:
mount -t nfs hpleo1:/archive/leo/.mntpts/tum.info-pub8 /mnt/a
msdos:
mount -t nfs hpsystem2:/archive/leo/.mntpts/tum.info-pub1 /mnt/a
???
mount -t nfs hpsystem2:/archive/leo/.mntpts/tum.info-pub2 /mnt/a
mount -t nfs hpsystem2:/archive/leo/.mntpts/tum.info-pub3 /mnt/a
mount -t nfs hpsystem2:/archive/leo/.mntpts/tum.info-pub4 /mnt/a
mount -t nfs hpsystem2:/archive/leo/.mntpts/tum.info-pub5 /mnt/a
PPP-Server einrichten
Zuerst konfiguriert man den mgetty um Modem-Verbindungen zu
ermöglichen.
Wenn man dabei das "Auto-PPP" von mgetty aktiviert, dann ist man schon fertig.
Wenn man es allerdings über einen Login-Vorgang lösen will, dann geht das so:
Dann richtet man einen PPP-Account ein (entnommen aus NAG):
In /etc/passwd:
ppp:x:500:200:PPP Account:/tmp:/usr/local/bin/ppplogin
(Natürlich bei Bedarf mit anderen uid und gid.)
Und /usr/local/bin/ppplogin:
#!/bin/sh
# ppplogin - Script startet pppd beim Login
mesg n
stty -echo
exec /usr/sbin/pppd -detach silent modem crtscts
Zum Login verwendet man ein gewöhnliches "ppp-on":
#!/bin/bash
stty 57600 cs8 pass8 crtscts
pppd -ipx-protocol mtu 296 debug crtscts defaultroute \
netmask 255.255.255.0 /dev/modem 57600 \
connect '/usr/sbin/chat -v -f /root/private/remote.chat'
Das Chat-Script sieht so aus:
ABORT BUSY ABORT "NO CARRIER" ""
ATZ OK
ATL1M1DPtelefonnummer TIMEOUT 90
CONNECT "" login: ppp assword: geheimes_passwort
Für den Palm-Pilot reicht ein simpler pppd-Aufruf:
/usr/sbin/pppd /dev/modem 19200 :172.16.0.100 local persist
Booten
Linux mit einer Boot-Disk von einer Partition starten
Kernel auf die Disk
dd if=/vmlinuz of=/dev/fd0
Sagen, welche Partition gebootet werden soll:
rdev /dev/fd0 /dev/sd[irgendwas]
Bootsektor und Partitionstabelle kopieren
Sicherung des Bootsektors:
dd if=/dev/sdaX of=bootsektor bs=512 count=1
Sicherung des Master-Boot-Records (MBR):
dd if=/dev/sda of=mbr bs=512 count=1
Auf eine Floppy kopieren zum Booten:
dd if=/dev/hda of=/dev/fd0 bs=512 count=1
LILO-Installation
Wenn man von MO von der 1. Partition (/dev/sda1) booten will, dann muß LILO
im MBR installiert sein. Wichtig ist dann dieser Eintrag in der lilo.conf:
boot=/dev/sda (Und nicht /dev/sda1)
Trotzdem wird im IMAGE-Abschnitt das Root angegeben:
image = /vmlinuz
root = /dev/sda1
label = Linux
Erklärungen:
install=
Lage und Bezeichnung des bootsektors. Linux verwendet als Standard /boot/boot.b
image=
Bei Problemen:
Wenn beim Booten mit lilo nur 'li' erscheint, deutet das auf einen Plattengeometriefehler
hin. Auch die Warnung 'not on the first disk' deutet darauf hin, daß die Platte nicht als
erste gemeldet wird, aus welchem Grund auch immer.
Also: Die Zeile 'verbose = 3' in /etc/lilo.conf einbauen und lilo aufrufen. Im
Output nach einer Zeile suchen, die wie folgt aussieht:
Device 0x0808: BIOS drive 0x81, 255 heads, 522 cylinders
Das wichtige dabei ist die Bios drive number. Wenn die nicht 0x80 ist, in /etc/lilo.conf
die Zeile
disk = /dev/sda bios=0x80
am Ende der 'global section', (vor der Zeile mit Image=...) einfügen und lilo erneut
aufrufen. In jedem Fall die hexadezimale Notation mit 0x.. verwenden! Wenn das nichts
hilft: Das Kapitel über drive geometry in user.dvi aus der lilo Dokumentation lesen
(unter /usr/doc/lilo/doc oder /usr/lib/lilo/doc)
Konfiguration:
Im BIOS abgemeldete IDE-Platte, 2 SCSI Platten, Linux soll von SCSI-Disk 1 booten:
verbose=3
boot=/dev/sda
linear
read-only
delay=50
vga = normal
disk = /dev/sda bios=0x80
image = /vmlinuz
root = /dev/sda1
label = Linux
Init-Parameter
Man kann dem Lilo oder Loadlin Parameter für Init mitgeben: 1, 2, 3, 4, 5, single oder
emergency. Wenn z.B. Linux nicht richtig bootet, weil im Runlevel 2 oder 3 etwas
schiefläuft, dann kann man Linux im Single-User-Mode booten:
c:\linux\loadlin c:\linux\2033 root=/dev/sda1 ro single
Oder mit Lilo:
Lilo-Prompt: Linux single
Man kann den Kernel auch veranlassen, statt Init eine Shell zu starten:
init=/bin/sh
Rechner ohne Platte booten
Ich habe es noch nicht ausprobiert, aber mir schon folgendes notiert:
- Das geht z.B. mit etherboot. Man braucht natürlich einen bootp/NFS-Server dafür.
- netboot-0.5.2
- Diskless-Mini-Howto, NFS-Root-Mini-Howto, /usr/src/linux/Documentation/nfs-root.txt
- "Diskless" booten: Der Rechner holt sich auch den Kernel selber übers Netz. Du brauchst also entweder eine bootfähige Netzwerkkarte oder aber eine Bootdiskette, die Du mit dem Paket "netboot" (irgendwo auf der Sunsite) selber erstellen kannst. Bei mir haut das mit der Bootdiskette leider nicht hin, ich bekomme nur die Meldung, daß der Loader nicht in Ordung sei.
- Root-Verzeichnis via NFS importieren. Das bedeutet, daß nur der Linux-Kernel auf Deinem Rechner ist (Booten dann z.B. mit loadlin) und alles andere via NFS importiert wird. Dafür mußt Du dann "NFS-Root" und NFS selber in den Kernel mit importieren. Deine IP-Adresse bekommst Du dann mit dem BOOTP-Protokoll vom Server mitgeteilt (anhand Deiner Netzwerkkarten-Hardwareadresse). Danach sollte eigentlich das Root-Verzeichnis via NFS gemounted werden, aber das klappt bei mir nicht ("Adding of local route failed"... Keine Ahnung, wieso.
- Mal sehen ...
Fehlermeldungen beim Booten
- Die Meldung beim Booten:
Starting daemons: syslogd/etc/rc.d/rc.M: line 30: 37 Interrupt
kann man beheben durch Start des syslog im Hintergrund mit "&". - Wenn die Meldung "Can't locate module char-major-4" kommt, dann muß
man in /etc/conf.modules das eintragen:
alias char-major-4 off
Kopieren und Sichern
Sicherungen und Kopieren
cd /quelle
find . -print | cpio -pvdm /ziel
oder:
cd /quelle
cp -axv . /ziel
oder mit TAR:
cd /quelle
tar -cvpf - . | gzip --best > /ziel.tgz
Bedeutung:
Create, Verbose, Preserve attributes, file stdout (-)
GZIP nimmt die Ausgabe vom TAR und komprimiert nach ziel.tgz
Sicherungen über das Netzwerk:
- Rshd richtig einstellen, wenn es als Root funktionieren soll:
shell stream tcp nowait root /usr/sbin/tcpd in.rshd -Lh - tar -cvzf - /filesystem | \
ssh tapehost 'buffer -s 32k -m 10m >/dev/st0' - tar -cvf username@host.domain:/dev/st0 .
- tar -cvf - waszusichern | \
( rsh host.domain -l username tar -xvf /dev/st0 - )
Sicherung mit Streamer
cd /quelle
tar -cvpf /dev/tape .
(d: diff, x: extract, t: list)
Einzelfiles extrahieren: tar -xvf /dev/tape 'c:/temp/*'
Bandbewegungen:
Zurück: mt bsfm
Ungetestet:
I use a mt setblk 0, and a dd buffer of 32 KB
I do backups like:
cd /
find . -print | cpio -ovB | dd of=/dev/st2 bs=32000
Angeblich ist "-b 20" die übliche Blockgröße?!
Ungetestet:
cd /quelle
find . -print | cpio -ocvB > /dev/tape
cd /quelle
find . -print | cpio ocvC 65536 > /dev/tape
Komplette Filesysteme kopieren
Linux komplett auf anderes Medium kopieren:
- Die einfachste Methode, die alles außer gemounteten Filesystemen (-x) kopiert ist:
cp -axv /quelle /ziel - Mit tar geht es so:
cd /ziel
tar -C /quelle/ -cplf - . | tar -xpf -
- So funktioniert es (wenn auch umständlicher) auch:
cd /
find . -xdev | egrep -v "\./dev/|\./mnt/|./proc/" | cpio -pvdm /mnt/ziel/
Das /dev-Verzeichnis kann man kopieren mit:
cp -av /dev /mnt
wobei /mnt das Ziel ist. In /mnt wird dabei ein /mnt/dev/ erstellt, wenn es noch nicht existiert.
Und das /mnt/-Verzeichnis kann man "kopieren" mit:
cd /mnt
mkdir `/bin/ls /mnt/ALTE_PLATTE/mnt/`
Verschiedenes
Disketten formatieren
1.44MB Disk in einem 1.2MB Laufwerk formatieren:
fdformat /dev/fd0h1440
und dann
mformat a:
Falls es dieses Device nicht gibt, dann erstellen:
mknod /dev/fd0h1440 b 2 40
Mount (Root ReadOnly)
Um die Root-Partition, die aus diversen Gründen Read-Only gemountet worden ist, wieder
als Read-Write zu mounten reicht dieser Befehl:
mount -w -n -o remount
X11-Installation
Mit xvidtune kann man die Einstellungen Testen und verbessern. (Das alte vgaset
gibt es nicht mehr.)
X11 nutzen mit VESA und Frame Buffer:
Grafikkarte muß VESA 2.0 kompatibel sein. Alternativ kann man auch unter DOS univbe
verwenden und Linux mit Loadlin starten. Im Kernel muß FB-Support für VESA drin sein.
Kernel-Boot-Parameter muß z.B. vga=792 sein (1024x768x16M). Bei RedHat gibt es einen
X-Server dafür: XF86_FBdev-xx-xxx-xxx.rpm installieren und den Server auf X
linken. Modeline erhält man mit "fbset -x". Es geht auch ohne Modeline, wenn
man in der Screen-Section bei Modes default einträgt.
Hinzufügen von nachträglich eingeschalteten SCSI-Geräten
Entnommen aus: /usr/src/linux/drivers/scsi/scsi.c:
Verwendung: echo "scsi add-single-device Host Channel Id Lun"
>/proc/scsi/scsi
Also: echo "scsi add-single-device 0 0 3 0" >/proc/scsi/scsi
Damit wird das Gerät mit der SCSI-ID 3 hinzugefügt. Entfernen geht mit "remove-single-device".
In sein Skript gepackt sieht es dann so aus: scsirescan
Ich empfehle aber jedem, der externe Geräte nachträglich ein- und ausschalten muß, sich
das Device-Filesystem devfs
anzuschauen. Das löst alle Probleme mit den generischen SCSI-Geräten. Damit gehört die
unpraktische und gefährliche Numerierung sga, sgb, sgc, ...
der Vergangenheit an.
SUID-Scripte
Um etwas Set-UID laufen zu lassen gibt es "su1" oder "sudo".
Aber es ist unter Linux nicht möglich Scripten SUID laufen zu lassen, da es ein
Sicherheitsloch darstellen würde. Das SUID-Bit (ebenso wie SGID) kann bei Shellscripten
zwar gesetzt werden, hat aber keine Wirkung. Aber es gibt eine Lösung: Man kann das
Script in ein C-Programm packen, das dann SUID laufen kann. Man kann z.B. folgendes
C-Programm als Wrapper verwenden:
#include#define PROGPATH "/usr/local/bin/perl" #define PROG "perl" main () { execl (PROGPATH, PROG, "/usr/local/bin/MEINSCRIPT", NULL); fprintf (stderr, "exec %s failed\n"); }
Swap (Paging)
Die Swap-Partition oder ein Swap-File kann maximal 130752 Blocks groß sein!
Wenn man das Paging beschleunigen will, so kann man Striping bzw. Interleave zwischen den
Swap-Spaces aktivieren. Dazu stellt man für die Swapspaces die gleiche Priorität ein,
was bewirkt, daß auf diese gleichzeitig zugegriffen wird. Das macht natürlich nur bei
physisch unterschiedlichen Platten Sinn.
# For interleaved swapping across multiple devices:
/dev/scsi/host1/bus0/target5/lun0/part1 swap swap pri=1 0 0
/dev/scsi/host1/bus0/target6/lun0/part1 swap swap pri=1 0 0
/dev/scsi/host1/bus0/target1/lun0/part2 swap swap pri=0 0 0
"Zerstörte" Terminals
Wenn ein XTerm oder die Konsole etwa so aussieht:
ÈccyƒvyéY•ÄyPÃâ`Y0;¤zIb!+ìÀyí-prríq`
"q‘^),w‰í
ÉÞð†+¼q»ó/62øaðvÀÃkó,ªxË·‹1(t¥eÿIÈ,Ù8³âc’Ë
x"»Öæ0`;ÇàŠdT»Ú®ÉëYv{�¹!t”Ø,B“‡Ãtæ0È0p||=â1Î]wÈS`õå4
weil man z.B. versehentlich ein cat test.gif losgelassen hat, dann hilft das
Kommando reset in diesem Terminal. Alternativ funktioniert auch
"
Patch mit Diff erstellen
Einen Patch zwischen zwei Verzeichnissen erstellt man mit:
diff -u --recursive --new-file AltesVerz NeuesVerz > patch.txt
Einen Patch zwischen zwei Files erstellt man so:
diff -u AltesFile NeuesFile > patch.txt
Anwenden kann man den Patch dann so:
patch < patch.txt
(Dabei sollten sich das zu patchende Verzeichnis oder File im aktuellen Verzeichnis
befinden.)
Inode-Anzahl einstellen
Für eine Platte, die viele kleine Files aufnehmen soll, wie zum Beispiel ein
News-Spool, sollte man die Inode-Anzahl erhöhen:
mke2fs -v -i 2048 /dev/sdc
Standardwert ist 4096. Je kleiner der Wert, desto mehr Inodes werden reserviert.
Tips für Postscript
- Eine falsche (oder defekte) Boundingbox kann man so beheben:
pstoedit -f fig x.ps x.fig
xfig x.fig
und dann als PS exportieren. (Ungetestet: Alternativ kann man auch ps2epsi von Ghostscript benutzen.) - Einen Booklet-Druck mit Duplexeinheit kann man so erreichen:
Ohne psnup:psbook file.ps | pstops "4:-3L@.7(21cm,0)+0L@.7(21cm,14.85cm),1R@.7(0cm,14.85cm)+-2R@.7(0cm,29.7cm)" > out.ps
andere Drehung:
4:-3L@.7(21cm,0)+0L@.7(21cm,14.85cm),1L@.7(21cm,0)+-2L@.7(21cm,14.85cm)
Mit psnup:
psbook file.ps | psnup -2 | pstops "2:0,1U(21cm,29.7cm)" > out.ps
Referenzen auf eine Homepage feststellen
kann man, indem man in Altavista oder Infoseek nach folgendem sucht:
link:192.168.30.254/books_online/tips
Hotbot hat diese Funktion in der "Look
for"-Auswahlbox.
Bemerkungen zur SuSE 6.0 Installation
- chmod 755 /mnt
- Bei neu angelegten Usern muß man erst ~/.Xauthority löschen, sonst startet kein X.
- Um alte libc5-Programme laufen zu lassen, muß man den LD_LIBRARY_PATH der SuSE 4.4 löschen.
CD und CDRW brennen
- Image erstellen:
mkisofs -o Image -J -r verzeichnis_oder_file(s)
oder ohne -T, dann kein TRANS.TBL
Mit "-l" wird es unter DOS unbrauchbar!
- Image mounten:
mount -t iso9660 -o ro,loop=/dev/loop0 IMAGEFILE /mnt/cdrom
- Brennen von Daten-CD:
Testen:
cdrecord -dummy -v speed=4 dev=0,3,0 IMAGEFILE
Brennen:
cdrecord -v speed=4 dev=0,3,0 IMAGEFILE
- Brennen von Audio:
Von MP3 ein WAV erstellen geht mit: amp -c -w file.mp3 file.wav
cdrecord -v speed=4 dev=0,3,0 -pad -audio /tmp/*.wav
Wenn die Tracks übergangslos sein sollen "-dao" verwenden:
cdrecord -v speed=4 dev=0,3,0 -dao -pad -audio /tmp/*.wav
(Erfahrungen mit verschiedenen CD-Marken) - Bei CD-RWs muß man einfach zusätzlich die Option --blank=fast beim Brennen verwenden.
- Infos:
cdrecord -scanbus
cdrecord -atip -v speed=4 dev=0,3,0
cdrecord -prcap -v speed=4 dev=0,3,0
cdrecord -inq -v speed=4 dev=0,3,0
Kernel Oops analysieren
Wenn der Kernel einen Oops bringt, dann versucht der klogd diesen zu
analysieren, was meist fehlschlägt. Deshalb am besten in einer Testphase den klogd
deaktivieren.
Wenn es dann zu einem Oops kommt, dann sitzt dieser Text noch in /proc/kmsg wo
man ihn nur so herauslesen kann:
cat /proc/kmsg > /tmp/oops.txt
Nach einer kurzen Wartezeit mit CTRL-C abbrechen.
Dann kann man den Oops mit /usr/src/linux/scripts/ksymoops analysieren:
ksymoops -v vmlinux -m System.map
Wenn der make für ksymoops nicht durchläuft, dann fehlen wahrscheinlich die
Libraries libiberty und lbfd, welche bei den binutils-2.9.1.0.15
dabei sind.
Beeps ausschalten
Auf der Konsole kann man die Beeps so ausschalten:
setterm -blength 0
Und unter X11 kann man es so ausschalten:
xset b off
Software
Perl
Perl ist normalerweise bereits intalliert.
Sehr empfehlenswert sind noch die folgenden Module:
Time-modules-97.011701.tar.gz
Data-Dumper-2.08.tar.gz
(bereits bei 5.005_02 dabei!)
libnet-1.0505.tar.gz
MD5-1.7.tar.gz
libwww-perl-5.08.tar.gz
Tk400.202.tar.gz
sha-1.2.tar.gz
MLDBM-2.00.tar.gz
Diese können nach dem Auspacken ganz einfach installiert werden:
perl Makefile.PL
make
make test
make install
LaTeX (teTeX) einrichten
Einfach als Root "texconfig" (/usr/lib/teTeX/bin/i386-linux/texconfig)
starten und der Rest geht menügeführt.
Zum Beispiel habe ich mir den "MODE" auf "canonbjc" umgestellt. Bei
"XDVI" habe ich "PAPER" auf "a4" umgeschaltet.
StarOffice 3.1 Beta 4
Die genaue Versionsnummer eines installierten SO kann man herausfinden, indem bei
Hilfe->Produktionformationen STRG-SDT tippt.
Die Tar-Files in ein Verzeichnis entpacken, z.B. /usr/StarOffice3.1 und dann muß
jeder Benutzer setup starten.
Man sollte /usr/StarOffice3.1/linux-x86/bin/svdaemon und /usr/StarOffice3.1/linux-x86/bin/svportmap
nur einmal starten. Wenn man diese in /sbin/init.d/boot.local starten will, dann
muß man vorher den Path für die Libraries definieren:
export LD_LIBRARY_PATH=/usr/X11R6/lib:/usr/StarOffice3.1/linux-x86/lib
und den Port-Mapper starten: /usr/sbin/portmap -v, wenn er nicht sowieso schon
läuft.
Man kann auch noch weitere
Fonts installieren.
Es gibt auch noch eine ausführliche
Installations-Anleitung.
StarOffice 4.0 Service-Pack 3 und Nachfolger (bis 5.1)
- Wenn man von einem älterem SO updatet, dann kann man die beiden Dämonen svdaemon und svportmap wieder entfernen.
- SO4 SP3 funktioniert auch mit einer LibC 5.4.7!
- Das Tar-File in ein temporäres Verzeichnis entpacken und als Root "./setup /net" starten. Als User nur noch "setup" starten.
- Farbig drucken ermöglichen (für 5.1 nicht mehr nötig!):
In /opt/Office40/xp3/ppds/GENERIC.PS folgende Änderungen vornehmen:
*LanguageLevel: "2"
*ColorDevice: True
*DefaultColorSpace: RGB
- Fonts hinzufügen (Type 1):
- Fonts für X11 und Ghostscript installieren
- Vorweg muß man erwähnen, daß SO bis Version 5.0 nur ca. 300 Fonts verkraftet. Entscheidend ist dabei die Anzahl von Dateien oder Links im Verzeichnis /opt/Office/xp3/pssoftfonts. Seit 5.0 kann man beliebig viele Fonts installieren.
- StarOffice benötigt zu jedem Font eine afm-Datei. Die fehlenden afm-Dateien
("Adobe Fontmetrik") kann man mit einem der Ghostscript-Tools erzeugen. Es
heißt printafm.ps und wird mit GhostScript z.B. so benutzt:
gs -q -dNODISPLAY -- printafm.ps capri.pfb > capri.afm
Am einfachsten ist dazu pfb2afm zu verwenden. Da StarOffice mit diesen afm-Files Probleme hat muß man sie noch durch afm.pl modifizieren.
Wenn man die AFMs gleich mit afmmaker.ps erstellt, so kann man auf afm.pl verzichten. Dazu trägt man den Fontnamen hinter /fontname in afmmaker.ps ein und startet damit Ghostscript:
gs -sNODISPLAY -q -sBATCH afmmaker.ps -c quit > font.afm
Diese afm-Files linkt man dann einzeln in das Verzeichnis /opt/Office40/xp3/fontmetrics/afm/:
ln -s /meine/neuen/fonts/capri.afm /opt/Office40/xp3/fontmetrics/afm/capri.afm - Die pfb-Files linkt man einzeln in das Verzeichnis /opt/Office40/xp3/pssoftfonts/:
ln -s /meine/neuen/fonts/capri.pfb /opt/Office40/xp3/pssoftfonts/capri.pfb - Die Datei /opt/Office40/xp3/psstd.fonts ist noch zu ergänzen (ähnlich fonts.dir, man
beachte die "%d" anstelle der "0"):
starmath, -star division-starmath-medium-r-normal--%d-%d-%d-%d-p-0-iso8859-1
starbats, -star division-starbats-medium-r-normal--%d-%d-%d-%d-p-0-iso8859-1
Diese Einträge kann man sich so aus fonts.dir erzeugen:
cd /meine/neuen/fonts/
cat fonts.dir | perl -pe 's/\.pfb/,/; s/0-0-0-0-p-0/\%d-\%d-\%d-\%d-p-0/;' - Zusammenfassung:
cd /meine/neuen/fonts/ pfb2afm *.pfb for i in *.afm; do afm.pl $i; /bin/mv $i.new $i; done cd /opt/Office40/xp3/pssoftfonts for i in `find /meine/neuen/fonts/ -name "*.pfb"`; do ln -s $i; done cd /opt/Office40/xp3/fontmetrics/afm for i in `find /meine/neuen/fonts/ -name "*.afm"`; do ln -s $i; done cd /meine/neuen/fonts/ cat fonts.dir | perl -pe 's/\.pfb/,/; s/0-0-0-0-p-0/\%d-\%d-\%d-\%d-p-0/;'
- Fonts hinzufügen (TrueType):
- Fonts für X11 und Ghostscript installieren (Dabei werden auch gleich brauchbare afm-Files erstellt.)
- Wenn man die so installierten Fonts in StarOffice hernehmen will, dann muß man die
Einträge in /opt/Office/xp3/psstd.fonts von Hand erstellen, die so aussehen:
font, -ttf-font-normal-r-normal-tt-%d-%d-%d-%d-p-0-iso8859-1
Allerdings wird ein Minus-Zeichen beim Aussdruck zu einem Kästchen, was wohl an der unterschiedlichen Codierung der Fonts liegt. - Interessant ist aber die Nutzung des TrueTypes Times News Roman, weil man damit auf Systemen, die keinen skalierbaren Times-Font haben trotzdem eine perfekte Bildschirmdarstellung erhält. Dazu installiert man wie eben beschrieben den Font und trägt ihn aber nicht in /opt/Office/xp3/psstd.fonts ein. Dann wird der Font nur zur Bildschirmdarstellung verwendet.
- Neue Drucker kann man ganz einfach in /opt/Office40/xp3/Xpdefaults durch
folgende Ergänzungen eintragen:
[devices]
Canon BJC-620 (normal)=GENERIC PostScript,default_queue
Canon BJC-620 (low)=GENERIC PostScript,low
Canon BJC-620 (high)=GENERIC PostScript,high
Ghostview (Preview)=GENERIC PostScript,preview
[ports]
low=lpr -Plow
high=lpr -Phigh
preview=cat | ghostview -geometry +0+0 -
Bei 5.1 muß es SGENPRT statt GENERIC heißen.
Natürlich müssen die benannten Drucker "low" und "high" in /etc/printcap eingetragen sein. Siehe dazu auch den Abschnitt über Drucker. - Eine Fontliste kann man leicht mit fontliste erstellen.
PovRay3
- Man sollte den alten Povray deinstallieren:
cd /usr/bin
zip -m povray-old povray*
- Archiv auspacken und in dieses Verzeichnis wechseln. Dann:
md /usr/local/lib/povray3
cp -r include /usr/local/lib/povray3
cp -r povscn /usr/local/lib/povray3
cp -r *.ini /usr/local/lib/povray3
cp povray.1 /usr/local/man/man1/
cp s-povray x-povray /usr/local/bin/
cd /usr/local/bin/
ln -s x-povray povray
- Eine Demonstration starten:
povray +W640 +H480 +A0.3 +Q9 +L/usr/local/lib/povray3/include +I/usr/local/lib/povray3/povscn/level3/chess.pov
finddupe
Am besten kann man doppelte Files finden mit:
finddupe -vv PFADE > FILE
Beispiel:finddupe -vv /mnt/disk1 /mnt/disk2 > doppelt.txt
Dann das Resultat-File mit einem Editor bearbeiten und mit diesem:
cat dupe.txt | perl -ne 'split; print "$_[1]\n";'
erhält man die doppelten Files (aus der zweiten Spalte).
c't-ROM einrichten (Alte c't-ROMs)
Beste Lösung: Das Windows-Programm mit WINE starten.
Echte UNIX-Lösung (mit Einschränkungen beim Suchen):
- Vorher httpd zum Laufen bringen (siehe HTTPD)
- ctsuch1_8.tar auspacken, CD im Laufwerk lassen und ./ctinstall starten
Antworten:
Pfadname des cgi-bin-Verzeichnisses des WWW-Servers: /httpd/cgi-bin
Pfadname des Verzeichnisses für die c`t-ROM-WWW-Seiten: /httpd/htdocs/ctrom
Auf alle Fragen mit "Ja" antworten.
XEmacs einrichten (Version 20.4) und Tips
Installation:
- Auspacken von xemacs-20.4.tar.gz.
- Normales Vorgehen:
./configure
make
cd src
rm xemacs
strip temacs
cd ..
make
make dist
make install
- Bei mir war es etwas anders:
./configure --with-dialogs=athena -with-jpeg=no --with-session=yes
make prefix=/opt/xemacs exec_prefix=/opt/xemacs
cd src
rm xemacs
strip temacs
cd ..
make prefix=/opt/xemacs exec_prefix=/opt/xemacs
make dist prefix=/opt/xemacs exec_prefix=/opt/xemacs
make install prefix=/opt/xemacs exec_prefix=/opt/xemacs
Meine Änderungen an den Einstellungen finden sich im ~/.emacs-File. Sehr
hilfreich ist auch die XEmacs-FAQ.
Umfangreiche Konfiguration und Dokumentation gibt es auf der XEmacs & Gnus Page.
Folgendes habe ich eingestellt bzw. aktiviert:
- Die DEL-, Backspace-, HOME- und END-Tasten funktionieren wie gewohnt. Für HPUX 10.20
ist dazu folgende xmodmap nötig:
remove Mod1 = Mode_switch
keycode 0x7D = End
- Control-Tab schaltet zum nächsten Buffer
- F2 speichert den aktuellen Buffer
- F8 speichert den aktuellen Buffer und schließt ihn. (Das funktioniert leider nicht mehr mit dem neuen GNU-Server des XEmacs 20.2)
- F9 startet einen LaTeX-Lauf mit dem aktuellen Buffer oder startet make, wenn XEmacs im C-/C++-Mode ist
- F10 staret XDVI mit dem *.dvi-File des aktuellen Buffers
- Es wird zusätzlich die aktuelle Zeilennummer und Spaltennummer angezeigt
- F11 und Shift-F11 springt im C-/C++-Mode zum nächsten/vorigen Fehler
- Auto-Save in ein separates Verzeichnis eingeschaltet
- .h-Files werden als C++ erkannt
- .Z- oder .gz-Files kann man direkt bearbeiten (Wird automatisch entpackt und wieder eingepackt)
- Fonts für den Bildschirm werden dauerhaft eingestellt (Das wird bei "Save-Options" ja vergessen)
- AucTeX wird aktiviert
- Der Pretty-Print druckt nur noch Filename und Seitenzahl
- Die zuletzt geöffneten Files werden in ein Menü gelegt
- Am Textende werden keine Leerzeilen hinzugefügt, wenn man mit dem Cursor weiter nach unten geht
- XEmacs merkt sich die Cursorposition in jedem File und man befindet sich bei nächsten Laden wieder an der gleichen Stelle
- Es wird verhindert, daß XEmacs seine Region verliert, wenn man beim Markieren mit dem Cursor an das Ende des Buffers gelangt
- C-z macht dasselbe, wie C-y (Für englische Tastaturen)
- Gnuserver wird gestartet. Dann kann man durch "gnuclient textfile" einen Text vom Prompt weg im XEmacs öffnen oder mit einem Mail-Reader wie etwa elm verbinden.
- Der Maus-Cursor weicht dem Text-Cursor aus. (Das ist auskommentiert, weil es inzwischen durch "unclutter" besser gelöst ist!)
- Text wird bei Cut&Paste am Textcursor eingefügt.
- Wenn man gnuclient im elm als Editor hernimmt, dann werden elm's snd.*-Files im Text-Mode mit Auto-Fill geöffnet. Den aktuellen Paragraph kann man sofort mit M-q neu formatieren.
- Den XEmacs Newsreader Gnus habe ich noch ein bischen konfiguriert: ~/.gnus. (Siehe dazu auch meine XEmacs-Add-On-Bookmarks und die XEmacs & Gnus Page und natürlich comp.emacs.gnus.
- Mit "%" wird zur passenden Klammer gesprungen, wenn Cursor auf einer Klammer steht.
Weitere Tips:
- Wenn man mühevoll ein Makro aufgezeichnet hat und dieses dann z.B. auf eine Taste legen will, dann aktiviert man einen Lisp-fähigen Buffer (z.B. *scratch*) und tippt "M-x insert-kbd-macro" und antwortet entweder mit dem Makronamen oder nur mit Enter für das letzte aufgezeichnete Makro. XEmacs fügt dann das Makro im Klartext ein.
- .el zu .elc kompilieren geht mit:
xemacs -batch -f batch-byte-compile perl-mode.el - Ein Stück Programm-Code kann man auskommentieren, indem man das Stück markiert und dann: M-x comment-region RET
- Einem Stück Text kann man am Zeilenanfang einen Text, z.B. Leerzeichen voranstellen mit C-x r t TEXT RET
- Die Region neu (modeabhängig) neu formatieren/einrücken kann man mit M-x indent-region
- Das XEmacs-Syntax-Highlighting kann man auch mit htmlize.el als HTML oder mit latexize.el als LaTeX speichern.
- Akzentuierte Sonderzeichen kann man nach M-x iso-accents-mode eingeben.
WGet
Das universellste und leistungsgähigste Programm zum rekursiven WWW-Download ist WGet
(wget-1.4.4). Meine Einstellungen finden sich in /usr/local/etc/wgetrc.
Man wechselt dann in das Zielverzeichnis (z.B. /httpd/htdocs/mirror) und ruft
wget z.B. so auf:
wget --level=2 http://www.sl.de
Dabei kann man die Rekursionstiefe (hier 2) angeben und die gewünschte Start-URL.
Erst mit einem WWW-Cache
macht WGet (zumindest in dieser Version 1.4.4) erst Sinn. Denn wenn man WGet wie hier
beschrieben betreibt, dann wird ja jede Kopie einer WWW-Seite lokal geändert (Pfade
anpassen). Das hat zur Folge, daß beim nächsten WGet-Update-Lauf diese Seiten wieder
geholt werden. Und so werden sie von lokalen WWW-Cache geholt. Ich habe folgende andere
Programme bereits probiert, und sie haben sich für mich als unbrauchbar herausgestellt:
- getwww-1.4 hat zu wenig Konfigurationsmöglichkeiten und außerdem nur eine koreanische Anleitung, funktioneiert aber prinzipiell.
- webcopy-0.98b7 kann meinen lokalen WWW-Server nicht ansprechen und ist damit nur online testbar und konfigurierbar, sonst aber in Ordnung.
- Noch nicht getestet, klingt aber sehr gut: Snag-o-rama (snag-1.4)
Sound-Programme
Es gibt folgende MOD-Player: nspmod, s3mod, tracker, mikmod, xmp.
Mikmod ist von der Qualität an
besten und versteht auch die meisten Formate.
Der beste MIDI-Player ist timidity, weil er die
GUS-Patches verwenden kann und damit aus meiner billigst-Soundkarte die tollsten Töne
holt. (Den OPL3 kann man ja nicht aushalten...)
Der beste Echtzeit-MP3-Player ist amp.
Es gibt noch maplay
und L3Dec.
RPM
- rpm-2.3.11-1.i386.tar.gz installieren
- mkdir -p /var/lib/rpm
- rpm --initdb
- Dann kann man RPM-Pakete installieren: rpm -v --nodeps -i file.rpm
- Inhalt auflisten:
rpm -qlp file.rpm - Paket deinstallieren:
rpm -e file - Suchen, welches RPM-Paket ein installiertes File enthält:
rpm -q -f FILE
Man kann auch mit rpm2cpio < filename.rpm | cpio -i das RPM in ein CPIO-Archiv verwandeln.
X11 mehrmals starten
Man kann X11 mehrmals (auch mit verschiedenen Farbtiefen) starten, indem man die
gewünschte Display-Nummer angibt:
X -bpp 24 :1
oder startx -- :1 -bpp 8
Die Server starten dann auf der nächsten freien virtuellen Konsole (bei mir ab F8).
Nornalerweise verwende ich den 16bpp-Modus, 8bpp starte ich mit x8, und 24bpp mit x24. Dazu sind
entsprechende Display-Sections in der /etc/XF86Config
ganz nützlich.
Rosegarden
Wenn man den Ausdruck von Notenblättern durch Rosegarden (2.0.1) vergrößern will, dann geht das nur, indem man im TeX-File die Seitengröße reduziert, z.B. \hsize=3.5in und dann beim Ausdruck mit dvips vergrößert: dvips -x 2000 file.ps
Vacation / Procmail
Problem: Man ist im Urlaub und möchte aber auf alle Mails automatisch antworten, daß man die Mail erhalten hat, aber erst am Tag XX lesen kann. Die Lösung ist procmail. Dazu braucht man zwei Files:
- ~/.forward:
|/usr/bin/procmail
- ~/.procmailrc:
# Diese .promailrc realisiert einen "vacation" # Man muß nur noch in ~/.forward das eintragen: # "|/usr/bin/procmail" (Ohne Anführungszeichen!) SHELL=/bin/sh # for other shells, this might need adjustment LOOP="X-Loop: loescher@leo.org" :0 Whc: vacation.lock # Perform a quick check to see if the mail was addressed to us * $^To:.*\<$\LOGNAME\> # Don't reply to daemons and mailinglists * !^FROM_DAEMON # Mail loops are evil * !^${LOOP} | formail -rD 8192 vacation.cache :0 ehc # if the name was not in the cache | (formail -rA"Precedence: junk" \ -A"${LOOP}" ; \ echo "Automatically generated answer follows:"; \ echo ""; \ echo "I received your mail,"; \ echo "but I won't be back until 31.12."; \ echo ""; \ echo "Stephan."; \ echo ""; \ echo "-- "; \ echo "loescher@leo.org"; \ echo "http://192.168.30.254/books_online/tips/"; \ ) | $SENDMAIL -oi -t
Mail weiterleiten mit Procmail
Problem: Man hat zwei Accounts auf denen man Mail liest und kann sich aber auf dem
jeweils anderen Account nicht von dem anderen Account aus einloggen.
Man kommt auf die naheliegende Idee zwei Forwards einzurichten, aber das erzeugt einen
Mail-Loop.
Die Lösung ist procmail. Dazu braucht man zwei Files auf beiden Rechnern:
- ~/.forward:
|/usr/bin/procmail
- ~/.procmailrc:
# Diese .procmailrc leitet Mail an einen anderen User weiter ZIELUSER="user1@rechner.net" # Man muß nur noch in ~/.forward das eintragen: # "|/usr/bin/procmail" (Ohne Anführungszeichen!) SHELL=/bin/sh :0 c * !^X-Loop: Mailweiterleitung | formail -A "X-Loop: Mailweiterleitung" | $SENDMAIL -oi ${ZIELUSER}
Die Weiterleitung kann natürlich auch auf einen Drucker erfolgen:
# Diese .procmailrc druckt eingehende Mails aus SHELL=/bin/sh :0 c | a2ps -nP -1 -p -ns -nL | lpr -Pepson
Eventuelle Konvertierungen und Umformatierungen sind dem Leser als Übung überlassen.
Mail in ein Programm füttern oder ein Programm starten:
:0w
*^(cc|to|Resent-From|X-Mailing-List):.*debian-user@lists.debian.org
| /usr/local/bin/mail2news local.debian.user
oder:
:0:
* (^Subject: backup)
| backup
cdda2wav
Mit cdda2wav kann man CDs digital auslesen. Wenn die Fehlermeldung kommt:
no match: increase overlap (3) or decrease SYNC_SIZE (320). no match: at position 9468565 from 9469740
dann sollte man in "interface.c" den Wert von "overlap" auf 4
erhöhen.
PGP (2.6.3i)
- PGP-Schlüssel erzeugen:
pgp -kg
1024 Bit wählen
PGP-Benutzerkennung (user ID): Stephan Loescher
Pass-Phrase (=Mantra): (Paßwort zur Verschlüsselung des Secret-Keyrings)
Informationen anschauen:
pgp -kvc loescher
Type Bits/KeyID Date User ID pub 1024/B28BBFBD 1997/10/28 Stephan Loescher loescher@leo.org Key fingerprint = F5 AA 34 B6 CD 6F 0D CF 37 05 BB 91 1F E3 00 67
Dabei ist "B28BBFBD" die Signatur! (Beweis: mit pgp -krs löschen und pgp -ks wieder erzeugen)
Schlüsseltyp ist "RSA". (Das erfährt man erst, wenn man seine eigene Signatur entfernt und neu erstellt.) - Dann kann man sich (wenn man will) den Schlüssel von c't
nach dieser Anleitung signieren
lassen.
Die Antwort-Mail wird so importiert:
pgp -ka ~/Mail/pgp-ct.txt
Dann sollte man noch den PGP-Key von c't aufnehmen:
pgp -ka ~/Mail/certfctk.asc
Mit "pgp -kc loescher" kann man sich dann wieder die Informationen anschauen.
Mit "pgp -kxa loescher" kann man den Public-Key in ein File extrahieren und dieses File dann an seine Kommunikationspartner verteilen. (Am besten auf seiner WWW-Homepage) - Wenn man eine neue EMail-Adresse in seinen Schlüssel aufnehmen will, dann geht das mit pgp -ke
PGP (5.0i)
- PGP-Schlüssel erzeugen:
pgpk -g
1 und dann 3 wählen
PGP-Benutzerkennung (user ID): Stephan Loescher
Bei Gültigkeit 0 (forever) eingeben.
Pass-Phrase (=Mantra): (Paßwort zur Verschlüsselung des Secret-Keyrings)
Informationen anschauen:
pgpk -vc loescher
Type Bits KeyID Created Expires Algorithm Use sec+ 1024 0x2D435AAA 1998-11-06 ---------- DSS Sign & Encrypt sub 2048 0x7C25EF88 1998-11-06 ---------- Diffie-Hellman uid Stephan Loescher
SIG! 0x2D435AAA 1998-11-06 Stephan Loescher KeyID Trust Validity User ID * 0x2D435AAA ultimate complete Stephan Loescher Stephan Loescher - Dann kann man sich (wenn man will) den Schlüssel von c't
nach dieser Anleitung signieren
lassen.
Die Antwort-Mail wird so importiert:
pgpk -a ~/Mail/pgp-ct.txt
Dann sollte man noch den PGP-Key von c't aufnehmen:
pgpk -a ~/Mail/certfctk.asc
Mit "pgpk -c loescher" kann man sich dann wieder die Informationen anschauen.
Mit "pgpk -xa loescher" kann man den Public-Key in ein File extrahieren und dieses File dann an seine Kommunikationspartner verteilen. (Am besten auf seiner WWW-Homepage) - Wenn man eine neue EMail-Adresse in seinen Schlüssel aufnehmen will, dann geht das mit pgpk -e
PGP (allgemein)
- Am einfachsten verwendet sich PGP mit XEmacs/Gnus und mailcrypt, indem man
in seine ~/.gnus
dies einträgt:
(load "mailcrypt") (cond ((fboundp 'mc-setversion) (mc-setversion "5.0")) ) ;; oder "2.6" (autoload 'mc-install-write-mode "mailcrypt" nil t) (autoload 'mc-install-read-mode "mailcrypt" nil t) (add-hook 'message-mode-hook 'mc-install-write-mode) (setq mc-encrypt-for-me t mc-passwd-timeout 6000 mc-always-replace 'never) (add-hook 'gnus-summary-mode-hook 'mc-install-read-mode) (define-key message-mode-map [f7] 'mc-sign) (define-key message-mode-map [f8] 'mc-encrypt) (define-key gnus-summary-mode-map [f7] 'mc-verify) (define-key gnus-summary-mode-map [f8] 'mc-decrypt)
Dann kann man mit F8 Ver- und Entschlüsseln und mit F7 Signieren und die Signatur überprüfen.
TCP-Wrapper
Ein TCP-Wrapper hängt zwischen dem inetd und den Dämonen, die Dienste anbieten. Es
gibt dazu eine kurze
Beschreibung des Verfahrens oder den Original-Artikel
Bei SuSe ist bereits der TCP-Wrapper (tcpd) vorinstalliert.
Falls nicht, dann geht es so:
- tcp_wrappers_7.6.tgz auspacken und kompilieren
- cp tcpd /usr/local/bin
- cp tcpd.8 /usr/local/man/man8
- chmod 644 /usr/local/man/man8
- chown root.system /usr/local/bin/tcpd
- chmod 711 /usr/local/bin/tcpd
- In /etc/inetd.conf alle Zeilen so ändern:
Alt: ftp stream tcp nowait root /usr/sbin/ftpd ftpd
Neu: ftp stream tcp nowait root /usr/local/bin/tcpd /usr/sbin/ftpd ftpd - inetd neu starten
Ab nun werden alle Verbindungen in syslog(8) mitgeschrieben.
SSH (Secure Shell) (deutscher Mirror)
SSH ist ein Ersatz für die r* Berkeley-Dienste (rcp, rlogin, rsh) der wohl den besten
Kompromiß zwischen Sicherheit und Praktikabilität liefert. Zusätzlich zur
Verschlüsselung aller Daten kann man auch noch eine Kompression aktivieren. Das wohl
interessanteste Feature ist das X11-Forwarding. Damit kann man X11-Programme remote über
mehrere Rechner hindurch verwenden, ohne das DISPLAY umsetzen zu müssen oder den
unsicheren xhost oder xauth zu verwenden.
Informationen:
- SSH-Home-Page
- SSH-Communications
- SSH-FAQ
- SSH-Getting Started
- Kommerzielle Implementierungen (Data-Fellows)
- CERT
Benutzer-Installation (wenn bereits im System vorhanden):
- Authentisierung kann entweder über einen RSA-Schlüssel oder über das normale Benutzer-Paßwort erfolgen. Wenn keinen Schlüssel, wie nachfolgend berschrieben erzeugt, dann wird nur das Paßwort verwendet.
- Aufruf von ssh-keygen Auf Recher A.
Eine gute lange Passphrase (Paßwort) angeben. Damit wird der private Schlüssel geschützt.
Das Programm erzeugt ein asymetrisches Schlüsselpaar.
Es werden unter $HOME/.ssh/ die Dateien:
identity = privater Schlüssel (nicht verbreiten!) und
identity.pub = öffentlicher Schlüssel erzeugt. - Kopieren des öffentlichen Schlüssels:
$HOME/.ssh/identity.pub enthält den Public Key für die Authentisierung. Den Inhalt diese Files sollte man an das File $HOME/.ssh/authorized_keys auf allen Maschinen anhängen, auf die man sich einloggen will. Wenn alle Maschinen ein NFS-Home verwenden, dann ist das denkbar einfach:
cp ~/.ssh/identity.pub ~/.ssh/authorized_keys
Ansonsten kann das mit einem Editor geschehen.
Allen Keys, die in $HOME/.ssh/authorized_keys stehen ist der Zugriff auf diesen Account erlaubt. - Für verschiedene Accounts sollte man verschiedene Keys verwenden.
- Dann kann man sich mit ssh rechner oder slogin rechner in den Rechner einloggen. Es wird nach der Passphrase gefragt.
- Wenn man sich oft in ein System einloggt, dann ist die Paßwortabfrage lästig. Abhilfe
schafft der ssh-agent, der sich die Paßwörter merkt. Aufruf ist:
ssh-agent $SHELL
oder
ssh-agent startx &
Dann kann man mit ssh-add einen Key hinzufügen und muß diesen dann solange nicht mehr eingeben, bis man ssh-agent beendet. - ssh kann man als erweiterten Ersatz für rsh verwenden:
ssh rechner who
ssh -n rechner xterm &
(Das letzte Beispiel funktioniert so ohne weiteres mit rsh nicht!) - scp ersetzt rcp.
- Die Paßwortabfrage kann man verhindern, indem man in ~/.shosts die beteiligten Rechner analog zu ~/.rhosts einträgt. Die Datei ~/.rhosts sollte man dann zur Sicherheit löschen.
- Mail kann man mittels POP3 und fetchmail verschlüssselt (und komprimiert!) übertragen,
indem man folgende ~/.fetchmailrc verwendet:
poll mailrechner via localhost port 1234 with protocol pop3 fetchall limit 12000 preconnect "ssh -C -o 'CompressionLevel 9' -f -L 1234:mailrechner:110 mailrechner sleep 20 /dev/null";
System-Installation von sshd:
- Als Root den Host-Schlüssel erzeugen:
ssh-keygen -f /etc/ssh_host_key
Bei der Frage nach der Passphrase nur Enter drücken. Wenn eine Passphrase angegeben wird, dann startet sshd nicht! - In /etc/rc.config START_SSHD=yes eintragen und SuSEconfig starten.
- Bei der SSH-Installation der SuSE 6.0 habe ich in /etc/sshd_config noch dieses
geändert:
IgnoreRhosts no
RhostsAuthentication yes
RhostsRSAAuthentication yes
PasswordAuthentication yes
Tips zur Benutzung:
- Wenn irgendetwas nicht klappt, dann sollte man es mit der Option "-v" probieren.
- Mit der Option "-C" werden Daten komprimiert übertragen.
- Wenn so eine Fehlermeldung mit -v kommt:
hphalle3: Trying rhosts or /etc/hosts.equiv with RSA host authentication. hphalle3: Remote: Accepted by .rhosts. hphalle3: Remote: Your host key cannot be verified: unknown or invalid host key. hphalle3: Remote: The host name used to check the key was 'hphalle3.informatik.tu-muenchen.de'. hphalle3: Remote: Try logging back from the server machine with the canonical host name using ssh, and then try again. hphalle3: Server refused our rhosts authentication or host key.
dann einfach Paßwort eingeben und sich zurückloggen:
ssh -v hphalle3.informatik.tu-muenchen.de
und solange "im Kreis" loggen, bis keine Paßwortfrage mehr kommt. - Man kann auch über einen Rechner zu einem anderen tunneln.
Mit folgendem Aufruf entsteht ein Tunnel vom lokalen Port 1300 zum Port 8009 des Rechners
wwwcache, wobei aber die SSH-Verbindung zu dem Rechner hp3 geht. Man braucht dazu auf
wwwcache keinen Login besitzen!
ssh -C -L 1300:wwwcache:8009 hp3 sleep 1000 /dev/null
Wenn man jetzt den lokalen Squid oder WWWOffle noch so konfiguriert:
cache_host localhost parent 1300 7
und in /etc/inetd.conf den UDP-Echo-Dienst freischaltet:
echo dgram udp wait root internal
dann erhaelt man eine komprimierte Verbindung zu wwwcache und kann lokal wie gewohnt über Squid darauf zugreifen.
Der Trick mit dem UDP-Echo ist notwendig, weil Squid per ICP einen anderen Squid kontaktieren will. Jedoch wird von der SSH nur TCP getunnelt und ICP ist aber ein UDP-basiertes Protokoll.
Für WWWOffle ist der Umstand mit dem UDP-Echo nicht nötig.
Faxen
Zum Faxen braucht man ein PostScript-File.
Einen ASCII-Text kann man nach PS wandeln mit:
a2ps -nP -1 -p -F15 -ns -nL ascii.txt > fax.ps
oder:
cat fax.test | pbmtext | pbm2g3 > fax.g3
PS nach FAX:
gs -q -dSAFER -dNOPAUSE -sDEVICE=faxg3 -sOutputFile=fax.%d.g3 input.ps -c quit
Es geht auch komfortabler mit ps2fax.
Abgesendet werden die G3-Files dann mit:
faxspool NUMMER FILES
Die Fax-Queue kann man mit faxq anzeigen lassen.
Die Umkehrung von G3 in ein darstellbares Bild geht mit:
g32pbm fax.1.g3 > fax.pbm
Root sollte irgendwann die Queue mit faxrunq absenden.
MGetty
In Makefile muß man
ECHO="echo"
in
ECHO="/bin/echo"
umändern. und "-DAUTO_PPP" zusätzlich bei den Defines angeben. Dann:
cp policy.h-dist policy.h
make testdisk
make
make install
Dann trägt man in /usr/local/etc/mgetty+sendfax/faxheader seinen Faxkopf
ein. In /usr/local/etc/mgetty+sendfax/mgetty.config habe ich folgendes geändert:
fax-id 49 8142 7257
speed 115200
# Speziell für Creatix LC144VF:
# init-chat "" \d\d\d\d\d\d+++\d\d\dATE1Q0V1 OK ATS0=0&D3&K3 OK
# switchbd 19200
# Speziell für US Robotics Message Modem:
init-chat "" ATZ OK ATE1Q0V1 OK ATS0=0&D3 OK
und in /usr/local/etc/mgetty+sendfax/sendfax.config habe ich folgendes
geändert:
fax-devices modem
fax-id 49 8142 7257
dial-prefix ATDT
# Speziell für Creatix LC144VF:
# modem-handshake AT&K3
und in /usr/local/etc/mgetty+sendfax/login.config habe ich folgendes
geändert, um PPP ohne vorheriges Login zu ermöglichen:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug
Zu letzterem braucht man noch diesen Eintrag in /etc/pap-secrets:
* * ""
und der anrufende Client braucht eine eigene IP-Adresse. Man kann auch so ein feste
IP-Adresse vergeben:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth :192.168.1.99 -chap +pap login debug
VGetty als Anrufbeantworter
Vgetty ist im mgetty
-Paket dabei. Zum Kompilieren wechselt man ins Unterverzeichnis voice und:
make
make install
cp voice.conf-dist /usr/local/etc/mgetty+sendfax/voice.conf
Wichtig: VGetty liest auch die Datei /usr/local/etc/mgetty+sendfax/mgetty.config
ein und benutzt davon zum Beispiel die Option init-chat. In /usr/local/etc/mgetty+sendfax/voice.conf
habe ich dann folgendes geändert:
port_speed 115200
rings 2
dtmf_program /usr/local/bin/dtmf.sh
voice_devices modem
VGetty wird einfach anstelle von megtty in initab eingetragen:
mo:123:respawn:/usr/local/sbin/vgetty modem
Dann kann man eine Ansage einrichten:
voctopvf file.voc | pvftormd Rockwell 4 > /var/spool/voice/message/standard.rmd
oder
voctopvf file.voc | pvftormd US_Robotics 1 > /var/spool/voice/message/standard.rmd
Wiedergeben kann man eingegangene Anrufe in /var/spool/voice/incoming über das Modem:
vm play -s filename.rmd
oder über die Soundkarte:
rmdtopvf filename.rmd | pvfspeed -s 8000 | pvftobasic > /dev/audio
VGetty kann auch DTMF erkennen und danach Aktionen auslösen.
CVS
Kurzanleitung (sehr kurz) zu CVS. Ausführliche Beschreibung: XEmacs C-h i g cvs.
Das CVS-Repository erstellt man mit:
cvs -d /usr/src/cvsroot init
Dann setzt man die Environmentvariable:
export CVSROOT=/usr/src/cvsroot
Dann ein Projekt-Verzeichnis anlegen mit Files und evtl. Unterverzeichnissen darin:
md projekt
cvs import -m "Anfang des Projekts" projekt loescher start
Dann kann man z.B. in ein anderes Verzeichnis wechseln (/tmp) und
cvs checkout projekt
cd projekt
Dann kann man drin Files verändern und wieder einchecken:
cvs commit file.pl
LaTeX2HTML (Version 96.1 (Feb 5, 1996)
LaTeX2HTML konvertiert LaTeX-Dokumente nach HTML. Ich verwende diese alte Version, weil
die aktuelle bei mir nicht funktioniert. Eine sehr gute Alternative ist tth.
Installation:
- Alle Dateien nach /usr/local/lib/latex2html/ kopieren.
- cd /usr/local/lib/latex2html/
- ./install-test
- export TEXINPUTS=$TEXINPUTS:/usr/local/lib/latex2html/texinputs
Aufruf:
latex2html -address 'Stephan
Löscher, 16 Jun 1998' file.tex
cd file
perl -pi -e 's(http://cbl.leeds.ac.uk/nikos/figs/)()g;' *.html
Und folgende Icons muß man noch kopieren:
contents_motif.gif next_motif.gif up_motif.gif next_motif_gr.gif up_motif_gr.gif
previous_motif.gif previous_motif_gr.gif
So habe ich meine Jokes-LaTeX-Dateien
umgewandelt:
md /tmp/jokes
cd /tmp/jokes
cp /home/loescher/TeX/jokes/* .
for i in *.tex ; do latex2html -no_navigation -address \
'Stephan
Löscher,\
20 Nov 1998' -info '' $i; done
/bin/rm `find | grep -v 'html\|gif'` `find -size 0`
Wenn man die Stylesheets nicht benötigt, dann sollte man aus den HTML-Files die
Zeilen mit den Links auf die CSS-Files löschen.
Ghostscript (Version 5.03)
Ghostscript Installation:
cd /usr/src/gs5.03
ln -s unixansi.mak makefile
unzip jpeg-6a.zip
unzip lpng096.zip
tar -zxvf zlib-1.0.4.tar.gz
mv JPEG-6A jpeg-6a
mv libpng-0.96 libpng
mv zlib-1.0.4 zlib
cd jpeg-6a ; lowercase * ; cd ..
cd libpng ; lowercase * ; cd ..
make
Für den Canon BJC-610 und 620 sollte man unbedingt den bjc620-Patch
vor dem "make" einspielen. (Vielen Dank für den Patch an Gernot Zander,
hifi@scorpio.in-berlin.de)
X-Mame
Der MultiArcade Machine Emulator (MAME) sucht seine CHEAT.DAT in dem Verzeichnis, das in ~/xmame/xmamerc als mamedir angegeben ist.
Netscape
Nach dem Auspacken des Navigators installiert man Netscape wie folgt:
md /opt/netscape
md -p /opt/netscape/java/classes
mv *.nif /opt/netscape
mv *.jar /opt/netscape/java/classes
cd /opt/netscape
for i in *.nif; do gzip -cd $i | tar -xvf -i; done
rm *.nif
Wenn man kein Motif hat, dann: rm netscape-dynMotif
In /etc/profile.local trägt man dann noch das ein:
export MOZILLA_HOME=/opt/netscape
WindowMaker
Wenn man die Fensterumschaltung mit Alt-Tab wie unter MS-Windows will, dann muß man
vor dem Kompilieren in src/wconfig.h.in das einstellen:
#define WEENDOZE_CYCLE
Und in ~/GNUstep/Defaults/WindowMaker diese Zeile hinzufügen:
WindozeCycling = YES
GCC (ehem. EGCS)
md /usr/src/gcc-obj
cd /usr/src/gcc-obj
/usr/src/gcc-2.95.1/configure --prefix=/opt/gcc
make bootstrap-lean
make install
Empfehlenswerte Optionen auf einem Pentium sind:
-O3 -fstrict-aliasing -ffast-math -funroll-loops -march=pentium -fschedule-insns2
SANE
Man braucht auf jeden Fall SANE. Sehr zu
empfehlen ist auch XSANE.
Beide Pakete werden so installiert:
./configure
make
make install
Man kann dann xscanimage sofort benutzen.
xsane muß (zumindest ich) so aufrufen:
LD_LIBRARY_PATH=/usr/local/lib/sane xsane
Wenn man xsane als Gimp-Plugin verwenden will, dann ist
noch das nötig:
ln -s /usr/local/bin/xsane /usr/local/lib/gimp/1.0/plug-ins/xsane
Libraries
GGI-Lib installieren
cd ggi-devel-990111/degas/lib/libgii
./configure
make
make install
cd ggi-devel-990111/degas/lib/libggi
./configure
make
make install
ldconfig
MESA-Lib installieren
make linux-386-elf
cp -r include/* /usr/local/include
chmod 444 /usr/local/include/GL/*
cp -d lib/* /usr/local/lib
ldconfig
Emulatoren
Es gibt für Linux viele Emulatoren für alle mögliche Systeme. Es lohnt sich also ein Blick in einen SunSite-Mirror unter "sunsite.unc.edu/system/Emulators".
DOSEMU
Dosemu bildet alle PC-Ressourcen auf Linux ab und ist damit nur auf Intel-Maschinen
benutzbar aber dafür auch sehr schnell.
Zur Installation im Source-Verzeichnis:
./configure ; make ; make install
Unter DOS: sys a: und auch fdisk.exe und sys.com auf eine
Disk kopieren. Dann "dos -A" und mit fdisk in c: den Bootsektor
schreiben und "sys c:".
Um vom Dosemu aus den XEmacs als Editor benutzen zu können verwende ich emuedit.
Wine
Wine setzt alle Windows-Systemaufrufe in X11-Aufrufe um und erreicht damit eine
erstaunliche Geschwindigkeit.
Installation von Hand:
cp server/wineserver /usr/local/bin/wineserver
cp windows/x11drv/wineclipsrv /usr/local/bin/wineclipsrv
cp wine /usr/local/bin/wine
cp loader/dos/dosmod /usr/local/bin/dosmod
cd documentation
cp wine.man /usr/local/man/man1/wine.1
cp wine.conf.man /usr/local/man/man5/wine.conf.5
Für einen Fehlerreport startet man ein Programm so:
wine -debugmsg +relay xyz.exe >& /tmp/wine.debug
und postet die letzten Zeilen mit "Call" und "Return" nach comp.emulators.ms-windows.wine.
Bochs
Bochs setzt keine Systemaufrufe um wie Dosemu oder Wine, sondern emuliert einen
x86-Prozessor samt Bios und anderer Hardware. Das hat den Vorteil, daß eigentlich jede
Software damit funktioniert und auch Bochs nicht auf Intel-Hardware angewiesen ist, aber
dafür ist Bochs auch deutlich langsamer als Dosemu oder Wine.
Konfiguration von Bochs:
- Harddisk-Image erstellen:
dd if=/dev/zero of=BochsHDD bs=512 count=229500 - BootFloppy-Image erstellen: (Mit format, sys und fdisk!)
dd if=/dev/fd0 ibs=512 of=BootDisk - Booten:
bochs -bootA
fdisk - Nochmal Booten:
bochs -bootA
formatieren, wenn es fdisk noch nicht gemacht hat:
format /u /s c:
sys c: - Dann per loop-Device
mounten oder per MTools ansprechen und gewünschte Software daraufkopieren. Bsp.:
Win95: Alle Files von der CD nach c:\inst, dann in dieses Verzeichnis gehen und:
setup /C /im /id /is /iq /in
System-Konfiguration
Kernel-Einstellungen
Das sollte man unbedingt einschalten:
General setup:
- Networking support
- System V IPC
Networking options:
- TCP/IP networking
- IP: Drop source routed frames
- IP: Allow large windows (not recommended if <16Mb of memory)
(sonst alles aus!)
Network device support:
- Network device support
- Dummy net driver support (M)
- PPP (point-to-point) support (M)
(sonst alles aus!)
Character Devices:
- Advanced Power Management BIOS Support und "Power off on shutdown" wenn man
will, daß sich der Rechner beim HALT ausschaltet.
Sound:
[*] Generic OPL2/OPL3 FM synthesizer support
[*] Support for MAD16 and/or Mozart based cards
[*] /dev/dsp and /dev/audio support
[*] MIDI interface support (Aber nur wenn man MIDI auch einsetzt!)
[*] FM synthesizer (YM3812/OPL-3) support
(530) MAD16 audio I/O base 530, 604, E80 or F40
(7) MAD16 audio IRQ 7, 9, 10 or 11
(3) MAD16 audio DMA 0, 1 or 3
(0) MAD16 second (duplex) DMA 0, 1 or 3
(0) MAD16 MIDI I/O base 300, 310, 320 or 330 (0 disables)
(9) MAD16 MIDI IRQ 5, 7, 9 or 10
(65536) Audio DMA buffer size 4096, 16384, 32768 or 65536
(sonst alles aus)
Bootvorgang / Programme starten
Wenn man eigene Programme und Dienste beim Systemstart automatisch starten will, dann
sollte man erst wissen, wie das System bootet: Es werden vom init-Prozeß den Runlevels
entsprechend die Files /sbin/init.d/boot, /sbin/init.d/boot.local und dann alle
Files die mit "S" beginnen in /sbin/init.d/rc2.d gestartet.
Hier erkennt man auch, daß es falsch wäre in /sbin/init.d/boot.local z.B. den squid
zu starten, denn es fehlen ja noch wichtige Systemdienste, wie z.B. syslog.
Deshalb ist es ratsam in /sbin/init.d/rc2.d dafür folgende Links anzulegen:
ln -s ../local.setup S90local
ln -s ../local.setup K90local
und das File /sbin/init.d/local.setup,
in dem dann alle gewünschten Programme am Ende des Bootvorgangs gestartet werden.
Netzwerk-Konfiguration, die auch für Rechner notwendig ist, die keine Netzverbindung haben
Empfehlenswert ist das Buch "TCP/IP
Network Administration" aus dem O'Reilly-Verlag
Auch Rechner ohne Netzverbindung oder mit einer zeitweisen Netzverbindung, wie etwa durch PPP brauchen eine
korrekte Netzkonfiguration.
- Rechnernamen einstellen mit:
hostname name
Dabei ist name der unqualifizierte Hostname, also z.B. "sl" statt "sl.sl.de".
Je nach Konfiguration sollte man eventuell auch in /etc/HOSTNAME diesen Namen eintragen.
Wenn man keinen offiziellen Domain-Namen hat, dann sollte man einen verwenden, der im Internet nicht vorkommt oder im RFC 2606 definiert ist. Das wären die Domains .test, .example, .invalid und .localhost. Desweiteren gibt es sicher keine zweistelligen .de-Second-Level-Domains, also z.B. sl.de - Alle Rechnernamen, die nicht per DNS oder NIS aufgelöst werden müssen in /etc/hosts
eingetragen werden. Wenn man kein DNS oder NIS verwendet, dann müssen alle Rechner hier
eingetragen werden. Erforderlich sind mindestens folgende Einträge:
127.0.0.1 localhost
172.16.0.135 sl.sl.de sl.de sl www.sl.de
Genaueres zur Namensauflösung und DNS siehe weiter unten. - Netzkonfiguration mit YAST
In /etc/rc.config:
NAMESERVER="127.0.0.1 131.159.0.176 131.159.4.1"
(Fürs LRZ: 127.0.0.1 129.187.10.25 129.187.16.1)
SEARCHLIST="sl.de informatik.tu-muenchen.de"
FQHOSTNAME=sl.sl.de
CHECK_ETC_HOSTS=no
Mit SuSEconfig wird dann automatisch /etc/host.conf und /etc/resolv.conf erstellt.
- Konfiguration des Loopback-Interface (Bei SuSE 6.0 passiert das automatisch):
ifconfig lo 127.0.0.1
Es sollte ifconfig (ohne Parameter) soetwas anzeigen:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:409 errors:0 dropped:0 overruns:0
TX packets:409 errors:0 dropped:0 overruns:0
- Routen-Eintrag erstellen für das Loopback-Interface (Bei SuSE 6.0 passiert das
automatisch):
route add 127.0.0.1
route -n sollte unter anderem eine solche Zeile ausgeben:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 lo
- Jetzt kann man das Loopback bereits testen:
ping localhost
und
telnet localhost
sollte funktionieren. - Für spätere PPP-Verbindungen haben wir in /etc/hosts ja bereits 172.16.0.135
eingetragen. Wenn aber keine Verbindung besteht, dann kann zu dieser Adresse keine
Verbindung aufgebaut werden, obwohl es ja der eigene Rechner ist. Abhilfe schafft das
"Dummy Interface", das man wie folgt konfiguriert:
ifconfig dummy0 sl
route add sl
Bei SuSE 6.0 reichen diese Einträge in /etc/rc.config:
NETCONFIG="_0"
IPADDR_0="172.16.0.135"
Es sollte ifconfig (ohne Parameter) soetwas anzeigen:
dummy0 Link encap:10Mbps Ethernet HWaddr 00:00:00:00:00:00
inet addr:172.16.0.135 Bcast:172.16.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
- Namensauflösungen mit dem Domain Name Service (DNS).
Beste Literatur dazu ist "DNS and BIND" aus dem O'Reilly-Verlag.
Laut Dokumentation sollte der Resolver auch ohne named funktionieren, indem man die nötigen Rechner in /etc/hosts einträgt und /etc/resolv.conf löscht. Das funktioniert aber bei mir nicht. (Ein "host localhost" ergibt bei mir nur "Host not found, try again.".) Auch egal.
Die bessere Lösung ist ein DNS mit named als "caching-only-server", weil damit erstens lokale Anfragen funktionieren (*grins*) und zweitens keine /etc/hosts gepflegt werden müssen und Nameserver-Anfragen bei PPP-Verbindungen nur einmal über die Leitung gehen und dann in Zukunft lokal beantwortet werden.
Man braucht folgende Files:
/etc/named.boot
/var/named/named.local
/var/named/named.hosts
Das habe ich nicht verändert:
/var/named/root.cache
und startet dann /usr/sbin/named.
Sollte der named nicht starten oder nur Fehlermeldungen bringen, dann ist wahrscheinlich das dummy0-Device nicht konfiguriert. (Siehe oben.)
Interessante Möglichkeit:
Man kann sich den aktuellen Cache mit dem Kommando ndc dumpdb in das File /var/tmp/named_dump.db schreiben lassen. Wenn man aus dieser Datei die SOA-Records entfernt, dann kann man beim nächsten Start diese Daten dem named als root.cache verfüttern.
Drucker-Konfiguration (ohne apsfilter oder magicfilter)
mkdir /var/spool/lpd /var/spool/lpd/myprinter
chown lp.lp /var/spool/lpd /var/spool/lpd/myprinter
chmod ug=rwx,o=rx /var/spool/lpd /var/spool/lpd/myprinter
cd /var/spool/lpd/myprinter
touch .seq errs status lock
chown lp.lp .seq errs status lock
chmod ug=rw,o=r .seq errs status lock
Files:
Die Datei /etc/printcap
(sollte "-rw-r-r-" sein.) ist selbsterklärend. (Es gibt allerdings
Zeitgenossen, die alles in eine Zeile ohne Kommentare schreiben... tja...) Damit wird die
Verbindung von Druckername und Filter hergestellt.
Ein Filter nimmt den Standard-Input, führt eine Aktion aus und gibt das Resultat auf
Standard-Ausgabe aus. Ein Filter, der Postscript entgegen nimmt und für einen BJC-600
aufbereitet sieht so aus:
#!/bin/sh
/usr/bin/gs -q -dSAFER -dNOPAUSE -r360x360 -sDEVICE=bjc600 -sPAPERSIZE=a4 -sOutputFile=- -
Zu beachten ist noch, daß der Filter die richtigen Ausführungsrechte hat.
Bei mir: "-rwxr-xr-x root.root".
Erster Versuch:
lpd
ls -l | lpr -Pmyprinter
Wenn das klappt, dann sollte man den "lpd" beim Systemstart starten lassen.
INETD-Konfiguration
In /etc/services stehen die Dienste, die der Rechner zur Verfügung stellt
inklusive der Portnummern. In /etc/inetd.conf steht dann welches Programm der inetd
starten soll, wenn jemand an einem bestimmten Port ankommt. Änderungen werden durch
Neustart des inetd wirksam: kill -HUP pid
Beispiel:
/etc/services:
fortune 7777
/etc/inetd.conf:
fortune stream tcp nowait nobody /usr/bin/fortune
Und dann:
telnet localhost 7777
(Sollte prinzipiell funktionieren.)
Tastatur (Delete und Backspace)
Mit dem nachfolgenden funktionieren Backspace und Delete wie erwartet in allen (!)
Applikationen, sowohl auf der Console, als auch im XTerm und auch mit Motif-Applikationen.
Wenn jemand ein Gegenbeispiel findet, dann möge er sich bei mir melden!
Zum Testen der Einstellungen eignen sich:
- xmodmap -pke
- xev
- showkey
- xkeycaps (Damit kann man auch ändern!)
Einstellungen in folgenden Files:
/usr/local/bin/localkeydefinitions
(In /sbin/init.d/local.setup starten)
~/.inputrc (Das
ist ab SuSE 5.1 nicht mehr nötig.)
~/.Xdefaults
(Müssen natürlich auch geladen werden: xrdb -merge ~/.Xdefaults)
Für SuSE 6.0 lade ich zu der Standard-.Xdefaults noch meine ~/.Xdefaults.private
~/.Xmodmap
(Starten mit: xmodmap ~/.Xmodmap)
Für SuSE 6.0 verwende ich diese ~/.Xmodmap
Weitere
Informationen
Umfassende Informationen
Benutzer-Einstellungen (Shell, X11)
Als normaler Benutzer verwende ich für den Systemstart folgende Dateien:
~/.Xresources
~/.bashrc
~/.profile
~/.xinitrc
~/.xserverrc
~/.xsession
FVWM2
In /usr/X11R6/lib/X11/fvwm2/.fvwm2rc stehen die Standard-Einstellungen. Wenn aber ein ~/.fvwm2rc existiert, dann wird dieses verwendet.
HTTPD / WWW-Server konfigurieren
- Wenn man den vorinstallierten Apache (httpd) der SuSE 4.4, dann ist das
WWW-Verzeichnis in: /httpd/ Was ist noch zu tun?
- In /httpd/conf/httpd.conf unter "ServerAdmin" die Webmaster-EMail eintragen und unter "ServerName" einfach "www.sl.de" eintragen (Natürlich muß es den Hostnamen geben).
- In /etc/rc.config "START_HTTPD=yes" eintragen und SuSEconfig starten.
Alle WWW-Dokumente sollen nach /httpd/htdocs gelegt werden.
Benutzer können eigene Homepages in ~/public_html/ anlegen. - Man kann auch einen neuen Apache installieren. Mit
./configure --prefix=/opt/apache
wird angegeben, daß Apache nach /opt/apache installiert werden soll.
Dann ändert man in /opt/apache/etc/httpd.conf dieses:
Port 80
ServerName www.sl.de
In /opt/apache/etc/access.conf trägt man dieses ein:
Wenn man den Benutzern Zugriffskontrolle mittels .htaccess-Dateien erlauben will, dann muß man noch aus AllowOverride None ein AllowOverride All machen. und in /opt/apache/etc/srm.conf trägt man dieses ein:
DocumentRoot "/httpd/htdocs"
ScriptAlias /cgi-bin/ "/httpd/cgi-bin/
Zu guter Letzt muß der Apache noch beim Hochfahren gestartet werden. Das passiert mit einem Eintrag in /sbin/init.d/local.setup .
Der Rest des unter dem ersten Unterpunkt gesagten trifft dann auch hier zu. - Zugriffskontrolle mittels .htaccess-Dateien:
Man erstellt in dem Verzeichnis, das geschützt werden soll eine Datei .htaccess:
AuthType Basic
AuthName Hochgeheime_Daten
AuthUserFile /home/loescher/.htpasswd
AuthGroupFile /home/loescher/.htgroups
require group zugriffsgruppe
und die Datei /home/loescher/.htgroups:
zugriffsgruppe: loescher
Dann vergibt man für den Benutzer "loescher" ein Paßwort:
/opt/apache/bin/htpasswd -c ~/.htpasswd loescher
WWW-Cache: Squid (squid-1.1.21)
Gründe für einen lokalen WWW-Cache:
- Alle WWW-Clients und alle Benutzer können einen Cache nutzen.
- Mit WGet macht es erst richtig Spaß!
- Man kann offline in Ruhe im WWW "surfen".
Bemerkung: Mit Squid ab Version 2 funktioniert die Offline-Funktion nicht mehr. Deshalb
rate ich für diesen Zweck zu WWWOffle.
Einrichtung:
./configure --prefix=/usr/local/squid
make all
make install
Dann kann man /usr/local/squid/etc/squid.conf
bei Bedarf ändern. Es muß auch noch ein User für squid und WWW-Dienste eingerichtet
werden (bei mir User "www" in der Gruppe "infosys") und ein
Zuständiger für den Cache (bei mir webmaster).
Schließlich wird Squid gestartet:
/usr/local/squid/bin/squid -s -D &
Wenn man eine Internet-Anbindung über einen Provider mit Firewall nutzt (das wird wohl
immer so sein), dann muß man Squid so einstellen, daß alle Anfragen von dem WWW-Proxy
des Providers geholt werden.
Ich habe folgende Änderungen an meiner /usr/local/squid/etc/squid.conf
vorgenommen:
cache_host wwwcache.informatik.tu-muenchen.de parent 8009 3130
cache_host atrbg17.informatik.tu-muenchen.de parent 3128 3130
cache_host proxy.lrz-muenchen.de parent 8080 3130
inside_firewall none
local_domain sl.de
local_ip 172.16.0.0
neighbor_timeout 10
ftpget_program /usr/local/squid/bin/ftpget
reference_age 0
cache_mgr webmaster
cache_effective_user www infosys
refresh_pattern . 0 100 525600
negative_dns_ttl 0
Man kann auch eine WWW-Kompression
mit der Secure Shell erreichen.
Die Refresh-Age-Einstellung bewirkt, daß erst Daten aus dem Cache entfernt werden, wenn
das Plattenplatz-Limit erreicht ist.
Das Refresh-Pattern besagt, daß Daten ein Jahr im Cache liegen bleiben können. Der
Zeitraum ist aus praktischen Gründen so lang gewählt. Wenn man sich ansieht, wie alt neu
empfange Objekte sind, dann kommt man zu dieser langen Einstellung. Der Zeitstempel
"Modified" gibt an, wann das Object (auf dem Server) geändert wurde und das
kann schon sehr lange zurückliegen. Zum Beispiel ist meine Home-Page auch schon ca. 1
Monat alt und würde vom Squid in der Standard-Einstellung sehr bald (ca. alle 5 Tage) neu
geladen werden:
180. http://192.168.30.254/books_online/tips/ Verified 1W ago, Used 1W ago, Modified 1M ago, Expires NEVER, 3604 bytes, 0 accesses, 0 active clients, STORE_OK, NOT_IN_MEMORY, SWAP_OK, PING_NONE, 0 Locks, Flags: EC,KU,HT
Mit dieser Einstellung kann man jetzt bestens offline WWW-Surfen.
Aber keine Angst: Der Squid prüft sehr wohl, ob seine Objekte noch "frisch"
sind wenn er online ist!
Als Proxy müssen jetzt alle WWW-Clients localhost:3128 verwenden und am besten
als "No-Proxy" den lokalen Rechner eingetragen haben.
Für Lynx muß man in /usr/lib/lynx.cfg diese Zeile eintragen:
http_proxy:http://localhost:3128/
Für die nette Zusatzfunktion "Cache-Manager" kann man man noch /usr/local/squid/bin/cachemgr.cgi
nach /httpd/cgi-bin/cachemgr.cgi kopieren und sich dann per http://localhost/cgi-bin/cachemgr.cgi
mit Squid "unterhalten". (Für sensible Daten sollte man aber in squid.conf
Paßwörter vergeben.)
WWW-Cache: WWWOffle
Gründe für einen lokalen WWW-Cache:
- Alle WWW-Clients und alle Benutzer können einen Cache nutzen.
- Mit WGet macht es erst richtig Spaß!
- Man kann offline in Ruhe im WWW "surfen".
Bemerkung: Wenn der Rechner immer online ist, dann empfehle ich Squid.
Zur Einrichtung braucht man nur diese Zeilen in /etc/wwwoffle/wwwoffle.conf
ändern:
# Bei Options:
connect-retry = yes
# Bei StartUp:
http-port = 3128
# Bei Proxy:
http://* = localhost:1300
ftp://* = localhost:1300
# Bei Purge:
max-size = 200
default = 365
Dabei ist der Proxy bereits auf einen komprimierten
SSH-Tunnel eingestellt.
Sendmail
Kurzfassung für SuSE 6.0 ohne SuSE-Automatik:
In /etc/rc.config: SENDMAIL_TYPE="no"
In /etc/mail/linux.mc:
FEATURE(`nodns')dnl
FEATURE(`nocanonify')dnl
define(`SMART_HOST', `mailrelay.informatik.tu-muenchen.de')dnl
MASQUERADE_AS(`informatik.tu-muenchen.de')dnl
FEATURE(`masquerade_envelope')dnl
und dann:
m4 /etc/mail/linux.mc > /etc/sendmail.cf
Kurzfassung für SuSE 6.0 mit SuSE-Automatik:
In /etc/rc.config:
SMTP="yes"
SENDMAIL_TYPE="yes"
SENDMAIL_SMARTHOST="mail.provider.de"
# oder für GMX: SENDMAIL_SMARTHOST="esmtp:mail.gmx.net"
SENDMAIL_LOCALHOST="localhost"
SENDMAIL_RELAY=""
SENDMAIL_ARGS="-bd -om"
SENDMAIL_EXPENSIVE="no"
SENDMAIL_NOCANONIFY="no"
# Absenderadresse soll der Domainname des Providers sein und nicht
# der des lokalen Rechners:
FROM_HEADER="gmx.de"
Die Sender-Zeile im Mailheader kann durch /etc/mail/genericstable
ausgetauscht werden:
loescher loescher@leo.org
Das muß man unbedingt verwenden, wenn man z.B. von "root" Mails über GMX
verschickt, da GMX keine Mails annimmt, die von "root" kommen. Das muß auf
einen User bei GMX gemappt werden:
root loescher@gmx.de
Abschließend immer SuSEconfig aufrufen.
Ausführliche Anleitung und Details für SuSE 4.4:
- Aliases richtet man in /etc/aliases ein:
Einträge sind in der Form:
kurzform: komplette_adresse
Beispiel:
loescher: loescher@leo.org
Aber nicht vergessen dann die Datenbank durch das Kommando newaliases (ohne Parameter) zu aktualisieren. - Wenn man lokale Benutzer-Mailadressen auf andere Adressen abbilden will, dann geht das
mit /etc/userdb:
loescher:mailname loescher@leo.org
loescher:mailsender loescher@leo.org
Aus diesen File wird dann die eigentliche Datenbank so generiert:
makemap btree /etc/userdb.db
und den Eintrag in /etc/sendmail.config/cf/sl.mc:
define(`confUSERDB_SPEC', /etc/userdb.db)dnl
Bei dem neuen Sendmail (SuSE 6.0) stellt man die Adreßumsetzung in /etc/mail/genericstable ein:
loescher loescher@leo.org - Wenn der Rechner, zu dem man die PPP-Verbindung aufbaut hinter einem Firewall liegt,
dann muß man für Sendmail einen SMART_HOST angeben, der die Mail durch den Firewall nach
draußen leitet. Das macht man durch einen Eintrag z.B. in die Datei /etc/sendmail.config/cf/sl.mc:
define(`SMART_HOST', name_deines_mail_hosts)dnl
- Wenn der eigene Rechner nur selten online ist, dann sollen Fehler-Mails, also Mails, die
nicht am Ziel angekommen sind zu einem Mailhost beim Provider zurücklaufen. Dafür ist
die "From_"-Zeile bzw. der Return-Path verantwortlich. Am besten verwendet man
Masquerading für "From:" und auch für den Envelope:
MASQUERADE_AS(informatik.tu-muenchen.de)dnl
FEATURE(masquerade_envelope)dnl
Sonst steht am Ende der "From_"-Zeile der eigene Rechner und alle Mails an falsche Adressen oder sonstige Fehler-Mails gehen verloren.
Anschließend muß man ein neues Konfigurationsfile erzeugen:
m4 /etc/sendmail.config/m4/cf.m4 /etc/sendmail.config/cf/sl.mc
> /etc/sendmail.cf
Wichtig ist dann natürlich, daß man dem SuSEconfig in /etc/rc.config
verbietet, die /etc/sendmail.cf zu erstellen: SENDMAIL_TYPE=no
Und nicht vergessen: Sendmail killen und neu starten! Sonst ändert sich nach den
Änderungen gar nichts:
killproc -TERM /usr/sbin/sendmail
/usr/sbin/sendmail -bd -q1m -om
Zum Testen der sendmail-Konfuguration eignen sich besonders die beiden Aufrufe:
sendmail -bv
und
sendmail -bt (Addess test)
Wem diese Info nicht reicht findet in der Sendmail-Dokumentation oder in dem
Buch "Sendmail"
aus dem O'Reilly-Verlag alles Wissenwerte.
Weitere Sendmail-Kurzanleitung (von Bernhard
Hailer).
Fetchmail
Mit Fetchmail kann z.B. von einem POP3-Account Mail abholen. Das geht mit folgender ~/.fetchmailrc:
poll mailhost.provider.de with protocol pop3 fetchall
Man kann damit Mail auch verschlüsselt und komprimiert über einen SSH-Tunnel laufen lassen.
News (INN)
Es gibt zu diesem Thema folgende Werke:
"Das Usenet
anzapfen" von Bernhard Hailer
Deutsches News HOWTO
Anleitung von Markus Dickebohm (hier gibt es
auch Newsflash)
Anleitung von
Christoph Kania
Anleitung
von Chris Blum
Anleitung von
Carsten Voss
Anleitung von Carsten
Voss (anderer WWW-Server)
Erweiterung von INN
um mehrere Newsserver
News unter Linux
Meine Anleitung:
- Mit Yast den INN installieren und dann SuSEconfig starten.
- Einen user "news" einrichten, wenn es ihn noch nicht gibt und alle Aktionen in /usr/lib/news als "news" durchführen.
- "START_INN=yes" in /etc/rc.config eintragen.
- Die Pfade im folgenden können abweichen.
Statt /usr/lib/news/ kann es auch /var/lib/news/ oder /etc/news/ sein. - Folgende Einträge in /usr/lib/news/inn.conf:
organization: SL.de (Private Linux-powered site)
server: localhost
fromhost: informatik.tu-muenchen.de
pathhost: loescher.modem.informatik.tu-muenchen.de
artcutoff: 30
Bemerkenswerterweise muß es tatsächlich "informatik.tu-muenchen.de" heißen und nicht "news.informatik.tu-muenchen.de"!
Mit artcutoff wird eingestellt, wie alt eingehende Artikel sein dürfen in Tagen.
- Das File /var/lib/news/active vom Newsserver abholen:
getlist active > /var/lib/news/active
Das File /var/lib/news/newsgroups vom Newsserver abholen:
getlist newsgroups > /var/lib/news/newsgroups
Wenn das so nicht klappt, dann per Telnet holen:
shell prompt> telnet nntpserv nntp >active
list active
quit
shell prompt> telnet nntpserv nntp >newsgroups
list newsgroups
quit
Danach muß man mit einem Editor noch die überflüssigen Zielen am Anfang und Ende wegschneiden und darauf achten, daß es die Gruppen "junk" und "control" gibt! - In /usr/lib/news/nnrp.access folgendes eintragen:
# Alle können lesen und Posten:
*:Read Post:::*
- Bei alten INNs muß man in /usr/lib/news/hosts.nntp folgendes eintragen:
localhost:
news.informatik.tu-muenchen.de: - In /usr/lib/news/newsfeeds
folgendes eintragen:
ME:*::
OVERVIEW!:*:Tc,WO:/usr/lib/news/bin/overchan
tumnews/informatik.tu-muenchen.de:*,!junk,!control*:Ap,Tf,Wnm:tumnews
Wenn man noch einen zweiten Newsserver benutzen will, dann sieht die letzte Zeile so aus:
tumnews/informatik.tu-muenchen.de,lrz-muenchen.de:*,!junk,!control*:Ap,Tf,Wnm:tumnews - In /usr/lib/news/expire.ctl kann man die Expire-Einstellungen ändern, wenn man will.
- Kommando "/usr/lib/news/bin/makehistory -o" ausführen.
- Inn starten: /sbin/init.d/inn start
- Erster Test bei dem sich der Inn melden sollte: telnet localhost nntp
- Inn beenden: /sbin/init.d/inn stop
- Wenn irgendetwas jetzt nicht funktioniert, dann sollte man als User "news" den /usr/lib/news/bin/inncheck starten und alle Fehler ausbessern.
- Die "From: "-Zeile muß man in jedem Newsreader einstellen und nicht im
Newsserver.
Beim Tin geht das in ~/.tin/tinrc mit der Zeile:
default_mail_address=loescher@leo.org
Beim XRN geht das mit Environmentvariablen:
export HIDDENHOST=leo.org
export HIDDENPATH=leo.org
- Wenn man neue Newsgruppen hinzufügen will, dann geht das so:
ctlinnd pause REASON
ctlinnd newgroup stardivision.de.chat
ctlinnd go REASON
- Eine moderierte Newsgruppe fügt man so hinzu:
In /etc/news/moderators dieses eintragen:
# Moderated German Groups
de.*:%s@moderators.dana.de
Und dann die Gruppe anlegen:
ctlinnd pause REASON
ctlinnd newgroup de.comp.os.unix.linux.moderated m
ctlinnd go REASON
oder man kann es auch nachträglich ändern:
ctlinnd changegroup de.comp.os.unix.linux.moderated m
- Die News-Batchfiles, die uqwk erzeugt (snews.zip) kann man mit rnews in den INN füttern. Ich verwende dazu simport (Dazu braucht man noch fixuqwkbatch).
- Wenn man keinen Shell-Account und damit keinen uqwk hat, dann kann man "suck"
verwenden. Dazu braucht man nur folgendes:
Einmalig das Verzeichnis erstellen: md /usr/lib/news/suck
und dann im PPP-ON-Sktipt:
ErstelleSuckNewsrc /usr/lib/news/suck `/bin/ls /home/*/.newsrc`
su - news -c getnews
- Absenden kann man die News mit postit:
postit -i -d news.informatik.tu-muenchen.de tumnews
Oder mit dessen Nachfolger newsx:
newsx --no-fetch --inn --verbose tumnews news.informatik.tu-muenchen.de
- Der beste Newsreader ist XEmacs mit Gnus. (Siehe dazu auch meine ~/.gnus)
- Die täglichen Wartungsarbeiten, wie z.B. ein expire werden durch das bei INN (bzw.
Distribution) mitgelieferte /usr/lib/news/bin/news.daily erledigt. Dazu legt am
Besten der User "news" eine ~/.crontab mit diesem Inhalt an:
SHELL=/bin/bash MAILTO=loescher PATH=/usr/lib/news/bin:/usr/lib/news:/bin:/usr/bin # news.daily jeden Tag um 18:30h laufen lassen 30 18 * * * /usr/lib/news/bin/news.daily
und übergibt diese crontab dann an cron mit dem Kommando: crontab ~/.crontab
- Wenn INN einen News-Batch nicht annimmt, weil man vergessen hat, vorher eine neue Newsgruppe anzulegen, so merkt sich der INN ja alle Message-IDs und man kann selbst nach Anlage der Newsgruppe die Artikel nicht einfüttern. Abhilfe: Man setzt remember in /etc/news/expire.ctl temporär auf 0 und läßt einen Expire laufen.
FTP
FTP für Benutzer funktioniert bereits.
Informationen gibt es per "man in.ftpd" oder "man wu.ftpd". Folgendes
ist einzustellen für Anonymous-FTP:
mkdir /home/ftp
chdir /home/ftp
mkdir bin etc lib pub
chmod 444 /home/ftp bin etc lib
chmod 775 /home/ftp/pub
cp /bin/ls /home/ftp/bin
cp /etc/passwd /etc/group /etc/ld.so.cache etc
# Dann löscht man aus der Paßwort- und Gruppendatei alles heraus,
# bis auf den User "ftp" und die Gruppe "users".
cd lib
cp /lib/ld-linux.so.1 /lib/libc.so.5.2.18 .
ln -s libc.so.5.2.18 libc.so.5
chmod 111 /home/ftp/bin/ls
chmod 444 /home/ftp/etc/*
chmod 555 /home/ftp/lib/*
Wenn man den wu.ftp verwendet, dann funktioneren auch Messages und der Banner, den
man in /etc/ftpaccess einstellen kann.
Welcher FTP-Dämon gestartet wird ist in /etc/inetd.conf eingetragen.
Fonts installieren
- Type1-Fonts
- Neue Fonts z.B. nach /usr/local/fonts/neu kopieren.
- Dann in diesem Verzeichnis "type1inst -samples" starten.
- In /etc/XF86Config
diese Zeile hinzufügen:
FontPath "/usr/local/fonts/neu/"
oder zum sofortigen Testen:
xset fp+ /usr/local/fonts/neu
xset fp rehash
- Für GhostScript:
Die neu erzeugte Datei Fontmap muß man mit einem Editor der systemweiten /usr/share/ghostscript/4.03/Fontmap hinzufügen und dann die Verzeichnisse bekanntmachen:
export GS_LIB=/usr/local/fonts/neu
Das muß sowohl systemweit erfolgen, als auch in einem Druckerfilter, der GhostScript direkt aufruft!
Also muß es in diesen Dateien geändert werden:
/etc/profile.local
/var/spool/lpd/myprinter/ps_filter
- True-Type-Fonts
- Für die Bilschirmanzeige benutzt man den True-Type-Fontserver "xfstt". Man
kopiert einfach TT-Fonts nach /usr/local/fonts/truetype und initialisiert den
Fontserver, wobei man gleich die "Fontmap" für Ghostscript erstellen lassen
kann:
xfstt --dir /usr/local/fonts/truetype --gslist --sync | perl -pe 's:/./:/:g;' > Fontmap
Mit der Fontmap und dem Font-Pfad für GhostScript verfährt man genauso wie bei Type1-Fonts (siehe oben.)
Starten (am besten in /etc/init.d/local.setup):
xfstt --dir /usr/local/fonts/truetype&
Hinzufügen des neuen "Fontpfads" in /etc/XF86Config:
FontPath "unix/:7100"
- Man kann die TTF-Fonts auch nach Type1-Fonts konvertieren (Das ist die einfachste
Möglichkeit, sie StarOffice zugänglich zu machen). Dazu braucht von Dieser Seite die Files ttf2pt1.tar.gz
und t1utils.tar.gz und auch noch afm.pl.
Für einen Font funktioniert die Umwandlung dann so:
ttf2pfa font.ttf font
afm.pl font.afm
mv font.afm.new font.afm
ttf2pt1 font.ttf font
t1asm -b font.pfa > font.pfb
rm font.pfa
Wenn man ein ganzes Verzeichnis konvertieren will, dann geht es so:
for i in *.ttf; do ttf2pfa $i `basename $i .ttf`; done
for i in *.afm; do afm.pl $i; /bin/mv $i.new $i; done
for i in *.ttf; do ttf2pt1 $i `basename $i .ttf`; done
for i in *.ttf; do ttf2pt1 $i `basename $i .ttf`; t1asm -b `basename $i .ttf`.pfa > `basename $i .ttf`.pfb; rm `basename $i .ttf`.pfa; done
Mit den so generierten Fonts funktioniert leider type1inst nicht.
- Wenn TrueType-Fonts keine Umlaute zeigen, dann sollte man diesen Font mit xfd
anschauen, um festzustellen, ob er wirklich Umlaute hat.
Wenn afmmaker.ps aus dem TrueType kein AFM (braucht man nur für StarOffice!) erstellen kann, dann ist der Font unbrauchbar. Die Benutzung von afmmaker.ps: Man trägt den Fontnamen hinter /fontname in afmmaker.ps ein und startet damit Ghostscript:
gs -sNODISPLAY -q -sBATCH afmmaker.ps -c quit > font.afm
- Für die Bilschirmanzeige benutzt man den True-Type-Fontserver "xfstt". Man
kopiert einfach TT-Fonts nach /usr/local/fonts/truetype und initialisiert den
Fontserver, wobei man gleich die "Fontmap" für Ghostscript erstellen lassen
kann:
NCR53c400a-SCSI-Karte verwenden
Die NCR53c400a-SCSI-Karte, die bei HP-Scannern, wie dem HP-ScanJet IIcx mitgeliefert
wird, wird nicht direkt von Linux unterstützt. Man braucht dazu erst den Patch 53c400a-patch-0.2.
(Eine neue, von mir nicht getestete Version gibt es hier)
Aber das reicht auch noch nicht, denn der 53c400a muß durch bestimmte IOs freigeschaltet
werden, bevor er vom normalen 53C400-Treiber erkannt wird. Das macht für Mustek-Karten
der Patch, bei HP gibt es den mitgelieferten DOS-ASPI-Treiber "mini400i.sys",
der das macht. Also muß man unbedingt vor dem Linux-Start unter DOS die Karte
initialisieren und dann per Loadlin Linux starten.
- Kernel 2.0.30 mit patchen mit 53c400a-patch-0.2:
cd /usr/src/linux
patch < 53c400a-patch-0.2
- Einstellungen:
- SCSI-Support (Modul)
- Generic SCSI-Support (Modul)
- Generic NCR5380/53C400 SCSI Support (Modul)
- Enable NCR53C400 extensions (built in) (yes)
- NCR5380/53C400 mapping method: Port
Der Treiber läßt sich nur als Modul laden!
- Unter DOS so Linux booten:
config.sys:
shell=c:\command.com c:\ /p
device=c:\hp\mini400i.sys
autoexec.bat:
c:\linux\loadlin.exe c:\linux\kernel ncr53c400a=0x280,-1 root=/dev/sdb1 ro
- modprobe g_NCR5380 ncr_addr=0x280 ncr_53c400a=1
- Bei neueren Karten kann es auch sein, daß man das Modul so laden muß:
modprobe g_NCR5380 ncr_addr=0x278 ncr_irq=255 ncr_53c400=1
Aber man sollte von der NCR-Karte nicht zuviel erwarten. Da sie keine Interrupts unterstützt wird Linux ziemlich unbenutzbar beim Scannen.
Zeitzone einstellen
Für Deutschland stellt man die Zeitzone CET oder MET ein.
Dazu erstellt man einen Link:
ln -s /usr/lib/zoneinfo/CET /usr/lib/zoneinfo/localtime
bzw. unter SuSe in /etc/rc.config:
TIMEZONE=CET
Desweiteren muß man in /etc/rc.config noch GMT="-u"
eintragen. Die Rechneruhr stellt man auf UTC (=GMT) ein.
CET ist eine Stunde nach UTC, also Zeitzone +0100.
Also setzt man zurerst die Uhr auf GMT, indem man (in Deutschland) eine Stunde von der
lokalen Zeit abzieht. Wenn es jetzt 18:00h ist, dann muß man die Uhr auf 17:00h stellen,
z.B.:
date -s '1997-10-30 17:00:00' +'%Y-%M-%d %T'
Dann die CMOS-Uhr auf die aktuelle Zeit (in GMT) setzen:
clock -w
Dann kann man per clock -us die GMT-Zeit der CMOS-Uhr in lokale Systemzeit setzen
lassen. Sommer-/Winterzeit-Umstellung sollte in Zukunft automatisch erfolgen.
Zum Stellen der Uhr unter Verwendung von anderen Rechnern kann man "netdate",
"ntpdate" oder "xntp" benutzen.
Wenn man selbst als Timeserver fungieren will, dann müssen in /etc/inetd.conf
die Zeilen stehen:
time stream tcp nowait root internal
time sdgram udp wait root internal
Die Zeit kann man einfach holen: netdate tcp rechnername
UMSDOS
Vorweg eine Warnung: Ich habe sehr schlechte Erfahrungen mit UMSDOS gemacht und verwende es nicht mehr! Es ist wirklich Beta und außerdem "Benutzer-fehlerträchtig"! Man sollte tunlichst aufpassen, daß man mit den "--linux-.---"-Files nichts durcheinanderbringt. Typische Fehler sind:
- Umsdos nicht als solches gemountet und Files darin verändert
- Umssync vergessen oder im falschen Verzeichnis
- "--linux-.---"-Files gelöscht
- Noch schlimmer: "--linux-.---"-File mit anderem "--linux-.---"-File überschrieben
Wenn jemand nur lange Dateinamen haben will, dann sollte er VFAT nehmen.
Nun aber doch das How-To:
- Kernel mit umsdos (auch als Modul möglich) übersetzen
- Mounten: Beispiel: mount -t umsdos /dev/sda /mnt/mo
- Pro Verzeichnis existiert bei echten UMSDOS-Filesystemen eine Datei "--linux-.---". Wenn diese Datei nicht existiert, dann verhält sich UMSDOS genauso, wie MSDOS.
- Mit "umssync ." wird im aktuellen Verzeichnis ein "--linux-.---" angelegt und somit UMSDOS aktiviert.
- Wenn DOS an solchen Verzeichnissen etwas ändert, dann muß man unter Linux erst "umssync ." starten.
- Man kann aber sehr gut mit DOS die UMSDOS-Verzeichnisse verschieben, z.B. auch auf MO.
Images von Platten mit dem Loopdevice mounten (oder auch MTools)
Zuerst muß man das loopback-Device in den Kernel eincompilieren und, z.B. ein Image
einer Diskette erstellen:
dd if=/dev/fd0 ibs=512 of=/tmp/MeineDisk
Dann kann man das Image so mounten:
mount /tmp/MeineDisk /mnt/disk -t msdos -o loop
Wenn die automatische Erkennung des Mediums nicht funktioniert, dann sollte man sich mit
fdisk das "Medium" mit "p" (Print partition table) anschauen:
prompt> fdisk /tmp/disk Disk /tmp/disk: 0 heads, 0 sectors, 0 cylinders Units = cylinders of 1 * 512 bytes Device Boot Begin Start End Blocks Id System /tmp/disk1 * 1 33 444416 222192 6 DOS 16-bit >=32M
Wenn man also die erste Partition im File "/tmp/disk" mounten will, dann muß
man einen Offset angeben, der sich aus "Start-1" mal "Units"
berechnet, also im Beispiel: 32*512=16384. Der Aufruf lautet dann:
mount /tmp/disk /mnt/a -t msdos -o offset=16384
Wenn ich ein Bochs-HDD-Image
mounten will, das so aussieht:
Disk /tmp/BochsHDD: 0 heads, 0 sectors, 0 cylinders (Mit tatsächlich 15 heads, 17 sectors, 900 cylinders) Units = cylinders of 1 * 512 bytes Device Boot Begin Start End Blocks Id System /tmp/BochsHDD4 * 1 18 229245 114614 6 DOS 16-bit >=32M
Dann muß man einen Offset von (17*512)Bytes angeben:
mount /tmp/BochsHDD /mnt/bochs -t msdos -o offset=8704
Für die MTools reicht dann ein analoger Eintrag in ~/.mtoolsrc:
drive c: file="/tmp/BochsHDD" offset=8704
Benutzer und System-Verwalter einrichten
Es gibt täglich Aktionen, die ein (möglicherweise privilegierter) Benutzer ausführt,
wozu er normalerweise nicht berechtigt ist, zum Beispiel das Mounten einer CDROM oder das
Starten einer PPP-Verbindung.
Die meisten Rechte sind bei mir durch Gruppen geregelt.
- Anghörige der Gruppe "sysop" dürfen beispielsweise folgende Files verändern
oder verwenden (bei ausführbaren Dateien):
/etc/profile.local /etc/XF86Config /home/skel/* /root/.tapebackuprc /sbin/halt /usr/bin/nice /usr/local/bin/* /usr/local/man/* /usr/local/lib/* /usr/local/include/* /usr/local/include/icons/* /usr/local/squid/etc/squid.conf /usr/local/fonts/* /httpd/htdocs/* /httpd/cgi-bin/*
Das impliziert noch diese Änderungen in /etc/permissions:
/var/log/messages root.sysop 640 /var/log/warn root.sysop 640
- Anghörige der Gruppe "scanner" dürfen den Scanner verwenden.
- Mounten ist vollständig in der /etc/fstab geregelt.
- Newsverwaltung geht per Cronjob als User "news". Siehe: News
- Sich wiederholende System-Jobs laufen als Cronjob von Root.
- Um einen Druckerfilter, der seine Ausgaben nicht an den Drucker schickt, sondern in /tmp/ ablegt habe ich einen SUID-Wrapper erstellt.
- Einen Wrapper braucht man noch um "ppp-on/off". Darin läuft dann alles als
Root:
- PPP aufbauen/abbauen
- Mail absenden
- News als User "news" versenden
- In /etc/dosemu.conf müssen die Benutzer eingetragen werden, die den DOSEMU hernehmen dürfen sollen.
X11 absichern
Um X11 gegen Abhörversuche durch andere Benutzer abzusichern und um zu verhindern,
daß andere Benutzer auf einem X-Server Fenster öffnen, muß man nur ein File "/usr/X11R6/lib/X11/xinit/xserverrc"
anlegen:
#! /bin/sh
authfile=$HOME/.Xauthority
xauth -f $authfile add :0 . `mcookie`
exec X -auth $authfile "$@"
Ab jetzt wird ein cookie verwendet. Wer den cookie nicht kennt, kann keine Fenster
aufmachen oder abhören.
Allerdings kann jetzt nicht einmal mehr root ein Fenster aufmachen. Wenn man das will,
dann muß man in der .profile (oder ähnlichem) von root dafür sorgen, daß er
das gleiche .Xauthority nutzt, wie der User.
Device-Filesystem (devfs)
Das Device-Filesystem stellt die Geräte in /dev nach einem neuen
Namens-Schema dar.
Damit gehört die unpraktische und gefährliche Numerierung sga, sgb, sgc, ... der
Vergangenheit an.
Details zu den Vorteilen gibt es in der FAQ zu devfs.
Mit devfs werden z.B. SCSI-Platten so angesprochen: /dev/scsi/host1/bus0/target6/lun0/part8,
aber man kann auch praktische Links legen, was mein devfs-setup
erledigt.
Außerdem kann man mit dem optionalen Dämon devfsd beim Zugriff auf Devices
Aktionen definieren. Das wird einfach in /etc/devfsd.conf
eingetragen.
Der devfsd ist auch wichtig, wenn man die alten Gerätenamen noch nutzen will.
ALSA - Advanced Linux Sound Architecture
cd alsa-driver-0.4.1c
./configure
make
make install
Wenn man kein devfs verwendet: ./snddevices
/etc/conf.modules anpassen.
cd alsa-lib-0.4.1
./configure
make
make install
alsa-utils-0.4.1
./configure
make
make install
amixer eset 'PCM Switch',0,Switch1 on
amixer eset 'PCM Volume',0,Volume1 52
alsactl store
speichert aktuelle Einstellungen in /etc/asound.conf
Das kann in /etc/conf.modules automatisch geladen werden:
post-install snd-card-opti9xx /usr/sbin/alsactl restore