Хардуер | Стастики | Потребители | Граници | Нива на работа | root парола | Компилиране на ядрото
Зареждане на ядрото и информация за системата# uname -a # Дава версията на ядрото (и BSD версията) # cat /etc/SuSE-release # Дава версията на SuSE # cat /etc/debian_version # Дава Debian версиятаИзползвай /etc/
DISTR-release с DISTR= lsb (Ubuntu), redhat, gentoo, mandrake, sun (Solaris), и т.н.
# uptime # Показва колко време системата е работила + зареждане # hostname # име на хоста на системата # hostname -i # Показва IP адреса на системата. # man hier # Описание на йерархията на файловата система # last reboot # Показва история на рестартиранията на системата
# dmesg # Открит хардуер и съобщения при буут # lsdev # информация за инсталиран хардуер # dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8 # Чете BIOS
# cat /proc/cpuinfo # Модел на процесора # cat /proc/meminfo # Хардуерна памет # grep MemTotal /proc/meminfo # Показва физическата памет # watch -n1 'cat /proc/interrupts' # Следи постоянно за променливи прекъсвания # free -m # Използвана и свободна памет (-m за MB) # cat /proc/devices # Конфигурирани устройства # lspci -tv # Показва PCI устройства # lsusb -tv # Показва USB устройства # lshal # Показва списък от всички устройства и техните настройки # dmidecode # Показва DMI/SMBIOS: хардуер информация от BIOS
# sysctl hw.model # Модел на процесора # sysctl hw # Дава пълна информация за хардуера # sysctl vm # Използвана памет # dmesg | grep "real mem" # Хардуерна памет # sysctl -a | grep mem # Памет на настройките на ядрото и информация # sysctl dev # Конфигурирани устройства # pciconf -l -cv # Показва PCI устройства # usbdevs -v # Показва USB устройства # atacontrol list # Показва ATA устройства
# top # Показва и обновява топ процесите на процесора # mpstat 1 # Показва статистики свързани с процесори # vmstat 2 # Показва статистики на виртуалната памет # iostat 2 # Показва I/O статистики (2-секундни интервали) # systat -vmstat 1 # BSD обобщение на системните статистики (1-секунден интервал) # systat -tcp 1 # BSD tcp връзки (пробрай също -ip) # systat -netstat 1 # BSD активни мрежови връзки # systat -ifstat 1 # BSD мрежови трафик през активни интерфейси # systat -iostat 1 # BSD CPU and and disk throughput # tail -n 500 /var/log/messages # Последните 500 съобщения на ядро/сислог # tail /var/log/warn # Системни предупрежения виж syslog.conf
# id # Показва активното потребителско id с име и група # last # Показва последните влизания в системата # who # Показва кой е влязъл в системта # groupadd admin # Добавя група "admin" и потребител colin (Linux/Solaris) # useradd -c "Colin Barschel" -g admin -m colin # userdel colin # Изтрива потребител colin (Linux/Solaris) # adduser joe # FreeBSD добавя потребител joe (interactive) # rmuser joe # FreeBSD изтрива потебител joe (interactive) # pw groupadd admin # Използва pw в FreeBSD # pw groupmod admin -m newmember # Добавя нов член в група # pw useradd colin -c "Colin Barschel" -g admin -m -s /bin/tcsh # pw userdel colin; pw groupdel adminКриптирани пароли са записани в /etc/shadow за Linux и Solaris и /etc/master.passwd за FreeBSD. Ако master.passwd е променен ръчно (да речем заради изтриване на парола), стартирайте
# pwd_mkdb -p master.passwd за пренареждане на базата данни.# echo "Sorry no login now" > /etc/nologin # (Linux) # echo "Sorry no login now" > /var/run/nologin # (FreeBSD)
ulimit. Статуса се проверява
с ulimit -a. На пример, за да промените границата за отваряне на файлове от
1024 до 10240 изпълнете:
# ulimit -n 10240 # Това е валидно само в шела
ulimit командата може да се използва в скрипт, за да промени границите само за скрипта.
/etc/security/limits.conf. На пример:
# cat /etc/security/limits.conf * hard nproc 250 # Ограничава потребителските процеси asterisk hard nofile 409600 # Ограничава програмите в отварянето на файлове
/etc/sysctl.conf.
# sysctl -a # Показва всички системни ограниченияView all system limits # sysctl fs.file-max # Показва максималното ограничение за отваряне на файлове # sysctl fs.file-max=102400 # Променя максималното ограничение за отваряне на фйалове # cat /etc/sysctl.conf fs.file-max=102400 # Постоянен запис в sysctl.conf # cat /proc/sys/fs/file-nr # Колко описания на файлове се използват
limits в csh или tcsh, или както в Linux, изполвайте ulimit в sh или bash шел.
/etc/login.conf. Неограничената стойност е все още ограничена от системната максимална стойност.
/etc/sysctl.conf или /boot/loader.conf. Синтаксисът е същият като при Linux но ключовете са различни.
# sysctl -a # Показва всички системни ограничения # sysctl kern.maxfiles=XXXX # Максимален брой на файловите описания kern.ipc.nmbclusters=32768 # Постоянна връзка в /etc/sysctl.conf kern.maxfiles=65536 # Типични стойности за Squid kern.maxfilesperproc=32768 kern.ipc.somaxconn=8192 # TCP опашка. По-добре за apache/sendmail # sysctl kern.openfiles # Колко файлови описания се използват # sysctl kern.ipc.numopensockets # Колко отворени гнезда се използватВиж FreeBSD handbook Chapter 11 за подробности.
/etc/system ще увеличат максималните файлови описания на процес:
set rlim_fd_max = 4096 # Твърда граница на файлово описания за един процес set rlim_fd_cur = 1024 # Мека граница на файлово описания за един процес
init, който после стартира rc,
който пък стартира всички скриптове принадлежащи към нивото на работа. Скриптовете са записани
в /etc/init.d и имат връзки в /etc/rc.d/rcN.d с N номера на нивото на работа.# grep default: /etc/inittab id:3:initdefault:Актуалното ниво на зареждане (списъкът е показан отдолу) може да бъде променен с
init. На пример, за да го промените от 3 на 5:
# init 5 # Въвежда ниво на работа 5
chkconfig, за да конфигурирате програми, които стартират при зареждане в ниво на работа.
# chkconfig --list # Покажи всички init скриптове # chkconfig --list sshd # Рапортира статуса на sshd # chkconfig sshd --level 35 on # Конфигурира sshd за нива 3 и 5 # chkconfig sshd off # Забрани sshd за всички нива на работаДебиан и дебиан-базираните дистрибуции като Убунту и Кнопикс използват командата
update-rc.d за да контролират скриптовете за нива на работа. По подразбиране е да започне в 2,3,4 и 5 и да изключи в 0,1 и 6.
# update-rc.d sshd defaults # Активира sshd със стандартните нива на работа # update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 . # С определени аргументи # update-rc.d -f sshd remove # Забранява sshd за всички нива на зареждане # shutdown -h now (or # poweroff) # Изключва и задържа системата
/etc/ttys. Всички ОС скриптове се намират в
/etc/rc.d/ и в /usr/local/etc/rc.d/ за трети приложения.
Активирането на услуга е конфигурирано в /etc/rc.conf и /etc/rc.conf.local.
Поведението по подразбиране е конфигурирано в /etc/defaults/rc.conf. Скриптовете отгоравят поне на старт|стоп|статус.
# /etc/rc.d/sshd status sshd is running as pid 552. # shutdown now # Премини в потребителски режим # exit # Премини в многопотребителски режим # shutdown -p now # Изключи и задръж системата # shutdown -r now # РестартирайПроцесът
init може също да бъде достигнат от следните нива. Например # init 6 за рестарт.
USR2)TERM)INT)TSTP)HUP)init=/bin/shЯдрото ще прикачи root дяла и
init ще стартира борн-шела
вместо rc в нивото на зареждане. Използвайте командата passwd в конзолата, за да промените паролата и после рестартирайте. Забравете потребителския режим, защото паролата ви трябва тук.# mount -o remount,rw / # passwd # или изтрийте root паролата (/etc/shadow) # sync; mount -o remount,ro / # синхронизира преди повторно прикачване само за четене # reboot
# mount -o rw /dev/ad4s3a /mnt
# chroot /mnt # chroot в /mnt
# passwd
# reboot
Като алтернатива във FreeBSD, стартирайте потребителски режим, монтирайте отново / rw и използвайте passwd.
# mount -u /; mount -a # ще прикачи / rw
# passwd
# reboot
# lsmod # Показва всички модули заредени в ядрото # modprobe isdn # За зареждане на модул (тук isdn)
# kldstat # Показва всички модули заредени в ядрото # kldload crypto # За зареждане на модул (тук crypto)
# cd /usr/src/linux # make mrproper # Изкчиства всичко, включително конфигурационни файлове # make oldconfig # Създава нов конфигурационен файл от настоящото ядро # make menuconfig # или xconfig (Qt), или gconfig (GTK) # make # Създава компресирана снимка на ядрото # make modules # Компилира модулите # make modules_install # Инсталира модулите # make install # Инсталира ядрото # reboot
GENERIC директно.
# cd /usr/src/sys/i386/conf/ # cp GENERIC MYKERNEL # cd /usr/src # make buildkernel KERNCONF=MYKERNEL # make installkernel KERNCONF=MYKERNELЗа да построите отново цялата ОС:
# make buildworld # Построява цялата ОС, но без ядрото # make buildkernel # Използва KERNCONF както горе ако е подходящо # make installkernel # reboot # mergemaster -p # Сравнява само файлове познати като крайно необходими # make installworld # mergemaster # Подновява цялата конфигурация и други файлове # rebootЗа малки промени в изхода, понякога е достатъчна и кратката версия:
# make kernel world # Компилира и инсталира и двете - ядро и ОС
# mergemaster
# reboot
Показване | Приоритет | Фон/преден план | Топ | Kill
ps.
# ps -auxefw # Extensive list of all running process
Обаче по-типично е използването с pipe или с pgrep:
# ps axww | grep cron 586 ?? Is 0:01.48 /usr/sbin/cron -s # pgrep -l sshd # Намира ПОУ на процес по (част от) име # fuser -va 22/tcp # Показва процесите, ползващи порт 22 # fuser -va /home # Показва процеси използващи достъп до /home дяла # strace df # Проследява системни обаждания и сигнали # truss df # Същото като горното на FreeBSD/Solaris/Unixware # history | tail -50 # Показва последните 50 използвани команди
renice. Негативни числа имат по-висок приоритет, най-малкото е -20 и "nice" има позитивни стойности.
# renice -5 586 # По-силен приоритет
586: old priority 0, new priority -5
Стартиране на процес с различен приоритет с nice. Позитивно е "nice" или слабо, негативно е силно засенчващ приоритет. Уверете се, дали се изполва /usr/bin/nice или вградения в шела (проверка с # which nice).
# nice -n -5 top # Силен приоритет (/usr/bin/nice) # nice -n 5 top # Слаб приеоритет (/usr/bin/nice) # nice +5 top # tcsh вграден nice (същото като горе!)
bg и fg. На пример стартирайте два процеса във фона, покажете ги с jobs и ги преместете на преден план.
# ping cb.vu > ping.log ^Z # е прекъсната (спряна) с [Ctrl]-[Z] # bg # слага във фона и продължава работа # jobs -l # Показва процесите на заден план [1] - 36232 Running ping cb.vu > ping.log [2] + 36233 Suspended (tty output) top # fg %2 # Премества процес 2 на преден планИзползвайте
nohup за стартиране на процес, който продължава да работи, когато шел-а бъде затворен (имунитет против прекъсвания).
# nohup ping -i 60 > ping.log &
top показва работеща информация за процеси.
# topДокато top работи натиснете клавиша h за помощ. Полезни ключове са:
kill или killall.
# ping -i 60 cb.vu > ping.log & [1] 4712 # kill -s TERM 4712 # същото като kill -15 4712 # killall -1 httpd # Прекъсва(убува) HUP процеси по точно име # pkill -9 http # Прекъсва TERM процеси по (част от) име # pkill -TERM -u www # Прекъсва TERM процеси принаглежащи на www # fuser -k -TERM -m /home # Прекъсва вески процес с достъп до /home (до стойност)Важни сиганли са:
HUP (затвори)INT (прекъсни)QUIT (излез)KILL (non-catchable, non-ignorable kill)TERM (software termination signal)Информация за диска | Зареждане | Използване на диска | Отворени файлове | Прикачване/Преприкачване | Прикачване на SMB | Прикачване на image | Запис на ISO | Създай image | Диск памет | Производителност на диска
chmod и chown.
Umask по подразбиране може да бъде променен за всички потребители в /etc/profile за
Linux или /etc/login.conf за FreeBSD. umask по подразбиране обикновено е 022.
umsak е извадена от 777, така umask 022 се променя в ограничение
755.
1 --x execute # Режим 764 = exec/read/write | read/write | read 2 -w- write # За: |-- Owner --| |- Group-| |Oth| 4 r-- read ugo=a u=потребител, g=група, o=други, a=всеки
# chmod [OPTION] MODE[,MODE] FILE # MODE е във формата [ugoa]*([-+=]([rwxXst])) # chmod 640 /var/log/maillog # Ограничава лог-а на -rw-r----- # chmod u=rw,g=r,o= /var/log/maillog # Същото като горе # chmod -R o-r /home/* # Рекурсивно премахва четенето за всички потребители # chmod u+s /path/to/prog # Слага SUID бит на изпълними (трябва да знаете какво правите!) # find / -perm -u+s -print # Открива всички програми със SUID бит # chown user:group /path/to/file # Променя потребителската и груповата собственост над файл # chgrp group /path/to/file # Променя собствеността на файл за групата
# diskinfo -v /dev/ad2 # Информация за диск (сектор/размер) FreeBSD # hdparm -I /dev/sda # Информация за IDE/ATA диск (Linux) # fdisk /dev/ad2 # Показва и манипулира таблицата на дяла (partition table) # smartctl -a /dev/ad2 # Показва SMART информацията на диска
# unload # load kernel.old # boot
# mount | column -t # Показва прикаченитеите файлови системи в системата # df # показва свободното място на диска и прикачените устройства # cat /proc/partitions # Показва всички регистрирани дялове (Linux)
# du -sh * # Размер на директориите като списък # du -csh # Общ размер на директорията за настоящата директория (тази, в която се намирате) # du -ks * | sort -n -r # Сортира всичко по размер в килобайти # ls -lSr # Показва файлове, най-големия последен
# umount /home/
umount: unmount of /home # umount е невъзможен, защото файл заключва home
failed: Device busy
# fstat -f /home # за точка на прикачане # fstat -p PID # за приложение с PID # fstat -u user # за потребителско имеОткрива отворен лог-файл (или отворени файлове), да речем за Xorg:
# ps ax | grep Xorg | awk '{print $1}'
1252
# fstat -p 1252
USER CMD PID FD MOUNT INUM MODE SZ|DV R/W
root Xorg 1252 root / 2 drwxr-xr-x 512 r
root Xorg 1252 text /usr 216016 -rws--x--x 1679848 r
root Xorg 1252 0 /var 212042 -rw-r--r-- 56987 w
Файлът с 212042 е единственият файл във /var:
# find -x /var -inum 212042 /var/log/Xorg.0.log
fuser или lsof:
# fuser -m /home # Показва процеси с достъп до /home
# lsof /home
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tcsh 29029 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home)
lsof 29140 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home)
Относно приложение:
ps ax | grep Xorg | awk '{print $1}'
3324
# lsof -p 3324
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log
Относно единичен файл:
# lsof /var/log/Xorg.0.log COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log
# mount /cdromИли намира устройство в /dev/ или с dmesg
# mount -v -t cd9660 /dev/cd0c /mnt # cd-устройство # mount_cd9660 /dev/wcd0c /cdrom # друг метод # mount -v -t msdos /dev/fd0c /mnt # флопиДекларирано в /etc/fstab:
# Device Mountpoint FStype Options Dump Pass# /dev/acd0 /cdrom cd9660 ro,noauto 0 0За да позволите на потребителите да го правят:
# sysctl vfs.usermount=1 # Или добавете реда "vfs.usermount=1" в /etc/sysctl.conf
# mount -t auto /dev/cdrom /mnt/cdrom # типична команда за прикачване на cdrom # mount /dev/hdc -t iso9660 -r /cdrom # типично IDE # mount /dev/sdc0 -t iso9660 -r /cdrom # типично SCSIДекларирано в /etc/fstab:
/dev/cdrom /media/cdrom subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec 0 0
# fdisk /dev/sda # Намира FreeBSD дяла /dev/sda3 * 5357 7905 20474842+ a5 FreeBSD # mount -t ufs -o ufstype=ufs2,ro /dev/sda3 /mnt /dev/sda10 = /tmp; /dev/sda11 /usr # Другите дялове
fsck например:
# mount -o remount,ro / # Linux # mount -o ro / # FreeBSDКопиране на сурови (неформатирани/необработени) данни от компакт диск в iso дисков образ:
# dd if=/dev/cd0c of=file.iso
# smbclient -U user -I 192.168.16.229 -L //smbshare/ # Показва споделените дялове
# mount -t smbfs -o username=winuser //smbserver/myshare /mnt/smbshare
# mount -t cifs -o username=winuser,password=winpwd //192.168.16.229/myshare /mnt/share
Допълнително с пакета mount.cifs е възможно да запишем акредитивите във файл, на пример /home/user/.smb:
username=winuser password=winpwdДобавяне на прикачване както следва:
# mount -t cifs -o credentials=/home/user/.smb //192.168.16.229/myshare /mnt/smbshare
# smbutil view -I 192.168.16.229 //winuser@smbserver # Показва споделените дялове
# mount_smbfs -I 192.168.16.229 //winuser@smbserver/myshare /mnt/smbshare
# mount -t iso9660 -o loop file.iso /mnt # Прикачване на CD образ # mount -t ext3 -o loop file.img /mnt # Прикачване на образ с ext3 fs
# mdconfig -a -t vnode -f file.iso -u 0
# mount -t cd9660 /dev/md0 /mnt
# umount /mnt; mdconfig -d -u 0 # Изчиства md устройството
Или с виртуален възел:
# vnconfig /dev/vn0c file.iso; mount -t cd9660 /dev/vn0c /mnt
# umount /mnt; vnconfig -u /dev/vn0c # Изчиства vn устройството
# lofiadm -a file.iso
# mount -F hsfs -o ro /dev/lofi/1 /mnt
# umount /mnt; lofiadm -d /dev/lofi/1 # Изчиства lofi устройство
conv=notrunc, образът ще бъде по-малък ако има по-малко съдържание на диска. Виж по-долу и dd примерите.
# dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notruncИзползвайте mkisofs за създаване на CD/DVD образ от файлове в директория. За да преодолеете ограниченията за имена на файловете: -r разрешава Rock Ridge разширения обичайни за UNIX системи, -J разрешава Joliet разширения използвани от Майкрософтски системи. -L разрешава ISO9660 имена на файловете да започват с период.
# mkisofs -J -L -r -V TITLE -o imagefile.iso /path/to/dirНа FreeBSD, mkisofs е открит в портовете в sysutils/cdrtools.
hw.ata.ata_dma="1" hw.ata.atapi_dma="1"Използвайте
burncd с ATAPI устройство (burncd е част от основната система) и cdrecord (в sysutils/cdrtools) със SCSI устройство.
# burncd -f /dev/acd0 data imagefile.iso fixate # За ATAPI устройство # cdrecord -scanbus # За откриване на записващото устройство (като 1,0,0) # cdrecord dev=1,0,0 imagefile.iso
cdrecord на Linux както е описано по-горе. Допълнително е възможно да използвате чистия ATAPI интерфейс, който се намира с:
# cdrecord dev=ATAPI -scanbusИ записване на CD/DVD както по-горе.
# dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300
bchunk програмаhttp://freshmeat.net/projects/bchunk/ може да направи това. Тя е във FreeBSD портовете в sysutils/bchunk.
# bchunk imagefile.bin imagefile.cue imagefile.iso
# dd if=/dev/random of=/usr/vdisk.img bs=1K count=1M # mdconfig -a -t vnode -f /usr/vdisk.img -u 1 # Създава устройство /dev/md1 # bsdlabel -w /dev/md1 # newfs /dev/md1c # mount /dev/md1c /mnt # umount /mnt; mdconfig -d -u 1; rm /usr/vdisk.img # Почиства md устройството
# dd if=/dev/zero of=/usr/vdisk.img bs=1024k count=1024
# mkfs.ext3 /usr/vdisk.img
# mount -o loop /usr/vdisk.img /mnt
# umount /mnt; rm /usr/vdisk.img # Почистване
/dev/zero е много по-бърз от urandom, но по-малко сигурен за криптиране.
# dd if=/dev/urandom of=/usr/vdisk.img bs=1024k count=1024 # losetup /dev/loop0 /usr/vdisk.img # Създава и асоциира /dev/loop0 # mkfs.ext3 /dev/loop0 # mount /dev/loop0 /mnt # losetup -a # Проверява използваните серии (loops) # umount /mnt # losetup -d /dev/loop0 # Отделяне # rm /usr/vdisk.img
# mount_mfs -o rw -s 64M md /memdisk # umount /memdisk; mdconfig -d -u 0 # Почиства md устройството md /memdisk mfs rw,-s64M 0 0 # /etc/fstab въвеждане
# mount -t tmpfs -osize=64m tmpfs /memdisk
# time dd if=/dev/ad4s3c of=/dev/null bs=1024k count=1000
# time dd if=/dev/zero bs=1024k count=1000 of=/home/1Gb.file
# hdparm -tT /dev/hda # Само за Linux
Рутиране | Допълнително IP | Промяна на MAC | Портове | Firewall | IP Препращане | NAT | DNS | DHCP | Трафик | QoS | NIS
# mii-diag eth0 # Покажи статуса на връзката(Linux) # ifconfig fxp0 # Проверка на "media" полето в FreeBSD # arp -a # Проверка на рутер (или хост) ARP записа (вс. OS) # ping cb.vu # Първото нещо дето пробваме... # traceroute cb.vu # Покажи пътя на рутиране до дестинациата # mii-diag -F 100baseTx-FD eth0 # Форсиране на 100Mbit Full duplex (Linux) # ifconfig fxp0 media 100baseTX mediaopt full-duplex # Същото за FreeBSD # netstat -s # Системна статистика за всички мрежови протоколи
# route -n # Linux # netstat -rn # Linux, BSD и UNIX # route print # Windows
# route add 212.117.0.0/16 192.168.1.1 # route delete 212.117.0.0/16 # route add default 192.168.1.1Добавяне на перманентно рутиране в /etc/rc.conf
static_routes="myroute" route_myroute="-net 212.117.0.0/16 192.168.1.1"
# route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.16.254 # ip route add 192.168.20.0/24 via 192.168.16.254 # същото с ip рутиране # route add -net 192.168.20.0 netmask 255.255.255.0 dev eth0 # route add default gw 192.168.51.254 # ip route add default via 192.168.51.254 # същото с ip рутиране # route delete -net 192.168.20.0 netmask 255.255.255.0
# Route add 192.168.50.0 mask 255.255.255.0 192.168.51.253 # Route add 0.0.0.0 mask 0.0.0.0 192.168.51.254Използвай add -p за перманентно рутиране.
# ifconfig eth0 192.168.50.254 netmask 255.255.255.0 # Първи IP # ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0 # Втори IP
# ifconfig fxp0 inet 192.168.50.254/24 # Първи IP # ifconfig fxp0 alias 192.168.51.254 netmask 255.255.255.0 # Втори IPПерманентно добавяне в /etc/rc.conf
ifconfig_fxp0="inet 192.168.50.254 netmask 255.255.255.0" ifconfig_fxp0_alias0="192.168.51.254 netmask 255.255.255.0"
# ifconfig eth0 hw ether 00:01:02:03:04:05 # Linux # ifconfig fxp0 link 00:01:02:03:04:05 # FreeBSD
# netstat -an | grep LISTEN # lsof -i # Linux списък на всички интернет връзки # socklist # Linux списък на всички отворени гнезда/сокети # sockstat -4 # FreeBSD списък на приложенията # netstat -anp --udp --tcp | grep LISTEN # Linux # netstat -tup # Списък на активните връзки от/към системата (Linux) # netstat -tupl # Списък на слушащите портове (Linux) # netstat -ano # Windows
# iptables -L -n -v # Статус Отваране на iptables защитна стена # iptables -Z # Нулиране на пакетите и байтовите броячи във всички правила # iptables -F # Нулиране на всички правила # iptables -X # Изтриване на всички правила # iptables -P INPUT ACCEPT # Отваряне на всичко # iptables -P FORWARD ACCEPT # iptables -P OUTPUT ACCEPT
# ipfw show # Статус # ipfw list 65535 # ако отговора е "65535 deny ip from any to any" защитната стена е изключена # sysctl net.inet.ip.fw.enable=0 # Изключване # sysctl net.inet.ip.fw.enable=1 # Включване
# cat /proc/sys/net/ipv4/ip_forward # Проверка на IP препращане 0=изключено, 1=включено
# echo 1 > /proc/sys/net/ipv4/ip_forward
or edit /etc/sysctl.conf with:
net.ipv4.ip_forward = 1
# sysctl net.inet.ip.forwarding # Проверка на IP препращане 0=изключено, 1=включено # sysctl net.inet.ip.forwarding=1 # sysctl net.inet.ip.fastforwarding=1 # За посветен рутер или защитна стена Перманентно добавяне в /etc/rc.conf: gateway_enable="YES" # Поставяне на YES ако хоста ще е gateway.
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # за активиране на NAT # iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 20022 -j DNAT \ --to 192.168.16.44:22 # Препращане на порт 20022 към вътрешен IP порт на ssh # iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 993:995 -j DNAT \ --to 192.168.16.254:993:995 # Препращане на портове в обхвата 993-995 # ip route flush cache # iptables -L -t nat # Проверка на NAT статусаИзтриване на препращането с -D вместо -A.
# natd -s -m -u -dynamic -f /etc/natd.conf -n fxp0 Or edit /etc/rc.conf with: firewall_enable="YES" # Поставяме YES за включване на защитната стена firewall_type="open" # Тип защитна стена (виж /etc/rc.firewall) natd_enable="YES" # Включване на natd (ако firewall_enable == YES). natd_interface="tun0" # Публичен интерфейс или IP адрес за използване. natd_flags="-s -m -u -dynamic -f /etc/natd.conf"Препращане на портове:
# cat /etc/natd.conf
same_ports yes
use_sockets yes
unregistered_only
# redirect_port tcp insideIP:2300-2399 3300-3399 # обхват на портовете
redirect_port udp 192.168.51.103:7777 7777
nameserver 78.31.70.238 search sleepyowl.net intern.lab domain sleepyowl.netПроверка на името на домейна с:
# hostname -d # Същото като dnsdomainname
# ipconfig /? # Помощ # ipconfig /all # Цялата информация вкл. DNS # ipconfig /flushdns # Изтриване на DNS кеша
213.133.105.2 ns.second-ns.de може да се използва за тест. Вижте от кой сървър клиента получава отговор (упростен отговор).
# dig sleepyowl.net sleepyowl.net. 600 IN A 78.31.70.238 ;; SERVER: 192.168.51.254#53(192.168.51.254)Рутерът 192.168.51.254 отговоря и отговорът е A запис. Всеки запис може да бъде извикан и DNS сървърът може да се избере с @:
# dig MX google.com # dig @127.0.0.1 NS sun.com # За тест на локалния сървър # dig @204.97.212.10 NS MX heise.de # Заявка към външен сървър # dig AXFR @ns1.xname.org cb.vu # Получаване на цялата зона(трансфер на зона)Програмата host също е мощна.
# host -t MX cb.vu # Получаване на пощенските MX записи # host -t NS -T sun.com # получаване на NS запис през TCP връзка # host -a sleepyowl.net # Получаване на всичко
dig, host и nslookup:
# dig -x 78.31.70.238 # host 78.31.70.238 # nslookup 78.31.70.238
named локално за разрешаване на заявките по имена. Форматът е прост, например:
78.31.70.238 sleepyowl.net sleepyowlПриоритетът между hosts и dns заявка, т.е. редът на резолюцията по име, може да се конфигурира в
/etc/nsswitch.conf * И * /etc/host.conf. Файлът съществува и във Windows, обикновено в:
C:\WINDOWS\SYSTEM32\DRIVERS\ETC
# dhcpcd -n eth0 # Предизвиква обновяване # dhcpcd -k eth0 # освобождаване и изключванеОбхвата с пълната информация се намира в:
/var/lib/dhcpcd/dhcpcd-eth0.info
# dhclient bge0Обхвата с пълната информация се намира в:
/var/db/dhclient.leases.bge0Използвайте
/etc/dhclient.confза настройка на опциите или поставяне на други опции:
# cat /etc/dhclient.conf
interface "rl0" {
prepend domain-name-servers 127.0.0.1;
default domain-name "sleepyowl.net";
supersede domain-name "sleepyowl.net";
}
ipconfig:
# ipconfig /renew # обновяване на всички адаптери # ipconfig /renew LAN # обновяване на адаптера "LAN" # ipconfig /release WLAN # освобождаване на адаптера "WLAN"Да, добра идея е да си именувате адаптера с просто име!
# tcpdump -nl -i bge0 not port ssh and src \(192.168.16.121 or 192.168.16.54\) # tcpdump -l > dump && tail -f dump # Буфериран изход # tcpdump -i rl0 -w traffic.rl0 # Записване на трафика в бинарен файл # tcpdump -r traffic.rl0 # Четене от файл (също за ethereal # tcpdump port 80 # Две класически команди # tcpdump host google.com # tcpdump -i eth0 -X port \(110 or 143\) # Проверка дали pop или imap са сигурни # tcpdump -n -i eth0 icmp # Записване само на ping # tcpdump -i eth0 -s 0 -A port 80 | grep GET # -s 0 за пълен пакет -A за ASCIIОще важни опции:
-A Показва всеки пакет в текстов вид (без "шапка")-X Показва пакетите в hex и ASCII-l Буферира стандартния изход-D Показва достъпните интерфейси# nmap cb.vu # сканира всички резервирани TCP портове на хоста # nmap -sP 192.168.16.0/24 # Показва кой IP е използван от кой хост в 0/24 # nmap -sS -sV -O cb.vu # Прави невидимо SYN сканиране със версия и OS детекция PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.8.1p1 FreeBSD-20060930 (protocol 2.0) 25/tcp open smtp Sendmail smtpd 8.13.6/8.13.6 80/tcp open http Apache httpd 2.0.59 ((FreeBSD) DAV/2 PHP/4. [...] Running: FreeBSD 5.X Uptime 33.120 days (since Fri Aug 31 11:41:04 2007)
# tc qdisc add dev eth0 root tbf rate 480kbit latency 50ms burst 1540 # tc -s qdisc ls dev eth0 # Статус # tc qdisc del dev eth0 root # Изтриване на опашката # tc qdisc change dev eth0 root tbf rate 220kbit latency 50ms burst 1540
dummynet трафик оформител, който се конфигурира с ipfw. Използват се потоци за натройка на лимитите на лентата в [K|M]{bit/s|Byte/s}, 0 означава неограничена лента. Използването на същия номер поток ще преконфигурира съществуващия. Например ограничаване на ъплоуд лентата до 500 Kbit.
# kldload dummynet # зареждане на модула ако е необходимо # ipfw pipe 1 config bw 500Kbit/s # създаване на поток с ограничена лента # ipfw add pipe 1 ip from me to any # отклоняване на пълния ъплоуд към потока
tc за оптимизация на VoIP. Пълния пример може да се види на voip-info.org или www.howtoforge.com. Предполага се, че VoIP използва udp на портове 10000:11024 и устройство eth0 (може да бъде и ppp0 или so). Следващите команди дефинират QoS в три опашки и принуждават VoIP трафика в опашка 1 с QoS 0x1e (всички битове са вдигнати). Трафика по подразбиране тече в опашка 3 и QoS Minimize-Delay тече в опашка 2.
# tc qdisc add dev eth0 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0 # tc qdisc add dev eth0 parent 1:1 handle 10: sfq # tc qdisc add dev eth0 parent 1:2 handle 20: sfq # tc qdisc add dev eth0 parent 1:3 handle 30: sfq # tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \ match ip dport 10000 0x3C00 flowid 1:1 # използва сървърния обхват портове match ip dst 123.23.0.1 flowid 1:1 # или/и използва сървърния IPСтатус и премахване с
# tc -s qdisc ls dev eth0 # статус на опашката # tc qdisc del dev eth0 root # изтриване на всички QoS
# 2^13 (8192) < 10000 < 2^14 (16384) # краят е 2^14 = 16384 # echo "obase=16;(2^14)-1024" | bc # маската е 0x3C00
# ipfw pipe 1 config bw 500Kbit/s # ipfw queue 1 config pipe 1 weight 100 # ipfw queue 2 config pipe 1 weight 10 # ipfw queue 3 config pipe 1 weight 1 # ipfw add 10 queue 1 proto udp dst-port 10000-11024 # ipfw add 11 queue 1 proto udp dst-ip 123.23.0.1 # или/и използване на сървърен IP # ipfw add 20 queue 2 dsp-port ssh # ipfw add 30 queue 3 from me to any # всичко останалоСтатус и изтриване с
# ipfw list # статус на правилата # ipfw pipe list # статус на потока # ipfw flush # изтриване на всички правила освен по подразбиране
# ypwhich # показва името на NIS към който има връзка # domainname # NIS домейн името по конфигурация # ypcat group # показва групата от NIS сървъра # cd /var/yp && make # Построява наново yp базата данниРаботи ли ypbind?
# ps auxww | grep ypbind /usr/sbin/ypbind -s -m -S servername1,servername2 # FreeBSD /usr/sbin/ypbind # Linux # yppoll passwd.byname Map passwd.byname has order number 1190635041. Mon Sep 24 13:57:21 2007 The master server is servername.domain.net.
# cat /etc/yp.conf ypserver servername domain domain.net broadcast
Публичен ключ | Отпечатък | SCP | Тунелиране
~/.ssh/id_dsa е частния ключ, ~/.ssh/id_dsa.pub е публичния.~/.ssh/authorized_keys2 във вашата домашна директория на сървъра.# ssh-keygen -t dsa -N '' # cat ~/.ssh/id_dsa.pub | ssh you@host-server "cat - >> ~/.ssh/authorized_keys2"
# cd ~/.ssh # ssh-keygen -i -f keyfilename.pub >> authorized_keys2
# scp .ssh/puttykey.pub root@192.168.51.254:.ssh/
# cd ~/.ssh # ssh-keygen -i -f puttykey.pub >> authorized_keys2
ssh-keygen -l да получите отпечатък (на сървъра):
# ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub # За RSA ключ 2048 61:33:be:9b:ae:6c:36:31:fd:83:98:b7:99:2d:9f:cd /etc/ssh/ssh_host_rsa_key.pub # ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub # За DSA ключ (подразбиране) 2048 14:4a:aa:d9:73:25:46:6d:0a:48:35:c7:f4:16:d4:ee /etc/ssh/ssh_host_dsa_key.pubСега клиента свързващ се към този сървър може да провери че се свързва към правилния сървър:
# ssh linda The authenticity of host 'linda (192.168.16.54)' can't be established. DSA key fingerprint is 14:4a:aa:d9:73:25:46:6d:0a:48:35:c7:f4:16:d4:ee. Are you sure you want to continue connecting (yes/no)? yes
# scp file.txt host-two:/tmp # scp joe@host-two:/www/*.html /www/tmp # scp -r joe@host-two:/www /www/tmpВ Konqueror или Midnight Commander е възможно да се достигне отдалечена файлова система с адрес fish://user@gate. Обаче скоростта е много ниска.
# ssh -L localport:desthost:destport user@gate # хост-дестинация видян от гейта # ssh -R destport:desthost:localport user@gate # изпраща вашия локален порт към дестинация # ssh -X user@gate # Форсиране на X изпращанеТова ще се свърже към гейта и ще изпрати локален порт към хоста desthost:destport. Забележете desthost е хоста дестинация видян откъм гейта, така че ако връзката е към гейта, то desthost е localhost. Може да се изпрати повече от един порт.
# ssh -L 2401:localhost:2401 -L 8080:localhost:80 user@gate
# ssh -L 139:smbserver:139 -L 3388:smbserver:3389 user@gatesmb споделянето сега може да бъде достъпено с \\127.0.0.1\, но само ако локалното споделяне е изключено, защотолокалното споделяне слуша на порт 139.
# ssh -R 2022:localhost:22 user@gate # изпраща клиент 22 към гейта:2022
На клиента cliadmin (от хоста към гейта):
# ssh -L 3022:localhost:2022 admin@gate # изпраща клиент 3022 към гейта:2022
Сега администратора може да се свърже директно към клиента cliuser със:
# ssh -p 3022 admin@localhost # локален:3022 -> гейт:2022 -> клиент:22
# ssh -R 15900:localhost:5900 user@gateНа клиента cliadmin (от хоста към гейта):
# ssh -L 5900:localhost:15900 admin@gateСега администратора може да се свърже директно към клиентския VNC със:
# vncconnect -display :0 localhost
PermitRootLogin yes PermitTunnel yes
cli># ssh -w5:5 root@hserver srv># ifconfig tun5 10.0.1.1 netmask 255.255.255.252 # Изпълнено в сървърен шел
cli># ssh -w5:5 root@hserver srv># ifconfig tun5 10.0.1.1 10.0.1.2 # Изпълнено в сървърен шел
cli># ifconfig tun5 10.0.1.2 netmask 255.255.255.252 # Клиента е на Linux cli># ifconfig tun5 10.0.1.2 10.0.1.1 # Клиента е на FreeBSDДвата хоста сега са свързани и могат прозрачно да комуникират със всеки протокол от 3/4 слой, използвайки тунелни IP адреси.
gateA># ssh -w5:5 root@gateB gateB># ifconfig tun5 10.0.1.1 netmask 255.255.255.252 # Изпълнено в шел-а на гейтB gateB># route add -net 192.168.51.0 netmask 255.255.255.0 dev tun5 gateB># echo 1 > /proc/sys/net/ipv4/ip_forward # Само ако гейта не е дефолт gateB># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
gateA># ssh -w5:5 root@gateB # Създава tun5 устройство gateB># ifconfig tun5 10.0.1.1 10.0.1.2 # Изпълнено в шел-а на гейтB gateB># route add 192.168.51.0/24 10.0.1.2 gateB># sysctl net.inet.ip.forwarding=1 # Само ако гейта не е дефолт gateB># natd -s -m -u -dynamic -n fxp0 # виж NAT gateA># sysctl net.inet.ip.fw.enable=1
gateA># ifconfig tun5 10.0.1.2 netmask 255.255.255.252 gateA># route add -net 192.168.16.0 netmask 255.255.255.0 dev tun5 gateA># echo 1 > /proc/sys/net/ipv4/ip_forward gateA># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
gateA># ifconfig tun5 10.0.1.2 10.0.1.1 gateA># route add 192.168.16.0/24 10.0.1.2 gateA># sysctl net.inet.ip.forwarding=1 gateA># natd -s -m -u -dynamic -n fxp0 # виж NAT gateA># sysctl net.inet.ip.fw.enable=1Двете частни мрежи сега са прозрачно свързани през SSH VPN. IP препращането и NAT насторйките са необходими само ако гейтовете не са по подразбиране (дефолт). В този случай клиентите не биха знали къде да препратят заявка, заради което трябва да се активира NAT.
# rsync -a /home/colin/ /backup/colin/
# rsync -a /var/ /var_bak/
# rsync -aR --delete-during /home/user/ /backup/ # използване на относителност (виж надолу)
Като предишното, но по мрежа и с компресия. Rsync използва SSH за транспорт по подразбиране и ще ползва ssh ключ ако има. Използвайте ":" като с SCP. Типично отдалечено копиране:
# rsync -axSRzv /home/user/ user@server:/backup/user/Изключване на всяка директория tmp във /home/user/ и съхраняване на иерархията на директориите, т.е. отдалечената директория ще има структура /backup/home/user/. Типично се използва за бекъп.
# rsync -azR --exclude /tmp/ /home/user/ user@server:/backup/Използване на порт 20022 за ssh връзка:
# rsync -az -e 'ssh -p 20022' /home/colin/ user@server:/backup/colin/Използване на rsync daemon (със "::") е много по-бързо, но не е криптирано с ssh. Мястото на /backup е дефинирано от конфигурацията в /etc/rsyncd.conf. Променливата RSYNC_PASSWORD може да бъде дефинирана за избягване ръчното и въвеждане.
# rsync -axSRz /home/ ruser@hostname::rmodule/backup/
# rsync -axSRz ruser@hostname::rmodule/backup/ /home/ # Копиране назад
Важни опции:
-a, --archive архивен режим; като -rlptgoD (без -H)-r, --recursive рекурсивно в директориите-R, --relative използване на относителни имена-H, --hard-links запазване на хард-връзките-S, --sparse ефективна работа със пръснати файлове-x, --one-file-system без да напуска файловата система --exclude=PATTERN изключва файлове съвпадащи с PATTERN --delete-during получателя изтрива по време на трансфера, не преди --delete-after получателя изтрива след трансфера, не предиrsync и ssh ще са достъпни в Windows команден шел.
# ssh-keygen -t dsa -N '' # Създава пбличен и частен ключ # rsync user@server:.ssh/authorized_keys2 . # Копирайте файла локално от сървъра # cat id_dsa.pub >> authorized_keys2 # Или използвайте редактор за добавяне на ключа # rsync authorized_keys2 user@server:.ssh/ # Копиране файловете обратно на сървъра # del authorized_keys2 # Изтриване на локалното копиеСега тест (на един ред):
rsync -rv "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \ 'user@server:My\ Documents/'
@ECHO OFF REM rsync the directory My Documents SETLOCAL SET CWRSYNCHOME=C:\PROGRAM FILES\CWRSYNC SET CYGWIN=nontsec SET CWOLDPATH=%PATH% REM uncomment the next line when using cygwin SET PATH=%CWRSYNCHOME%\BIN;%PATH% echo Press Control-C to abort rsync -av "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \ 'user@server:My\ Documents/' pause
# sudo /etc/init.d/dhcpd restart # Изпълнява rc скрипта като root # sudo -u sysadmin whoami # Изпълнява cmd като друг потребител user
/etc/sudoers може да бъде променен само с visudo. Основния синтаксис е (списъците са разделени със запетая):
user hosts = (runas) commands # В /etc/sudoers
users един или повече потребители, или %group (като %wheel) да получат праватаhosts списък на хостовете (или ALL)runas списък на потребителите (или ALL) като които правилото за команда може да бъде изпълнено. Оградено е със ( )!commands списък на командите (или ALL) които ще бъдат изпълнени като root или като (runas)# cat /etc/sudoers # Хост наимернования са subnets или hostnames. Host_Alias DMZ = 212.118.81.40/28 Host_Alias DESKTOP = work1, work2 # Потребителски наименования са списък от потребители, които могат да имат еднакви права User_Alias ADMINS = colin, luca, admin User_Alias DEVEL = joe, jack, julia Runas_Alias DBA = oracle,pgsql # Команда наименование дефинира пълния път до списък с команди Cmnd_Alias SYSTEM = /sbin/reboot,/usr/bin/kill,/sbin/halt,/sbin/shutdown,/etc/init.d/ Cmnd_Alias PW = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root # Not root pwd! Cmnd_Alias DEBUG = /usr/sbin/tcpdump,/usr/bin/wireshark,/usr/bin/nmap
# Актуалните права root,ADMINS ALL = (ALL) NOPASSWD: ALL # ADMINS могат да правят всичко с/без парола. DEVEL DESKTOP = (ALL) NOPASSWD: ALL # Разработчици има пълни права на десктопи DEVEL DMZ = (ALL) NOPASSWD: DEBUG # Разработчици могат да дебъгват DMZ сървърите. # Потребител sysadmin (системен администратор) може да се бърка в DMZ сървърите с някои команди. sysadmin DMZ = (ALL) NOPASSWD: SYSTEM,PW,DEBUG sysadmin ALL,!DMZ = (ALL) NOPASSWD: ALL # Може да прави всичко извън DMZ. %dba ALL = (DBA) ALL # Група dba може да стартира като потребител на базата данни. # Всеки може да прикачва/откача cd-устройство на десктоп машини ALL DESKTOP = NOPASSWD: /sbin/mount /cdrom,/sbin/umount /cdrom
# openssl des -salt -in file -out file.des # openssl des -d -salt -in file.des -out fileЗабележете, че файла разбира се може да бъде и tar архив.
# tar -cf - directory | openssl des -salt -out directory.tar.des # Криптира # openssl des -d -salt -in directory.tar.des | tar -x # Декриптира
# tar -zcf - directory | openssl des -salt -out directory.tar.gz.des # Криптира # openssl des -d -salt -in directory.tar.gz.des | tar -xz # Декриптира
Linux с LUKS | Linux само dm-crypt | FreeBSD GELI | FBSD само pwd
Има (много) други алтернативни методи за криптиране на дискове, аз показвам само методите, които знам и използвам. Имайте предвид, че сигурността е само тогава добра, когато операционната система не е калена с това. Нарушител може лесно да запише паролата от клавиатурните събития. Още повече данните са свободно достъпни когато дялът е прикрепена и на този етап няма да откаже достъп до нея на нарушител.dm-crypt в Linux (device-mapper) удобства налични в 2.6 ядро. В този пример нека криптираме дяла /dev/sdc1, това може да бъде и всеки друг дял от диска или USB, или файлово базиран дял, създаден с losetup. В този случай ще използваме /dev/loop0. Виж файл снимка на дял. Картографът на устройствата използва етикети за идентифициране на дял. Ние използваме sdc1 в този пример, но това може да бъде всеки стринг.
# cryptsetup --help, ако не се появи нищо относно LUKS, използвайте следните инструкции Без LUKS. Първо създайте дял ако е необходим: fdisk /dev/sdc.
# dd if=/dev/urandom of=/dev/sdc1 # Незадължително. Само за параноиди (отнема дни) # cryptsetup -y luksFormat /dev/sdc1 # Това унищожава всякакви данни на sdc1 # cryptsetup luksOpen /dev/sdc1 sdc1 # mkfs.ext3 /dev/mapper/sdc1 # създава ext3 файлова система # mount -t ext3 /dev/mapper/sdc1 /mnt # umount /mnt # cryptsetup luksClose sdc1 # Откача криптирания дял
# cryptsetup luksOpen /dev/sdc1 sdc1 # mount -t ext3 /dev/mapper/sdc1 /mnt
# umount /mnt # cryptsetup luksClose sdc1
# cryptsetup -y create sdc1 /dev/sdc1 # или всеки друг дял като /dev/loop0 # dmsetup ls # проверете, ще покаже: sdc1 (254, 0) # mkfs.ext3 /dev/mapper/sdc1 # Това се прави само първият път! # mount -t ext3 /dev/mapper/sdc1 /mnt # umount /mnt/ # cryptsetup remove sdc1 # Откача криптираният дялНаправете абсолютно същото (без mkfs частта!) за да пре-прикачите дяла. Ако паролата е грешна, mount командата няма да бъде изпълнена. В този случай просто премахнете sdc1 (
cryptsetup remove sdc1) и го създайте пак.
gbde и geli. Аз използвам geli, защото е по-бърз и освен това използва crypto устройства за хардуерно ускорение. Вижe FreeBSD handbook Chapter 18.6http://www.freebsd.org/handbook/disks-encrypting.html за всички детайли. geli модулът трябва да бъде зареден или компилиран в ядрото:
options GEOM_ELI device crypto # или като module: # echo 'geom_eli_load="YES"' >> /boot/loader.conf # или изпълнете: kldload geom_eli
/root/ad1.key, за да прикачите дялът. Главният ключ е записан в дяла и не е достъпен. Виж по-долу за типично USB или файлово базирана снимка.
# dd if=/dev/random of=/root/ad1.key bs=64 count=1 # този ключ криптира главният ключ # geli init -s 4096 -K /root/ad1.key /dev/ad1 # -s 8192 също е добре за дискове # geli attach -k /root/ad1.key /dev/ad1 # ДА направете бекъп на /root/ad1.key # dd if=/dev/random of=/dev/ad1.eli bs=1m # Незадължително и отнема повече време # newfs /dev/ad1.eli # Създава файлова система # mount /dev/ad1.eli /mnt
# geli attach -k /root/ad1.key /dev/ad1
# fsck -ny -t ffs /dev/ad1.eli # При съмнение проверете файловата система
# mount /dev/ad1.eli /mnt
# umount /mnt # geli detach /dev/ad1.eli
# grep geli /etc/rc.conf geli_devices="ad1" geli_ad1_flags="-k /root/ad1.key" # grep geli /etc/fstab /dev/ad1.eli /home/private ufs rw 0 0
/cryptedfile от 1 GB.
# dd if=/dev/zero of=/cryptedfile bs=1M count=1000 # 1 GB file # mdconfig -at vnode -f /cryptedfile # geli init /dev/md0 # криптира само с парола # geli attach /dev/md0 # newfs -U -m 0 /dev/md0.eli # mount /dev/md0.eli /mnt # umount /dev/md0.eli # geli detach md0.eliСега е възможно да прикачите тази снимка на друга файлова система само с паролата.
# mdconfig -at vnode -f /cryptedfile # geli attach /dev/md0 # mount /dev/md0.eli /mnt