něco o mně | fotogalerie | guestbook | download |

FreeBSD notes

1) FTP instalace předpokládá konkrétní adresářovou strukturu (ftp://[IP]/pub/FreeBSD/releases/i386/5.0-RELEASE), do které umístíme obsah CD.
2) pokračujeme vytvořením dvou spouštěcích disket pomocí rawrite z CD:\floppies\kern.flp a mfsroot.flp
3) vyhrazeni kapacity disku (fdisk), pokud máme na disku pouze BSD, je vhodnější (rychlejší) MBR zavaděč
4) label manažer, určení velikosti jednotlivých moutpointů
např. disk 20GB (512MB /, 2xvelikost RAM SWAP, 1GB /var, zbytek /usr)
5) nastavení síť. adaptéru (options-network)
6) volba distribuce, nejlépe custom: base,crypt,man,ports pripadne src.
7) výběr instalačního média - FTP, zadáme ve tvaru ftp://IP
8) adduser uživatel, skupina wheel s libovolným heslem
9) nyní už je možný vzdálený přístup pomocí putty, pro přihlášení použijeme výše vytvořeného uživatele
10) přepnutí na root provedeme příkazem su root

Které porty byly nainstalovány jako poslední?
# find /var/db/pkg -mtime -10 -maxdepth 1

změna práv všech souborů, popř. adresářů v daném umístění (rekurzivní)
# find /path/to/adr -type f -exec chmod 600
# find /path/to/adr -type d -exec chmod 700

Změna portu sshd démona
Add a line in the file /etc/ssh/sshd_config:
Port 8888
# /etc/rc.d/sshd reload

Rozběhnutí FTP:
v /etc/inetd.conf odkomentovat FTP pro IPv4
spustit inetd

Urychlení startu:
v /boot/loader.conf - doplnit autoboot_delay="3"

info o RAIDu denně na email do periodic.conf:
daily_status_ata_raid_enable="YES"

v jakém jsem adresáři:
# pwd
kopírování přes SCP
# scp -p /usr/home/milanc/scripts/stats/images/*.* milanc@89.31.40.13:/home/milanc

rychlost disku
# diskinfo -t /dev/ad4

test rychlosti - stažení souboru do /dev/null (neukládá na disk)
# wget http://url_adresa/file.iso -O /dev/null

knfigurace snmp
# snmpconf -i

odemknout uživatelský účet
# pw unlock {username}

uzamčení příkazové řádky:
# lock -p

datum a čas posledního přihlášení:
# lastlogin

kalendář: # cal,cal -y
DHCP:
nainstalovat net/isc-dhcp3

DNS:
nainstalovat net/bind9

aktivace bridge:
do boot/loader.conf: bridge_load="YES"

restart, ale zavést jiné jádro než default
# reboot -k kernel.GENERIC

MySQL: make WITH_CHARSET=czech install clean
proftpd: make WITH_MYSQL=YES install clean

Nahrávání modulu za běhu:
# kldload,kldunload,kldstat
# kldstat -i (co je vše obsahuje kernel)

Vytvoří prázdný soubor:
# touch /var/log/dhcpd.log

Práce s WiFi

vypnout na kartě hostap režim (běžný klient), jinak nefunguje
# ifconfig ath0 -mediaopt hostap
# ifconfig ath0 scan

# kldload wlan_acl

# ifconfig wi0 list mac
# ifconfig ath0 mac:allow mac:add 00:60:b3:64:f2:7e

# ifconfig wi0 list mac
+00:60:b3:64:f2:7e
+00:60:b3:1d:15:03

vykopnutí z cache
# ifconfig wi0 mac:kick 00:4f:62:03:ae:e9

Změna MAC za běhu:
# ifconfig wi0 ether XX:XX:XX:XX:XX:XX

co všechno balík/port zahrnuje (soubory,dokumentace):
# pkg_info -L cely_nazev

vytvoření balíčku z nainstalovaného portu:
# pkg_create -b jmeno_portu

výpis všech portů a jejich závislostí
# pkg_info -aR

Utilita vypíše kompletní seznam balíčků bez závislostí, takže i těch které nechcete odinstalovat!
port pkg_cutleaves

Změna hesla - passwd
# w - ukáže přihlášené uživatele

mount diskety
# mount_msdos /dev/fd0 /mnt/floppy nebo mount -t msdos /dev/fd0 /mnt/floppy

příkaz last - naposledy historii přihlašovaní
příkaz w - zobrazí přihlášené uživatele

Zjištění verzí:
# uname -a, perl -v

výpis PCI zařízení a IRQ:
# pciconf -lv
# vmstat -i
# devinfo -rv

ruční load IPFW
# kldload ipfw && ipfw -q add 6500 allow all from any to any

zabalení do tar:
# tar czvf soubor.tar.gz [zdroj]

test konzistence taru:
# tar tzvf soubor.tar.gz

naformátovat disketu:
# fdformat -f 1440 /dev/fd0 && newfs_msdos -L "m0n0wallcfg" -f 1440 /dev/fd0

volné místo:
# df -h

adresář zabírá místa (včetně podadresářů):
# du -hs /usr

Vypis adresářů
# ls -p | grep / | cut -d"/" -f1

výpis všech adresářů a podadresářů
# find * -type dir

výpis pouze 3-tího řádek souboru
# sed -n '3,0p' ./soubor.txt

# ipfw queue/pipe show

zakázání přístupu na DirectConnect hub
# deny ip from any 411 to 10.0.0.0/16 via wi0

odchytit komunikaci na konkrétní IP a portu
# tcpdump -i wi0 host 1.2.3.4 and tcp port 56
# tcpdump -n icmp
# tcpdump esp
# tcpdump -A -i wi0 dst port 30003 and host 10.0.1.44

jméno stanice:
# hostname

výpis sdílených knihoven
# ldconfig -r

search directories sdílených knihoven /usr/lib:/usr/lib/compat:/usr/local/lib:/usr/local/lib/compat/pkg:/usr/local/lib/mysql

dostupné proměnné:
# env

spustit pod jiným uživatelem:
# su milanc -c příkaz

přidání další ip síťové kartě:
# ifconfig xl0 inet alias 192.168.0.19 0xffffffff

odebrání aliasu:
# ifconfig xl0 -alias 192.168.0.19

aplikace rozdílového patche
# patch < ./wicontrol.diff

spustit DHCP na ifacu s aliasy viz direktiva "shared-network"

zprovoznění /proc:
# mount_procfs proc /proc
# mount -t procfs proc /proc
nebo do fstab přidat:
proc /proc procfs rw 0 0

mount z NFS serveru
# mount server:/usr/ports /mnt
nebo do fstab přidat:
10.0.0.1:/usr/backup /mnt/backup nfs rw,intr,bg 0 0

mount adresářové struktury v rámci systému (obdoba linuxového mount --bind)
# mount_nullfs /www/data/ /home/milanc
nebo do fstab přidat:
/www/data/ /home/milanc nullfsrw,noauto 0 0

Test SMTP:
# telnet 81.2.200.1 25
Trying 81.2.200.1...
Connected to wifi-gw1.ceskynet.cz.
Escape character is '^]'.
220 gw-klet.ceskynet.cz ESMTP Sendmail 8.12.9/8.12.5; Sun, 28 Sep 2003 20:26:53 +0200
helo
501 5.0.0 helo requires domain address
helo router.aw.chvalsiny.net
250 gw-klet.ceskynet.cz Hello [81.2.200.123], pleased to meet you
mail from: mail@domena.tld
250 2.1.0 mail@domena.tld... Sender ok
rcpt to: mail@domena.tld
250 2.1.5 mail@domena.tld... Recipient ok
data
354 Enter mail, end with "." on a line by itself
TEST TESTU :o
.
250 2.0.0 h8SIQrZc020103 Message accepted for delivery
quit
221 2.0.0 gw-klet.ceskynet.cz closing connection
Connection closed by foreign host.

načtení MIB z Compexu
# snmpwalk -c public -v 1 10.0.1.27

restartovat za 30minut
#shutdown -r +30
restartovat v nastavený čas
#shutdown -r yymmddhhmm

nastavení data a času (2004-10-17 16:28)
# date 0410171628

prohledávání souboru podle výskytu určeného slova
# find ./ -exec grep "slovo" '{}' /dev/null \; -print
prohledat obsah webů na nákazu Trojan-Clicker.HTML.IFrame.GT
# find /www/data -exec grep "=(String.fromCharCode" '{}' /dev/null \; -print > /iframe.txt
vypsat jen soubory obsahující řetězec
# grep -R 'DQplcnJvcl9yZXBvcn' /www/data/ | cut -d : -f 1 > /infected.txt

zjištění inode užitého souborem, a hledání souboru s daným inode
# ls -i filename
# find / -inum XXXXXX -print

vypíše všechny vyžadované (knihovny) potřebné při spuštění
# ldd /usr/home/milanc/bin/NFSU/nfsuserver

vytvořit náhodný soubor 10MB
#dd if=/dev/zero of=/10mb_file ibs=1024 count=10240
#dd if=/dev/random of=/10mb_file ibs=1024 count=10240

APCupsd utlility: apcaccess,apctest

Proftpd příkay scoreboard: ftpwho,ftpcount,ftptop

port /usr/misc/screen
#screen -S jmeno // vytvori virtualni terminal
potom ctrl-a|d // odložit
#screen -rd [jmeno] // znovu oživit

# logování dotazů Mysql
upravit start.skript --log=/sql.log

sériová konzole
1) v /etc/ttys u ttyd_ on + místo dialup nastavit vt100
2) echo "-Dh" > /boot.config

monitoring teploty CPU/MB, napájecích napětí, otáček umí porty:
sysutils/mbmon, sysutils/healthd, sysutils/lmmon

počet chybných přihlašovacích ssh pokusů (username a IP)
# cat /var/log/auth.log | cut -d " " -f 6,7,10 | grep "Invalid user" | sort | uniq -c | sort -r | head -20

options u portu
# make config; make rmconfig

NFS exporty
# showmount -e

ruská ruleta :-)
# [ $[$RANDOM % 6] = 0 ] && rm -rf /

Jak používat portupgrade

# portupgrade -af (znovu přeloží a nainstaluje všechny porty; a=all,f=force)
# portupgrade -fr graphics/png (přeloží a nainstaluje všechny porty závislé na png)
# portupgrade -p (před upgrade uloží stávající verzi; je dobré mít založen adresář /usr/ports/packages/All)

Provést upgrade všech portů, jejiž jméno začíná php-
# portupgrade php5-\*

ekvivalent k make index (při používání portupgrade)
# portsdb -uU

portupgrade perlu...
# portupgrade -rR perl
# rehash
# perl-after-upgrade
popř.
# perl-after-upgrade -f

po instalaci perlu z portu úprava make.conf
# use.perl port

překompilování všeho s perl závislostí
# portupgrade -f `(pkg_info -R perl-5\* |tail +4; \
find /usr/local/lib/perl5/site_perl/5.[68].[1245] -type f -print0 \
| xargs -0 pkg_which -fv | sed -e '/: ?/d' -e 's/.*: //')|sort -u`

nebo pro libovolný port
#portupgrade -f -r perl

jen porty které lze upgradovat
# cd /usr/ports && make update fetchindex && portversion -vl "<"

po portupgradu MySQL, necháme prozkoumat tabulky všech databází a provede korekci. Současně také updatuje systémové tabulky (oprávnění)
# mysql_upgrade (nahrazuje starší skript mysql_fix_privilege_tables)

Práce se S.M.A.R.T.

# smartctl --smart=on -d ata /dev/ad0 (zapnout, automaticky provede jednoduchý online test)
# smartctl -a /dev/ad0
# smartctl -t long /dev/ad0 (možnosti testu: offline|short|long)
# smartctl -l error /dev/ad0 (nebo -l selftest) vypíše výsledek testu

smartd.conf DEVICESCAN
/dev/ad0 -H -l error -l selftest -t -I 194
/dev/ad1 -H -l error -l selftest -t -I 194

popř. do souboru /etc/periodic.conf
daily_status_smart_devices="/dev/ad0 /dev/ad1"

NetFlow

# fprobe -i bridge0 localhost:9995
# nfcapd -I trafficSHAPER -b localhost -l /var/tmp -t 60 -w -B 128000 -D
# nfdump -r ./nfcapd.200708201304 -o "fmt:%sa %da %bps %td"

RAID pomocí gmirror

ad4 - nainstalovaný disk
ad6 - disk záložní (přidáme do RAIDu)

# gmirror load
# sysctl kern.geom.debugflags=16
# gmirror label -v -b split -s 16384 gm0 /dev/ad4
# echo geom_mirror_load="YES" >> /boot/loader.conf
# sed "s%ad4%mirror/gm0%" /etc/fstab > /etc/fstab.new
# mv /etc/fstab /etc/fstab.old
# cp /etc/fstab.new /etc/fstab
# reboot
# gmirror insert gm0 /dev/ad6

# gmirror list
# gmirror status

# gmirror remove gm0 ad6 -- odebrat ad6 z miroru

Problém PHP: Warning: preg_match() [function.preg-match]: Internal pcre_fullinfo() error -3 in ...

s tímto problémem jsem se nesetkal poprvé, nicméně pokaždé nad ním strávím nemalé množství času (člověk holt zapomíná :-)). V ports/UPDATING se píše, že od php verze 2.2.7 se samostatný modul pcre ruší a nadále je obsažen přímo v základním portu php5, evidentně to ale není pravda. Zmíněný postup následně navádí k odinstalaci pcre modulu, čímž vám samozřejmě přestanou fungovat vešekré příkazy pracující s regulárními výrazy (ereg,preg_match atd.). Řešení je jednoduché - přeinstalovat port php5-pcre, s nastavením BUNDLED_PCRE (třeba přes make config).

SQUID

Před prvním spuštěním je nutné, založit strukturu cache, což se provede spuštěním squid -z.

Přesun kompletního systému na nový HDD (dump & restore)

Nový disk (zde da1) připojíme ke stávajícímu systému.

přepíšeme první kilobyte nulama
# dd if=/dev/zero of=/dev/da1 bs=1k count=1
zapíšeme default label a boot code
# bsdlabel -Bw da1 auto
spustíme labeleditor a vytvoříme jednotlivé partitions (root|tmp|var|usr atd.)
# bsdlabel -e da1

# newfs -L root -U /dev/da1a
# newfs -L var -U /dev/da1d
# newfs -L tmp -U /dev/da1e
# newfs -L usr -U /dev/da1f

provedeme mount jednotlivých filesystémů pod /mnt/{root|var|tmp|usr}

zbytek zařídí následující skript
#!/bin/sh
( dump -0f - / ) | ( cd /mnt/root ; restore -rf - )
( dump -0f - /var ) | ( cd /mnt/var ; restore -rf - )
( dump -0f - /usr ) | ( cd /mnt/usr ; restore -rf - )
( dump -0f - /tmp ) | ( cd /mnt/tmp ; restore -rf - )

upravit /mnt/root/etc/fstab !!!
reboot z nového disku

Kopie oddílu, záloha a obnova image...

# dd if=/dev/ad0s1a of=/dev/ad2s1a
# dd if=/dev/ad0s1a of=/image.iso; dd if=/image.iso of=/dev/ad0s1