Debian tippek és trükkök
Figyelem, ez a lap részben elavult, rendezetlen, stb... - én szóltam! :-)
Tartalomjegyzék
- 1 Boot probléma
- 2 Lemezkezelés
- 3 Kernel
- 4 Csalamádé
- 4.1 Hostnév és domain név megváltoztatása
- 4.2 Hiányzó nyilvános kulcsok beszerzése
- 4.3 DAV mount Linuxon
- 4.4 SMTP teszt telnettel
- 4.5 Exim4 beragadt levelek törlése
- 4.6 Exim logból egy user által küldött levelek kikeresése
- 4.7 Exim4 TLS "Base64 decoding" hiba
- 4.8 Exim4 mint smarthost kliens titkosítatlan authentikációval
- 4.9 Üres könyvtárak törlése
- 4.10 Hálókártya eszköznév beállítása (Etch, udev)
- 4.11 Debian csomag újrafordítás speciális paraméterekkel
- 4.12 Váratlan login problémák
- 4.13 IPv6 tiltása Squeeze alatt kernel paraméterrel
- 4.14 Shadow passwords utólagos engedélyezése
Boot probléma
GRUB boot floppy
Innen származik: "A probléma: elszáll a bootloader, CD nincs és be kell indítani a rendszert egy boot floppy-val. Boot floppy nincs (miért is lenne :-), készíteni kell egyet. Szükséges egy olyan linuxos gép amelyben van floppy meghajtó és van rajta grub. A következőket kell csinálni:
- leformázni a lemezt, DOS kompatibilis fájlrendszert létrehozni, lemezt felmountolni, helyet létrehozni, dolgokat felmásolni:
fdformat /dev/fd0 mkfs -t msdos /dev/fd0 mount -t msdos /dev/fd0 /media/floppy mkdir -p /media/floppy/boot/grub cp /boot/grub/* /media/floppy/boot/grub
- esetleges módosításokat eszközölni a menüben (grafikus menü, jelszó kikapcsolása, stb.):
mcedit /media/floppy/boot/grub/menu.lst
- lemezt lemountolni, a GRUB-ot rátelepíteni:
umount /media/floppy grub grub> root (fd0) grub> setup (fd0) grub> quit
Elkészült a boot lemez. Megtörténhet, hogy bootoláskor nem találja a kernelt vagy nem tudja felmountolni a fájlrendszert ilyenkor jön jól a grub nagy előnye a futás közbeni menüátszerkesztés, hát használjuk."
GRUB boot CD
A hivatalos manuálból származik, egy teljesen üres GRUB-ot indít el - hasznos lehet floppyt nem tartalmazó gépeknél. Mindössze egyetlen file-t kell rámásolni az El-Torito boot lemezképre:
mkdir iso mkdir -p iso/boot/grub cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub # Ubuntun itt van mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso
A megírt CD-ről bootolva a GRUB shelljébe jutunk.
GRUB telepítés (változtatás) GRSec alatt
A boot record írásához (grub-install) az alábbi PaX engedélyeket kell megadni a /usr/sbin/grub ELF-nek:
chpax -v /usr/sbin/grub ----[ chpax 0.7 : Current flags for /usr/sbin/grub (PeMRxS) ]---- * Paging based PAGE_EXEC : enabled (overridden) * Trampolines : not emulated * mprotect() : restricted * mmap() base : randomized * ET_EXEC base : not randomized * Segmentation based PAGE_EXEC : enabled chpax -prs /usr/sbin/grub chpax -v /usr/sbin/grub ----[ chpax 0.7 : Current flags for /usr/lib/j2sdk1.4-sun/bin/java (peMrxs) ]---- * Paging based PAGE_EXEC : disabled * Trampolines : not emulated * mprotect() : restricted * mmap() base : not randomized * ET_EXEC base : not randomized * Segmentation based PAGE_EXEC : disabled
TODO: utánanézni, kevesebb nem elég-e!
Lemezkezelés
Szétesett sw RAID helyreállítása
mdadm --detail /dev/mdX # Megnézzük, melyik a faulty disk mdadm /dev/mdX -r /dev/sdY # Kivesszük a faulty disket a RAID-ből # Megjavítjuk vagy cseréljük, vagy... mdadm /dev/mdX --re-add /dev/sdY # Visszaadjuk a disket watch cat /proc/mdstat # Gúvadt szemmel nézzük, ahogy visszaszinkronizál :-)
Harmadik lemez hozzáadása RAID-1-hez
mdadm --grow /dev/md0 -n3 # Plusz egy lemez mdadm /dev/mda --add /dev/sdc1 # Hozzáad és szinkronizál
A végeredmény egy hármas tükör lesz, ami egy lemez meghibásodása esetén is redundáns marad. Ez a felállás azért jobb a hagyományos spare disknél, mert így összeállításkor és nem meghibásodáskor kell szinkronizálni (ami nagy partíción órákig tarthat, és addig az egész lemezkezelés lelassul).
Kernel
Kifelejtettünk egy modult
Mondjuk, kifelejtettünk egy modult a kernelből, és valami nem megy. Reboot nélkül hozzáadhatjuk úgy, hogy az azonos verziójú(!) és újrafordított kernel csomag CONTENTS/lib/modules alól könyvtárhelyesen bemásoljuk a /lib/modules-be, utána:
depmod -ae modprobe modulneve
Ha szerencsénk van :-), működik.
UDP conntrack timeout emelése
Elsősorban tömeges DNS lekérdezéskor előfordulhat, hogy a válasz kicsúszik az alapértelmezett 30 másodperces időhatárból. Ilyenkor hasznos lehet az ip_conntrack_udp_timeout emelése:
echo 60 >/proc/sys/net/ipv4/netfilter/ip_conntrack_udp_timeout
illetve tartósan:
-r-------- root root /etc/sysctl.conf [...] # Increase UDP conntrack timeout (defaults to 30) net/ipv4/netfilter/ip_conntrack_udp_timeout=60 [...]
Csalamádé
Ide kerül minden szívás, amiről nem volt érkezésünk rendes szócikket írni, de jobb, ha nem felejtjük el...
Hostnév és domain név megváltoztatása
Ezeket az adatokat számos program használja (pl. a kimenő levelek generálásakor, stb.).
Lekérdezés:
hostname; dnsdomainname
A hostnév megváltoztatása:
hostname uj_hostnev
A domain név megváltoztatásához a /etc/hosts-beli bejegyzést kell átírni.
Hiányzó nyilvános kulcsok beszerzése
A hivatalos Debian repository-khoz tartozó nyilvános kulcsokat az alaptelepítés tartalmazza. Testing változatban vagy 3rd party repositoryknál előfordulhat, hogy ez a kulcs megváltozik vagy ismeretlen, ilyenkor nem lehet használni a repokat (apt-get update a "nem elérhető a nyilvános kulcs az X azonosítóhoz" hibával leáll). Ez esetben kézzel kell beszerezni az up-to-date nyilvános kulcsot valamely keyserverről, és hozzáadni az apt keyring-hez:
gpg --keyserver subkeys.pgp.net --recv-keys KEYID # a hibaüzenetből véve gpg --armor --export KEYID | apt-key add -
Ehhez a tűzfalon a tcp 11371 kifele legyen nyitva! Sikeres hozzáadás után már működik az update.
DAV mount Linuxon
Ez a két script megkönnyíti a webhelyek fileterületének fejlesztői elérését davfs használatával desktop Linuxon. Ubuntu 7-10 változaton tesztelve, davfs2 1.2.1 használatával. Sudo kell hozzá!
-rwx------ USER USER /home/USER/dav_mount.sh #!/bin/bash # # Shell snippet to mount a davfs. # kovacs.zoltan@ionlab.net # # v0.1 initial version 2007-12-05 MOUNT_BASE="$HOME/mnt/dav" OPTIONS="noauto,noexec,nosuid,uid=$USERNAME,gid=$USERNAME,dir_mode=750,file_mode=640" USAGE="Usage: $0 URL relative_mountpoint as root user." # Need root if [ $UID -ne 0 ]; then echo -e "$USAGE" >&2; exit 1; fi # Get and check parameters URL=$1; shift MOUNT_REL=$1; shift if [ -z "$URL" -o -z "$MOUNT_REL" ]; then echo -e "$USAGE" >&2 exit 1 fi # Mount via davfs mount -t davfs -o "$OPTIONS" "$URL" "$MOUNT_BASE"/"$MOUNT_REL"
-rwx------ USER USER /home/USER/dav_umount.sh #!/bin/bash # # Shell snippet to umount a davfs. # kovacs.zoltan@ionlab.net # # v0.1 initial version 2007-12-05 MOUNT_BASE="/$HOME/mnt/dav" USAGE="Usage: $0 relative_mountpoint as root user." # Need root if [ $UID -ne 0 ]; then echo -e "$USAGE" >&2 exit 1 fi # Get and check parameters MOUNT_REL=$1; shift if [ -z "$MOUNT_REL" ]; then echo -e "$USAGE" >&2 exit 1 fi umount "$MOUNT_BASE"/"$MOUNT_REL"
SMTP teszt telnettel
Igen, ezer helyen le van írva, fejből is tudni kéne...
telnet SMTP-FQHN 25 HELO my-FQHN MAIL FROM: felado@host RCPT TO: cimzett@host DATA levélszöveg . QUIT
Exim4 beragadt levelek törlése
Ha sok van belőlük, és az egyenkénti manuális
exim4 -Mrm MESSAGE-ID MESSAGE-ID ...
sokáig tartana:
exim4 -bpru | awk {'print $3'} | xargs exim4 -Mrm
Exim logból egy user által küldött levelek kikeresése
Előfordul, hogy egy felhasználó reklamál: nem ment el a Nagyon Fontos Levél. Ilyenkor hasznos lehet az általa az adott napon küldött összes levél kikeresése. Az alábbi script feltételezi, hogy az SMTP a VExim-alapú levelező szervernél leírt beállításokkal megy, vagyis plain_courier_authdaemon authentikációval. A scriptet paraméter nélkül meghívva az összes felhasználó aznapi (aktuális mainlog-beli) aktivitását (a tőle hibaüzenet nélkül elvett levelek sorsát) kiírja.
-rwxr-x--- root staff /usr/local/sbin/smtp_userlog.sh #!/bin/bash # # Simple script to select user's SMTP activity from an (unzipped) Exim log. # kovacs.zoltan@ionlab.net 2007-11-09 # # Usage: $0 [user_id [ logfile_pathname ]] EXIMLOG="/var/log/exim4/mainlog" # Default Exim logfile GREP="/bin/grep" # grep command call SMTP_AUTH="plain_courier_authdaemon:" # SMTP auth marker userid=$1; shift # userid given logfile=${1:-$EXIMLOG}; shift # logfile pathname defaults to current for id in `cat $logfile | grep $SMTP_AUTH$userid | cut -d ' ' -f 3` do cat $logfile | grep $id done
A script kimenetében a levelekre vonatkozó bejegyzések levelenként időrendben, kigyűjtve szerepelnek.
Exim4 TLS "Base64 decoding" hiba
TLS error on connection from ... (DH params import): Base64 decoding error - ez egy bolond hibaüzenet, azt jelzi, hogy az Exim nem tudja olvasni vagy a certificate-jeit (/etc/exim4/exim.crt illetve /etc/exim4/exim.key) vagy a TLS paramétereket (/var/spool/exim4/gnutls-params) - ezek amúgy tényleg Base64 kódolásúak :-). Ha a tanusítvány hibás, azt újra kell generálni, ha a paraméterfile, azt egyszerűen le kell törölni (és exim restart).
Exim4 mint smarthost kliens titkosítatlan authentikációval
Akkor okozhat problémát, ha egy Debian gépről idegen SMTP smarthoston keresztül kell levelet küldeni. A legtöbb ISP authentikációt kér a smarthostoláshoz, viszont nem mindegyik engedélyezi a TLS-t (vagy SSL-t). Az Exim (kliensként) alapértelmezésben nem küld jelszavakat titkosítatlan kapcsolaton keresztül, így ilyen esetben ezt külön engedélyezni kell:
-rw-r--r-- root root /etc/exim4/conf.d/main/99_exim4-config_custom_settings # Custom settings - nor provided by maintainer, # nor customizable by Debian automagic [...] AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS = YES
A fenti beállítás az Exim konfiguráció frissítésével érvényesíthető:
/usr/sbin/update-exim4.conf; /etc/init.d/exim4 reload
Üres könyvtárak törlése
Hasznos parancs lehet:
perl -MFile::Find -e"finddepth(sub{rmdir},'.')" # Perl find -depth -type d -empty -exec rmdir {} \; # Bash
Hálókártya eszköznév beállítása (Etch, udev)
Volt szerencsém hálókártyát cserélni Etch-ben (azonos típus, násik példányra). Régebben ilyenkor reboot, az új kártya a régi helyén látszik (mondjuk eth0) és ment tovább minden. Az udev elterjedésével azonban minden hálókártya (is) külön betűt kap: az új kártya az eth-next (pl. eth1) lesz akkor is, ha a fejünk tetejére állunk :-) . Ergo a /etc/network/interface bejegyzései, tűzfalszabályok, mifene érvénytelenek lesznek... Némi hajtépés után rájöttem, hogy a /etc/udev/rules.d/z25_persistent-net.rules állományban vannak a hozzárendelések - ezt módosítva helyreállt a rend.
Offtopic megjegyzés: Ubuntuban van egy /etc/iftab állomány lényegében ugyanerre.
Debian csomag újrafordítás speciális paraméterekkel
Itt olvasható.
Váratlan login problémák
-bash: /etc/profile: Permission denied I have no name!@HOSTNAME:~$
Valószínűleg nem olvasható a /etc/ (0755 kell rá). A su ilyenkor azért megy, root-ként megjavítható.
Hibás saját configure script tud pl. ilyet csinálni, ha a /etc/$valami könyvtárra adna jogokat, de a $valami éppen üres...
IPv6 tiltása Squeeze alatt kernel paraméterrel
innen van:
-rw-r--r-- root root /etc/default/grub [...] GRUB_CMDLINE_LINUX="ipv6.disable=1" [...]
Érvényesítés:
mount -o remount,rw /boot update-grub reboot
de jelenleg nem működik :-(
Shadow passwords utólagos engedélyezése
Ha telepítéskor nem engedélyeztük volna, root-ként futtassuk a pwconf-ot, utána adjuk ki a shadowconfig on parancsot, ezek után passwd, és jelszó megadása.