Все о реестре Regedit / All about registry

Cоздание установочной USB-флэш с системой Windows 7

22 октября 2009 года поступила в продажу новая операционная система от компании Microsoft: Windows 7. В этот день огромное количество людей писало в различных блогах о том, как сильно они ждут открытия магазинов, чтобы купить коробку с новой системой. Фотографии очередей, заметки о первом покупателе в Австралии, видео от других счастливых покупателей. Взаимные поздравления в Твиттере и прочих социальных сетях. В общем, сегодня для многих был праздник. Отчасти этот “праздник” даже напоминал Новый Год. Но в каком-то роде, это даже не Новый Год, а Новая Эра. Столь ожидаема была эта дата – 22 октября.

К сожалению, в России нет настолько развитой системы продаж настольных продуктов от Microsoft, как во многих западных странах. У нас, фактически, доступно только 2 варианта приобретения Windows 7. Покупка или Retail или OEM версии. Хотя последняя, как понимаете, вообще не должна продаваться конечному покупателю, кроме как в составе нового компьютера. Вариантов апгрейда для домашнего пользователя в России для системы Windows 7 пока не предвидится (но это не значит, что их не будет). В других же странах апгрейд-пакет – нормальное явление. Его можно купить в виде коробки в магазине, или же скачать в виде ISO-образа, при покупке в интернет-магазине http://store.microsoft.com/.

Но, одно дело, если покупатель обладает стационарным компьютером или ноутбуком. В этом случае в компьютере, как правило, есть пишущий DVD-привод. Записать ISO-образ на диск очень легко. А как быть покупателю, если он обладает только нетбуком? Нетбуки – устройства, форм-фактор которых подразумевает повышенную портативность: их вес, как правило, не превышает полутора килограмм, а размер экрана не больше 11 дюймов. Тот, кто видел нетбук вживую, согласится со мной, что устройство чтения DVD просто не поместится в этом маленьком компьютере. А даже если б и поместилось, увеличило бы вес нетбука и, естественно, его стоимость, что сведет на нет основные преимущества нетбуков: малый вес и низкую стоимость.

Решением вопроса с установкой Windows 7 на устройства без DVD-привода является создание USB-диска с образом системы. Это может быть как USB-флэш, так и внешний USB-HDD. Единственное условие, размер такого диска должен быть не меньше, чем размер образа установочного диска. Учитывая, что размер файла-образа версии Ultimate x86 составляет примерно 2,3Гб, а такого же диска, но для x64 систем – 3Гб, для решения вопроса достаточно иметь USB-флэш размером в 4Гб.

Я расскажу о двух способах подготовки загрузочной флэшки.

XCOPY


Для реализации этого способа всё же понадобится DVD-привод. Я предполагаю, что у владельца нетбука есть друзья и знакомые - владельцы компьютеров с пишущими приводами, которые согласятся помочь с записью диска из файла-образа. Или же сразу приступить к созданию загрузочной флэшки, если система была куплена в виде "коробки".

Также, для файла-образа можно использовать программу, создающую виртуальный DVD-привод в системе.

Сначала нам надо подготовить флэшку с помощью консольной утилиты diskpart. Для её выполнения нам понадобится запустить командную консоль с правами Администратора. Вставьте флэш-диск в компьютер.

Далее в командной строке следует выполнить ввод следующих команд:

C:\diskpart //запуск утилиты diskpart

DISKPART> list disk //просмотр списка дисков.

DISKPART> select disk # //выбор флэшки, # – номер диска из списка

DISKPART> clean //очистка диска

DISKPART>create partition primary //создание раздела на диске

DISKPART>active //назначение раздела активным

DISKPART>format fs=ntfs quick //форматирование диска

DISKPART>assign //назначение диска в системе, присвоение имени диска

DISKPART>exit //выход из контекста утилиты diskpart

C:\


Увеличить рисунок

Рисунок 1. Работа утилиты diskpart. USB-флэш под номером 2.

Не закрывайте командную консоль, она нам ещё пригодится.

После того, как флэшка была подготовлена для записи данных с установочного диска, пора приступать непосредственно к копированию. Вставьте установочный диск в DVD-привод, или смонтируйте файл-образ диска в виртуальный DVD-привод.

В консоли введите команду

xcopy e:\*.* /s /e /f /i g:

В данной команде: e: - DVD-привод, g: - usb-флэш

После ввода команды начнётся копирование данных с установочного диска на флэшку в том же виде как есть на диске, то есть, с полным сохранением структуры файлов и каталогов.

После окончания копирования, можно извлечь флэшку из компьютера. Перед Вами полная копия установочного диска с системой Windows 7. Этот способ может применяться и для подготовки установочной флэшки с Windows Vista.

Windows 7 USB/DVD Download Tool


22 октября 2009 года, в день появления в продаже операционной системы Windows 7, сама компания Microsoft, учитывая весьма не тривиальный способ установки операционной системы на устройство, не оснащённое устройством чтения DVD, выпустила утилиту, которая способна в несколько нажатий кнопки мыши создать из файла-образа установочного диска загрузочную флэшку. Саму утилиту можно скачать здесь.

Эта программа называется Windows 7 USB/DVD Download Tool. Она изначально предназначена именно для владельцев нетбуков, но, естественно, воспользоваться ею может любой человек. Главное, чтобы у этого человека была флэшка и файл-образ установочного диска. Помимо флэшки, утилита может подготовить и загрузочный DVD. То есть это – универсальная утилита для подготовки источника установки операционной системы. Работа программы обеспечивается на всех актуальных на данный момент операционных системах от компании Microsoft, а именно: Windows XP SP2\SP3, Windows Vista или Windows 7.

После скачивания утилиты, произведите установку. Программа появится в главном меню. Запустите утилиту от имени Администратора.

Дальше всё происходит очень просто. 4 шага:

1. Выбор файла-образа для обработки. Нажмите Browse и найдите нужный файл-образ. Для перехода на следующий шаг, нажмите Next.


Увеличить рисунок

Рисунок 2. Выбор ISO- файла.

2. Выбор непосредственно устройства, из которого будет создаваться загрузочный источник. Нажмите USB device или DVD, для выбора способа подготовки источника установки: флэшка или DVD, соответственно.


Увеличить рисунок

Рисунок 3. Выбор типа носителя.

3. В зависимости от выбранного на шаге 2 варианта, выберите или нужный USB-накопитель (флэшку) или DVD привод. Для начала создания источника, нажмите Begin copying.


Увеличить рисунок

Рисунок 4. Выбор устройства USB.

4. Осталось только дождаться окончания процесса, в конце которого Вы получите полностью готовый источник. Если выбиралась флэшка, то результат будет абсолютно идентичен результату из первого способа.



Рисунок 5. Создание загрузочной флэшки.

Кнопка Start over на шагах с 1 по 3 позволяет отменить выбранные действия и вернуться на шаг 1.

Заключение


Первый способ поможет подготовить флэшку, если в наличии есть установочный DVD, второй – очень прост и не даст возможности совершить ошибку, например, ошибиться в номере диска, и, не заметив этого, отформатировать другой диск с данными. Но он может работать только с файлами образов.

Подготовка флэшки занимает около 20-ти минут, но при этом Вы получите очень полезный носитель, который пригодится не только для установки, но и для хранения копии установочного DVD.

Остаётся только включить в BIOS загрузку компьютера с USB-устройства, вставить флэшку, загрузиться с неё и …. начать процесс установки.

 

Обновлено 28.05.2010 12:28
 

Установка MySQL

Установка MySQL

Автор: lissyara.
Оригинал: http://www.lissyara.su/articles/freebsd/programms/mysql/


Опять статья навеянная многочислеными просьбами трудящихся :) Заодно не придётся во всех новых статьях описывать установку MySQL :) Так что, в любом случае пригодится. Вообще, с MySQL вроде всё просто, но почему-то народ активно морозится баз данных, используя системных юзеров в почте, да всякие файлы текстовые, под почту да хранение трафика. Хотя с БД оно всё на порядок удобней получается.
Итак, рассматривать будем установку и небольшую настройку двух версий MySQL - 5.0 и 3.23 под FreeBSD6.0. Почему именно они? На данный момент, 5.1 вроде всё ещё бета, потому используется на рабочих серверах только отъявленными маньяками, или теми у кого есть необходимость. А вот 3.23 нужна в случаях, когда на какой-нить старенькой машинке нужна "записная книжка" для почтовых юзеров, да БД куда складывать статистику по траффику инета, например. Подымать для этого 5.0 или 4.1 - расточительство оперативки и ресурсов слабенькой машинки. У меня и на некоторых, очень хороших машинах, стоит 3.23 - ибо его хватает.
Итак, ставим 5.0/usr/home/lissyara/>cd /usr/ports/databases/mysql50-server/
/usr/ports/databases/mysql50-server/>make
===> Vulnerability check disabled, database not found

You may use the following build options:

WITH_CHARSET=charset Define the primary built-in charset (latin1).
WITH_XCHARSET=list Define other built-in charsets (may be 'all').
WITH_COLLATION=collate Define default collation (latin1_swedish_ci).
WITH_OPENSSL=yes Enable secure connections.
WITH_LINUXTHREADS=yes Use the linuxthreads pthread library.
WITH_PROC_SCOPE_PTH=yes Use process scope threads
(try it if you use libpthread).
BUILD_OPTIMIZED=yes Enable compiler optimizations
(use it if you need speed).
BUILD_STATIC=yes Build a static version of mysqld.
(use it if you need even more speed).
WITHOUT_INNODB=yes Disable support for InnoDB table handler.
WITH_ARCHIVE=yes Enable support for Archive Storage Engine.
WITH_FEDERATED=yes Enable support for Federated Storage Engine.
WITH_NDB=yes Enable support for NDB Cluster.

===> Extracting for mysql-server-5.0.22
^C
/usr/ports/databases/mysql50-server/>


Прервал. Доступна куча опций, потому с ними и поиграемся, для чего в файл /etc/make.conf надо внести такие строки:# Для некоторых, особо тупых приложений, лучше указать версию MySQL,
# что используется, тут. Но - для совсем тупых не поможет и это.
DEFAULT_MYSQL_VER=50

# Директория где лежат порты
PORTSDIR?= /usr/ports

# для сервера
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-server
# Дефолтовая кодировка. Вообще, этим пунктом увлекаться не стоит -
# могут возникнуть проблемы при переносе на другой сервер. На самом
# деле и не проблемы вовсе - просто дамп перекодировать да поменять
# кодировку-коллэйшен у таблиц в дампе, перед заливкой, но первый
# раз столкнувшись, вызывает кучу проблем...
WITH_CHARSET=cp1251
# Другие вкомпиленные кодировки. Можно задать 'all' - все.
#WITH_XCHARSET=all
# Дефолтовая кодировка сравнения (другого слова подобрать не могу...)
WITH_COLLATION=cp1251_bin
# Поддержка OpenSSL - для шифрования передаваемых данных.
# Шифрование - это конечно хорошо, но - повышается нагрузка на
# машину сервера и на машину клиента (если и тот и другой на одной
# машине - вообще не вижу смысла в этом пункте.)
#WITH_OPENSSL=yes
# Интересная опция - позволяет работать в несколько "нитей",
# обрабатывая несколько запросов одновременно - в результате
# повышается производительность.
WITH_LINUXTHREADS=yes
# Программные треды FreeBSD (если я верно всё понял). Тестов на скорость,
# в сравнении с линуксовыми не нашлось - потому не знаю, кто быстрей.
# Кстати, видел рекомендацию - включать и те и другие треды одновременно.
# Смысла, особого в этом не вижу, но и не утверждаю ничего.
#WITH_PROC_SCOPE_PTH=yes
# Собирать с флагами оптимизации (-O2), сам не мерял, но по слухам,
# несколько процентов производительности можно выиграть. Будет
# полезным на старых машинах, или высоконагруженных.
BUILD_OPTIMIZED=yes
# Собрать статическую версию mysqld (cо вкомпиленными либами, чтоль)
# Также, как и предыдущая опция, позволит выиграть несколько процентов
# производительности (по слухам - до 10% - но чё-то слабо верится...)
BUILD_STATIC=yes
# Отключить тип таблиц InnoDB (если не используете - будет поменьше
# коду, и, соответственно, быстрей работать будет)
WITHOUT_INNODB=yes
# Специальный тип хранения данных (не всех, тока тех, что без индексов),
# позволяет хранить их в виде архива, тем самым экономится дисковое
# пространство (в ущерб производительности, я думаю... Так что смысл
# есть, лишь если надо хранить кучу неиндексированных данных -
# те же данные по траффику, к примеру, там всё равно перебором почти всё :))
#WITH_ARCHIVE=yes
# Фенька, позволяющая работать с удалёнными (находящимися на другом хосте)
# таблицами данных, как будто они находятся на локальной машине
# (NFS, чтоль, уже отменили? :)) Хотя, если выборки будут идти на другом
# хосте - то нагрузка на сеть будет меньшe, чем с NFS. Короче - не пробовал,
# ничё не утверждаю... Пару строк в документации прочёл.)
#WITH_FEDERATED=yes
# Опция, нужная лишь в случае, если будете собирать кластер MySQL-серверов
#WITH_NDB=yes
.endif
# для клиента
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-client
# Многие из опция сервера, применяются и в клиенте. Вобщем-то, какие не
# применяются, интуитивно понятно - то, что касается всяких фенек, типа
# кластеров, архивных таблиц и прочего. Ставить их тут можно, но они не
# произведут никакого действия. Также, хочу заметить, что кодировка,
# 'по-умолчанию' бывает не тока у сервера, но и у клиента. Частенько,
# именно на этом прокалываются. (И вовсе не обязательно она должна быть
# такая же как у сервера.)
# Также хочу заметить, что клиента не надо собирать с какими бы то ни
# было тредами - линуксовыми, или родными - я прокололся на линуксовых,
# вроде всё пашет, с консоли, а вот апач падает... Методом исключения
# выяснил виновника - клиент с тредами - падает mysql-модуль PHP,
# валит апача...
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
BUILD_OPTIMIZED=yes
.endif


Итак, собираем MySQL:/usr/home/lissyara/>cd /usr/ports/databases/mysql50-server/
/usr/ports/databases/mysql50-server/>make && make install && make clean


После инсталляции клиента сборка прекращается с ошибкой - не может найти библиотеку.===> Installing ldconfig configuration file
===> Compressing manual pages for mysql-client-5.0.22
===> Registering installation for mysql-client-5.0.22
===> Returning to build of mysql-server-5.0.22
Error: shared library "mysqlclient.15" does not exist
*** Error code 1

Stop in /usr/ports/databases/mysql50-server.
/usr/ports/databases/mysql50-server/>


Я перезагрузился, помогло, но можно и иначе, дать команду:/usr/home/lissyara/>/sbin/ldconfig -m /usr/local/lib/mysql
/usr/home/lissyara/>


Должно помочь и без перезагрузки. Вообще, раньше, вместе с клиентом, инсталлся такой скрипт:
/usr/local/etc/rc.d/000.mysql-client.sh#!/bin/sh

case "$1" in
start)
/sbin/ldconfig -m /usr/local/lib/mysql
;;
stop)
;;
*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
exit 64
;;
esac


Нынче он не инсталлится. Если ошибки будут продолжаться, при сборке других приложений из портов, то можно его добавить в автозагрузку, или, что грамотней, добавить путь в /etc/rc.conf (подробности можно найти здесь, поиск в странице, по ключевому слову ldconfig_paths).
После чего продолжаем инсталляцию:/usr/ports/databases/mysql50-server/>make install && make clean


По окончании инсталляции, стругаем конфиг для mysql - /usr/local/etc/my.cnf# Этот конфигурационный файл сделан на основе файла для маленьких
# систем - /usr/local/share/mysql/my-small.cnf. Большую часть его
# делал не я, а один знакомый. Имени, к сожалению, не помню...
# Но всё же предупреждаю - копирайт на настройки конфига не мой :))
#
# Вообще, конфигурационный файл можно положить в несколько мест:
# /etc/my.cnf
# /var/db/mysql/my.cnf
# /usr/local/etc/my.cnf
# В любом из них mysqld его найдёт, и достанет из него настройки.
# Самое корректное место, если судить по стартовому скрипту, это
# директория где лежат базы данных - /var/db/mysql/my.cnf.


# Опции для всех клиентов MySQL
[client]
# Пароль для подключения к БД
#password = your_password
# Порт на котором висит MySQL
port = 3306
# Сокет MySQL
socket = /tmp/mysql.sock


# Опции MySQL-сервера
[mysqld]
# Порт
port = 3306
# Адрес, который будем слушать (если вам не нужно подключаться к
# MySQL с других машин, то оставьте здесь 127.0.0.1)
bind-address = 127.0.0.1
# Где лежит сокет
socket = /tmp/mysql.sock
# Не использовать средства системных блокировок.
skip-locking
# Вообще, в новых версиях, (после 3.21) этот пункт правильно называется
# key_buffer_size, но можно использовать и старое имя. Значение этого
# пункта - размер буфера, используемого для блоков индексов. Чтобы
# улучшить обработку индексов (для всех операций чтения и записи нескольких
# элементов), необходимо увеличить это значение настолько, насколько возможно.
# Рекомендуется, 1/4 от объёма оперативки, но не более 1/2 - иначе система
# может начать сохранять временные файлы на диске, что значительно
# снизит производительность.
key_buffer = 16K
# Максимальный размер одного пакета. Изначально размер буфера сообщений
# устанавливается в net_buffer_length байтов, но при необходимости может
# возрасти до max_allowed_packet байтов. Это значение по умолчанию не
# настолько велико, чтобы отсеивать большие (возможно ошибочные) пакеты.
# Если используются большие столбцы BLOB, его необходимо увеличить.
# Значение должно быть не меньше самого большого BLOB, который будет
# использоваться. Ограничение протокола для max_allowed_packet
# составляет 16 Мб в MySQL 3.23 и 1Гб в MySQL 4.0.
max_allowed_packet = 1M
# Количество открытых таблиц для всех потоков. С увеличением этого
# значения увеличивается количество дескрипторов файлов, необходимых
# для mysqld. Чтобы узнать, необходимо ли изменять значение кэша таблиц,
# следует проверить значение переменной Opened_tables.
# Если у этой переменной большое значение, а команда FLUSH TABLES
# (которая закрывает все таблицы, а потом открывает их повторно)
# используется не часто, то необходимо увеличить ее значение.
table_cache = 4
# Каждый поток, которому необходимо произвести сортировку, выделяет
# буфер данного размера. Увеличение данного значения позволит ускорить
# выполнение операторов ORDER BY или GROUP BY.
sort_buffer_size = 64K
# Каждый поток, осуществляющий последовательное сканирование, выделяет
# буфер указанного размера для каждой сканируемой таблицы. Если
# проводится много последовательных сканирований, это значение
# можно увеличить.
read_buffer_size = 256K
# При считывании строк, после проведения сортировки, в отсортированном
# порядке строки считываются через буфер, чтобы избежать операций поиска
# по диску. Это может улучшить выполнение ORDER BY весьма и весьма,
# если параметр установлен в большое значение. Т.к. эта переменная
# имеет отношение к потоку, то не устанавливайте слишком большое
# значение глобально, но просто меняйте его при выполнении некоторых
# больших запросов.
read_rnd_buffer_size = 256K
# В данное значение устанавливается, в промежутках между запросами,
# буфер соединения. Обычно это значение не изменяется, но если у вас
# очень мало памяти, можно установить его по размеру ожидаемого
# запроса (т.е. равным предполагаемой длине операторов SQL, отправляемых
# клиентами; если оператор превысит указанную длину, буфер будет
# автоматически увеличен как максимум до max_allowed_packet байтов).
net_buffer_length = 2K
# Размер стека для каждого потока. От данного значения зависит большое
# количество ограничений, обнаруживаемых при помощи теста crash-me.
# По умолчанию этот размер достаточен для нормальной работы.
thread_stack = 64K

# Вообще не слушать порты TCP/IP. Это может применяться для большей
# безопасности, если все процессы, соединяющиеся с MySQL висят на томже
# хосте, что и mysqld. Все взаимодействия с mysqld будут осуществляться
# через Unix-сокеты, или именованые каналы.
# Заметтьте, что использование этой опции под форточками, без включчения
# именованных каналов (используйте опцию "enable-named-pipe") сделает
# работу MySQL бесполезной - ибо с mysqld никто не сможет соединиться :)
skip-networking
# Если Вы используете InnoDB, то закомментируйте эту опцию
skip-innodb
# С этой опцией MySQL не будет инициализировать библиотеку Berkeley DB,
# что позволит сэкономить большое количество памяти.
skip-bdb
# Hекоторое уникальное число между 2 и 2^32-1. Значения server-id должны
# быть различными на каждом сервере, участвующем в репликации. Если
# значение server-id не определено, оно будет установлено в 1, если
# также не определено значение master-host, оно будет установлено в 2.
# Обратите внимание, что если значение server-id опущено, то головной
# сервер будет отказывать в соединении всем подчиненным серверам, а
# подчиненный сервер - отказывать в соединении головному серверу.
# Таким образом, опускать установку значения server-id можно лишь в
# случае резервного копирования с использованием двоичного журнала.
server-id = 1
# Раскомментируйте эту опцию, для включения логгирования всех запросов
# Заметтьте - тока на время отладки! Потом надо закомментить и
# рестартануть MySQL!
# Файл должен существовать, с соответствующими правами на него:
# touch /var/log/mysql.log
# chown mysql:wheel /var/log/mysql.log
# chmod 640 /var/log/mysql.log
log = /var/log/mysql.log

# Указывает местоположение двоичного журнала обновлений,
# в котором будут вестись записи.
#log-bin=mysql-bin

[mysqldump]
# Если задан этот параметр, то обработчик таблицы при выполнении
# удаления не будет объединять индексы - в некоторых случаях это
# может ускорить данную операцию
quick
# Максимальная величина пакета, посылаемого/принимаемого с сервера
max_allowed_packet = 16M

[mysql]
# Отключает автоматическое рехеширование. rehash следует использовать
# для получения хеша таблиц и полей. Это обеспечивает более
# быстрый старт mysql.
no-auto-rehash
# Опция, которую рекомендуется раскомментить начинающим :)
# Разрешает выполнять только операции UPDATE и DELETE, используя ключи.
#safe-updates

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
# Допускать простой длительностью interactive_timeout секунд (вместо
# wait_timeout секунд) перед закрытием данного соединения.
interactive-timeout

# P.S. Большинство текста - это из мануала по MySQL 4.0, за который
# мы не так давно воевали на www.mysql.com (его убирали на некоторое
# время, типа он по старой версии, потому не актуален...
# но - отвоевали, вернули :))))


C таким конфиг-файлом mysqld занимает в 6 раз меньше памяти, чем без него. Итак, запускаем:/usr/home/lissyara/>echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/mysql-server.sh start
Starting mysql.
/usr/home/lissyara/>
/usr/home/lissyara/>ps -axj | grep mysqld
mysql 44512 1 44510 504 0 S p0 0:00,08 /bin/sh /usr/local/bin
mysql 44530 44512 44510 504 0 SN p0 0:00,15 /usr/local/libexec/mys
mysql 44531 44530 44510 504 0 SN p0 0:00,00 /usr/local/libexec/mys
mysql 44532 44531 44510 504 0 SN p0 0:00,00 /usr/local/libexec/mys
mysql 44533 44531 44510 504 0 SN p0 0:00,00 /usr/local/libexec/mys
root 44548 507 44547 504 2 S+ p0 0:00,02 grep mysqld
/usr/home/lissyara/>


Так много процессов - потому как с тредами (на самом деле он один...).

С 5-кой разобрались. Теперь пример установки, для самой старой версии mysql, что есть в портах - 3.23./usr/home/lissyara/>cd /usr/ports/databases/mysql323-server/
/usr/ports/databases/mysql323-server/>make && make install && make clean
===> Vulnerability check disabled, database not found

You may use the following build options:

WITH_CHARSET=charset Define the primary built-in charset (latin1).
WITH_XCHARSET=list Define other built-in charsets (may be 'all').
WITH_OPENSSL=yes Enable secure connections.
WITH_LINUXTHREADS=yes Use the linuxthreads pthread library.
WITH_PROC_SCOPE_PTH=yes Use process scope threads
(try it if you use libpthread).
BUILD_OPTIMIZED=yes Enable compiler optimizations
(use it if you need speed).
BUILD_STATIC=yes Build a static version of mysqld.
(use it if you need even more speed).
WITHOUT_INNODB=yes Disable support for InnoDB table handler.

===> Extracting for mysql-server-3.23.59.n.20050301_3
^C
/usr/ports/databases/mysql323-server/>


Чтож, опции, в большинстве своём, точно такие же, как и у 5.0. Соответсвенно правим файл /etc/make.conf (приведено без комментов, ибо нового ничё нет - смотрите предыдущий листинг)# Для некоторых, особо тупых приложений, лучше указать версию MySQL,
# что используется, тут. Но - для совсем тупых не поможет и это.
DEFAULT_MYSQL_VER=323

# Директория где лежат порты
PORTSDIR?= /usr/ports

# для сервера
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql323-server
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
# Единственный пункт, по которому нужны, наверно, пояснения.
# Просто без него у меня не заводилось...
#WITHOUT_INNODB=yes
.endif
# для клиента
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql323-client
.endif


После рихтовки /etc/make.conf снова запускаем компиляцию:/usr/ports/databases/mysql323-server/>make && make install && make clean


Которая по окочании установки клиента вываливается с ошибкой, похожей на ту, что и у mysql 5.0:===> Installing ldconfig configuration file
===> Compressing manual pages for mysql-client-3.23.59.n.20050301_2
===> Registering installation for mysql-client-3.23.59.n.20050301_2
===> Returning to build of mysql-server-3.23.59.n.20050301_3
Error: shared library "mysqlclient.10" does not exist
*** Error code 1

Stop in /usr/ports/databases/mysql323-server.
/usr/ports/databases/mysql323-server/>


Лечение тоже самое - перезагрузка, или/usr/home/lissyara/>/sbin/ldconfig -m /usr/local/lib/mysql
/usr/home/lissyara/>


После чего всё нормально доинсталлируеся. Можно создавать конфиг /usr/local/etc/my.cnf# Этот конфигурационный файл сделан на основе файла для маленьких
# систем - /usr/local/share/mysql/my-small.cnf.
#
# Вообще, конфигурационный файл можно положить в несколько мест:
# /etc/my.cnf
# /var/db/mysql/my.cnf
# /usr/local/etc/my.cnf
# В любом из них mysqld его найдёт, и достанет из него настройки.
# Самое корректное место, если судить по стартовому скрипту, это
# директория где лежат базы данных - /var/db/mysql/my.cnf.


# Опции для всех клиентов MySQL
[client]
# Пароль для подключения к БД
#password = your_password
# Порт на котором висит MySQL
port = 3306
# Сокет MySQL
socket = /tmp/mysql.sock


# Опции MySQL-сервера
[mysqld]
# Порт
port = 3306
# Адрес, который будем слушать (если вам не нужно подключаться к
# MySQL с других машин, то оставьте здесь 127.0.0.1)
bind-address = 127.0.0.1
# Где лежит сокет
socket = /tmp/mysql.sock
# Не использовать средства системных блокировок.
skip-locking

# Вообще не слушать порты TCP/IP. Это может применяться для большей
# безопасности, если все процессы, соединяющиеся с MySQL висят на томже
# хосте, что и mysqld. Все взаимодействия с mysqld будут осуществляться
# через Unix-сокеты, или именованые каналы.
# Заметтьте, что использование этой опции под форточками, без включчения
# именованных каналов (используйте опцию "enable-named-pipe") сделает
# работу MySQL бесполезной - ибо с mysqld никто не сможет соединиться :)
skip-networking
# Если Вы используете InnoDB, то закомментируйте эту опцию
skip-innodb
# С этой опцией MySQL не будет инициализировать библиотеку Berkeley DB,
# что позволит сэкономить большое количество памяти.
skip-bdb
# Hекоторое уникальное число между 2 и 2^32-1. Значения server-id должны
# быть различными на каждом сервере, участвующем в репликации. Если
# значение server-id не определено, оно будет установлено в 1, если
# также не определено значение master-host, оно будет установлено в 2.
# Обратите внимание, что если значение server-id опущено, то головной
# сервер будет отказывать в соединении всем подчиненным серверам, а
# подчиненный сервер - отказывать в соединении головному серверу.
# Таким образом, опускать установку значения server-id можно лишь в
# случае резервного копирования с использованием двоичного журнала.
server-id = 1
# Раскомментируйте эту опцию, для включения логгирования всех запросов
# Заметтьте - тока на время отладки! Потом надо закомментить и
# рестартануть MySQL!
# Файл должен существовать, с соответствующими правами на него:
# touch /var/log/mysql.log
# chown mysql:wheel /var/log/mysql.log
# chmod 640 /var/log/mysql.log
log = /var/log/mysql.log

# Указывает местоположение двоичного журнала обновлений,
# в котором будут вестись записи.
#log-bin=mysql-bin

[mysqldump]
# Если задан этот параметр, то обработчик таблицы при выполнении
# удаления не будет объединять индексы - в некоторых случаях это
# может ускорить данную операцию
quick

[mysql]
# Отключает автоматическое рехеширование. rehash следует использовать
# для получения хеша таблиц и полей. Это обеспечивает более
# быстрый старт mysql.
no-auto-rehash
# Опция, которую рекомендуется раскомментить начинающим :)
# Разрешает выполнять только операции UPDATE и DELETE, используя ключи.
#safe-updates

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
# Допускать простой длительностью interactive_timeout секунд (вместо
# wait_timeout секунд) перед закрытием данного соединения.
interactive-timeout


Можно заметить, что отличия от 5.0 минимальны - отсутствуют опции буферов, да и всё, пожалуй. Запускаем:/usr/home/lissyara/>echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/mysql-server.sh start
Starting mysql.
/usr/home/lissyara/>ps -axj | grep mysql
mysql 8848 1 8846 504 0 S p0 0:00,07 /bin/sh /usr/local/bi
mysql 8868 8848 8846 504 0 S p0 0:00,06 /usr/local/libexec/my
root 8870 507 8869 504 2 L+ p0 0:00,01 grep mysql
root 8754 5368 8754 5344 1 S+ p1 0:00,02 tail -f /var/db/mysql
/usr/home/lissyara/>


Всё пашет.

Теперь общие вопросы. По дефолту, в MySQL заведено несколько пользователей, типа гостей, и прочих. Я их обычно удаляю - нефига гостям по БД шляться..../usr/home/lissyara/>mysql --database=mysql --execute="SELECT COUNT(*) FROM user"
+----------+
| COUNT(*) |
+----------+
| 4 |
+----------+
/usr/home/lissyara/>mysql --database=mysql --execute="DELETE FROM user \
? WHERE User=''"
/usr/home/lissyara/>mysql --database=mysql --execute="SELECT COUNT(*) FROM user"
+----------+
| COUNT(*) |
+----------+
| 2 |
+----------+
/usr/home/lissyara/>mysql --database=mysql --execute="DELETE FROM user \
? WHERE Host != 'localhost'"
/usr/home/lissyara/>mysql --database=mysql --execute="SELECT COUNT(*) FROM user"
+----------+
| COUNT(*) |
+----------+
| 1 |
+----------+
/usr/home/lissyara/>
/usr/home/lissyara/>mysql --database=mysql --execute="UPDATE user SET \
? Password = PASSWORD('тут ввести пароль рута')"
/usr/home/lissyara/>mysql --database=mysql --execute="FLUSH privileges"
/usr/home/lissyara/>mysql --database=mysql --execute="SELECT * FROM user"
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
/usr/home/lissyara/>


Всё. Без пароля к БД не добраться. Вообще, общая рекомендация - если плохо знаете MySQL - либо займитесь изучением, либо поставьте графический интерфейс, типа phpMyAdmin. Я вначале пошёл по второму пути, щас пытаюсь свернуть на первый :))) Единственное - не забывайте его запаролить.

P.S. При проблемах (не запускается), смотрим лог ошибок:/usr/home/lissyara/>tail -f /var/db/mysql/`uname -a | awk '

Обновлено 28.05.2010 13:49
 

Защищаем FreeBSD

Защищаем FreeBSD (defender +1)

Автор: Raven2000.
Оригинал: http://www.lissyara.su/articles/freebsd/security/armored_bsd/

Как и любую другую систему FreeBSD нужно так же защищать от посягательств на нее. Она
не так уж защищена, как много людей о ней думают и ее можно так же сломать и крякнуть,
как и тот же Windows просто FreeBSD мало распространена и мало есть спецов, которые с
ней работают, а тем более которые знают ее в совершенстве, так что чем больше спецов
ее ломают тем больше дыр и руткитов будет открыто и использовано.

Да и на будущее я не претендую на аса в построение защиты и т.д. т.п. а
лишь попробую (для себя, чтобы не забыть :) и друзей) описать некоторые моменты
защиты, а остальное будет дополняться по мере просьб и необходимости.
Т.к. невозможно охватить все, да и абсолютно защищенный сервер, которого невозможно
сломать это как вечный двигатель в теории есть но на практике, увы :).
Хотя я знаю такой - это тот, который на глубине 100 метров под землей в фольге
и с вырубленным питанием :) Статья будет дополнятся и изменятся по ходу обсуждений.
Ну ладно, попробуем немного защитится от спецов :)

Защиту разделим по двум видам:
I) Защита от внешних атак
II) Защита от внутренних атак

Атака изнутри – атакующий является легальным \ авторизированным пользователем
с этим типом атак бывает сложнее т.к. у пользователя есть не только данные
о системе, но и валидный юзер.
Внешняя атака – Все, что на передовой.

Теперь определим фронт защиты:

I) Атака извне:
1.1) Apache - http.conf + mod_security
1.2) PHP - php.ini + mod_security + отключение опасных функций + Ограничения ресурсов
1.3) FTP – Разделение привилегий + chroot + квоты + отдельный HDD
1.4) Firewall – грамотно настроенный фаервол
1.5) Сhroot

II) Атака внутри:
2.1) Ограничения ресурсов - /etc/login.conf + /etc/sysctl.conf
2.2) Разделение привилегий - /etc/sysctl.conf + chmod + структура папок
2.3) Логии (logcheck)
2.4) top/ps

III) Общие меры
3.1) Разбор fstab
3.2) Доступ к серверу
3.3) DNS – chroot + noroot

Теперь пройдем по пунктам (некоторые пункты будут вкратце описаны т.к. обший принцип
защиты пересекается с другими пунктами) как и чем можно защитить и ограничить:

I) Прикрытие внешних дыр.

1.1) Apache + виртуальные хосты + mod_security
Прикроем дырки этого сервиса для начала нам необходимо задать ограничения
в конфиге для каждого вхоста. Добавляем следующие параметры:<IfModule mod_php4.c>
# Включаем Safe mode
php_admin_flag safe_mode on
php_admin_flag safe_mode_gid on
php_admin_value open_basedir /home/domain.ru
# Папка, выше которой скрипт не может видеть
php_admin_value safe_mode_exec_dir /home/domain.ru
# Temp диры юзера
php_admin_value upload_tmp_dir /home/domain.ru/tmp
# Не начинать PHP сессию автоматически
php_admin_flag session.auto_start off
# Где сохранять файлы сессий
php_admin_value session.save_path /home/domain.ru/tmp
</IfModule>


Как известно, немалая часть взломов (SQL Injection, XSS атаки, инклюдинг) происходит
по сути посредством хитрого HTTP запроса. Логично предположить, что эти самые
запросы неплохо было бы фильтровать. Решение проблемы существует в виде модуля к
Апачу, и называется оно mod_security. Ставим:# cd /usr/ports/www/mod_security/ && make install clean


После установки – идем конфигурировать. Открываем любой конфиг виртуального хоста,
например 001.admin.hosting.ru, над которым мы уже экспериментировали. Все значения
надо вводить между тегами <Virtualhost *:80> и </Virtualhost>.# Включаем mod_security
SecFilterEngine On
# Проверяем запросы
SecFilterScanPOST On
# Проверяем ответы
SecFilterScanOutput On
# Проверяем, правильно ли закодирован URL
SecFilterCheckURLEncoding On
# Включаем этот параметр, если сайт в Unicode
SecFilterCheckUnicodeEncoding Off
# Задаем диапазон байтов
SecFilterForceByteRange 1 255
# Сохраняем в лог только срабатывания механизма
SecAuditEngine RelevantOnly
# Где живет лог :)
SecAuditLog logs/audit_log
# Возвращаем ошибку 500 при срабатывании
SecFilterDefaultAction "deny,log,status:500"
# Перекрываем dots-bug
SecFilter "\.\./"
# Не забываем про XSS
SecFilter "<(.|\n)+>"
# SQL injection, куда же без него :)
SecFilter "<[[:space:]]*script"
SecFilter "delete[[:space:]]+from"
SecFilter "insert[[:space:]]+into"
SecFilter "select.+from"
# Перекрываем возможность передачи переменных PHP
SecFilterSelective ARG_b2inc "!^$"
# Исключаем возможность раскрытия пути
SecFilterSelective OUTPUT "Fatal error:"


Для и для apache 1.x в httpd.conf закоментите:#SecFilterScanOutput
#OUTPUT
#OUTPUT_STATUS


У этого модуля – на редкость удачная дефолтная конфигурация. К ней мало, что можно
добавить, так как большинство настроек – специфичны. Общий принцип составления
правил мы рассмотрели, а остальное можно добавить по своему усмотрению.

1.2) PHP
В дополнение смотри пункт – 2.1
Рассмотрим самое уязвимое место хостинговой системы – выполняемые файлы, в частности,
PHP скрипты. Открываем конфиг PHP:# ee /usr/local/etc/php.ini


Меняем следующие параметры:magic_quotes_gpc = Off # Экранирование спецсимволов
disable_functions = system, exec, passthru # Выключаем опасные функции:


Выключить эти функции очень важно. Хоть они и недоступны при включенном safe mode,
пользователь может без труда провести успешную атаку, указав в файле .htaccess:
php_flag safe_mode off

1.3) FTP
Настройка Proftpd установите далее по разделение привилегий смотрим -2.1
в котором я указал то что вам нужно, а по Chroot см раздел 1.5 Желательно ftp
ставить на отдельный HDD чтобы непроизошло переполнения раздела и все
шайтан майфун :) а если у вас он на /etc или /var находился все хана логам и тд :)

1.4) IPFW - штатный файрволл FreeBSD

1.5) Chroot
Chroot - песочница это конечно с одной стороны хорошо с другой – потеря
производительности, для некоторых программ лишний дополнительный
модуль + конфиг к нему. Я считаю грамотный chmod дает тот же результат , но без
заморочек и потерь ресурсов. В основном к chroot прибегают, когда нужно обезопасить
сервис, который не совсем безопасный как например BIND(о нем ниже).
Jail - мы не будем это рассматривать ось внутри оси довольно заморочено и плохо
документировано, а если все вхосты придется загонять в jail то мало непокажется.
Я пока небуду jail рассматривать :)

II) Настраиваем тыл внутренние защитные меры.

2.1) Ограничения ресурсов
Бывает так кроме основного действия PHP скрипта функция N зацикливается, попутно
вычисляя некое сложное действие. Как результат – высокая загрузка процессора.
Это очень типичная ситуация для хостинга. Чтобы предотвратить подобные ненамеренные
(и намеренные) атаки, необходимо ограничивать юзера в плане ресурсов. У *BSD для
таких целей существует система профилей пользователей. Это значит, что мы можем
легко ограничить ресурсы каждого пользователя в отдельности.
Открываем /etc/login.conf и добавляем:# Имя профиля
hosting: \
:copyright=/etc/COPYRIGHT: \
:welcome=/etc/motd: \
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K: \
:path=~/bin /bin /usr/bin /usr/local/bin: \
:manpath=/usr/share/man /usr/local/man: \
:nologin=/var/run/nologin: \
# Мах время использования процессора
:cputime=1h30m: \
# Мах кол-во памяти, выделяемой программе под данные
# Сам код программы и стэк не учитываются
:datasize=10M: \
# Сколько выделяем для стека программы
:stacksize=3M: \
# Мах размер физической памяти, выделяемой процессу
:memoryuse=16M: \
# Мах размер файла
:filesize=50M: \
# Мах размер core файлов
:coredumpsize=1M: \
# Сколько файлов может открывать каждый процесс
:openfiles=128: \
# Сколько процессов может запускать пользователь
:maxproc=64: \
# Пускать юзера в систему только если его домашняя дира существует и доступна юзеру
:requirehome:true \
# Время устаревания пароля
:passwordtime=90d: \
# Остальное берем из профиля default
:tc=default:


Здесь я указал лишь основные параметры.
Список всех параметров и их описание можно найти в Handbook.
Теперь перейдем к настройке операционки. Открываем /etc/sysctl.conf и пишем туда
следующее:# Запрещает юзерам видеть процессы соседа&root
security.bsd.see_other_uids=0
# Запрещает видеть групповые процессы
security.bsd.see_other_gids=0
# Пускаем запросы на закрытые порты в черные дыры
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
# Указываем размер очереди сокета
kern.ipc.somaxconn=1024
# Отрубаем ip-редиректы
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0

# Назначаем размеры буфера для TCP-подключений. Если на сервер ожидается большая
# нагрузка, и у него много памяти – лучше поставить 65535. Значение выше 65535
# не рекомендуется.
net.inet.tcp.sendspace=32768
net.inet.tcp.recvspace=32768
# Обновляем ARP-таблицу каждые 20 минут
net.link.ether.inet.max_age=1200
# Запрещаем отвечать на все лишние запросы.
net.inet.icmp.maskrepl=0
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.icmp.bmcastecho=0


Здесь указаны не все параметры sysctl остальные смотримMAN SYSCTL(8)
Есть статья Некоторые опции sysctl но она еще не совсем дописана (просьба просить lissyara чтобы доконца перевел ;)).
Многие параметры для sysctl можно изменять и динамически:sysctl <параметр>=<значение>


Например:sysctl kern.maxprocperuid=1000


Должно быть похоже на# sysctl kern.maxprocperuid=1000
kern.maxprocperuid: 3546 -> 1000


Теперь необходимо продублировать часть настроек в /etc/rc.conf:
Дублируем настройки sysctlicmp_drop_redirect="YES"
icmp_log_redirect="YES"
icmp_bmcastecho="NO"
tcp_drop_synfin="YES"



2.3) Логи
Очень важным аспектом системного администрирования является слежение за сервера.
Но ковырять логии самому заморочено тогда для ленивых существует отличная утилита
logcheck ее и поставим.# cd /usr/ports/security/logcheck && make install clean


Утилита написана на sh скриптах, и занимает всего 29 Кб в архиве. После установки
в /usr/local/etc у вас появятся четыре конфига: переименуй их,
убрав из названия файла «sample»:

logcheck.hacking – о каких странностях сообщать;
logcheck.violations – о каких попытках взлома сообщать;
logcheck.ignore – какие странности игнорировать;
logcheck.violations.ignore – какие попытки взлома игнорировать.

В целом и общем, первый файл от второго ничем не отличается, равно как и третий
от четвертого :).Просто разработчики скрипта решили разнести сообщения о подозрительной
активности и сообщения о явной атаке в разные конфиги.

Запускаем скрипт по крону, хотя бы раз в сутки. Дописываем в cron:0 4 * * * /bin/sh /usr/local/etc/logcheck.sh


При большой активности хостящихся сайтов, логи веб-сервера начнут
занимать немало места. И в то же время их надо сохранять.
Можно использовать утилиту logrotate# /usr/ports/sysutils/logrotate && make install clean



III) Общие меры

3.1) HDD
Сделаем в fstab некоторые изменения для предотвращения нехороших действий.
Укажем где и что можно и нельзя делать системе.
/dev/ad4s3b none swap sw 0 0
/dev/ad4s3a / ufs rw 1 1
/dev/ad4s3e /tmp ufs rw,noexec 2 2
/dev/ad4s3f /usr ufs rw 2 2
/dev/ad4s3f /usr/home ufs rw,nosuid,nodev 2 2
/dev/ad4s3d /var ufs rw,nodev 2 2


noexec – эта опция дает понять что на данном разделе запрещено запускать что
либо даже правах на файл chmod 777 (Я знаю что некоторые защищенные сервера ломали
именно через /tmp :) в последствии админы советовали прикрывать эту дыру.
И незабываем, что в /tmp может писать почти любой сервис в системе)

nosuid – при этом значении система игнорирует suid-биты. Юзер не сможет сделать
#su и подняться до рута, даже если он знает его пароль рута и находится в группе
wheel (но необходимо понять что нужным юзверям которым нужно #su домашняя директория
будет /usr, а тем кого нужно ограничит директория будет /usr/home)

nodev – запрещаем создание\существование в данном разделе специальных устройств.

3.2) Доступ
Доступ к серверу следует ограничить. Т.е. серверы убрать в недоступное простым
смертным людям и закрыть на ключ. В дополнение не забываем, снять с них все причиндалы
мониторы клавы мышки и т.д. Для чего это должно быть понятно, например если я вижу
общедоступный \ физически сервер FreeBSD я тут же по любопытности хочу в него залезть
и поковыряться в нем. Но вы скажете, а как же пароль root и т.д. то слушаем дальше,
если вы забыли чужой пароль :) а так бывает то делаем так:

А) Загружаемся в однопользовательском режиме , для этого в приглашении загрузчика
введите boot –s
Б) Смонтируйте командой mount –u / корневой раздел в режим чтения-записи.
Затем с помощью mount –a примонтируем все что есть (т.е. только что указанно
в fstab без опции noauto)
B) Теперь меняйте пароль рута. :)

Чтобы люди не cмогли зайти без пароля рута в однопользовательском режиме делаем так:# ee /etc/ttys


Измените в строчке console пункт secure на insecure. Если вы сделаете это,
FreeBSD даже при загрузке в однопользовательском режиме будет запрашивать пароль root.
Будьте осторожны при изменении этого значения на insecure. Если вы забудете пароль
root, загрузка в однопользовательский режим сильно усложнится.
Это все еще возможно, но несколько более сложно.# name getty type status comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off insecure



3.3) DNS
Засунем DNS в песочницу # named –u 53 –t /var/named


-u – значение UID присваемое процессу named
-t – указывает корневой каталог для демона
Незабываем, что корневой каталог недолжен, быть пустым, он должен содержать все файлы
необходимые для нормальной работы демона. Если named скомпилирован так чтобы
библиотеки компоновались статически и не нужно было думать что ему надо еще в корневую
положить чтобы он запустился :) Так же некоторые советуют в конфиге DNS убрать строчку
об версии демона дескать оно сможет помочь атакующему и т.д. я не считаю это критически
она может подсказкой и самому админу.

Литература:
1) Unix руководство системного администратора (3 изд.)
2) Хакер спец 07/68/июль/2006
3) Жизнь :)

Обновлено 28.05.2010 12:17
 

Подсчет трафика с помощью pf

Подсчет трафика с помощью pf
Автор: fr33man
Оригинал: http://www.lissyara.su/articles/freebsd/traffic_count/pfctl/


Решил считать трафик на внешнем интерфейсе. Сначала хотел считать с помощью trafd, но подумал, что лишняя программа в памяти не есть гуд. Второй моей мыслью был snmp, но нагружать машинку еще и snmp запросами я не решился. И тут я вспомнил, что это роутер, на котором стоит packet filter. Считать решил именно pf.

Итак, приступим. Я предполагаю, что pf у Вас уже настроен и работает. Добавляем в pf.conf следующую строку:

set loginterface ng0

Теперь проверяем работоспособность конфига:

shield@/usr/ports/net> pfctl -nf /etc/pf.conf

shield@/usr/ports/net>





И подгружаем правила:

shield@/usr/ports/net> pfctl -f /etc/pf.conf

shield@/usr/ports/net>

Вот и все. Давайте посмотрим, сколько трафика набежало:

shield@/usr/ports/net> pfctl -s info

Status: Enabled for 1 days 23:43:24 Debug: Urgent



Hostid: 0x153793d2



Interface Stats for ng0 IPv4 IPv6

Bytes In 41872728 0

Bytes Out 90656050 0

Packets In

Passed 547083 0

Blocked 29 0

Packets Out

Passed 556623 0

Blocked 2 0



State Table Total Rate

current entries 4

searches 6146672 35.8/s

inserts 3730 0.0/s

removals 3726 0.0/s

Counters

match 3946799 23.0/s

bad-offset 0 0.0/s

fragment 0 0.0/s

short 0 0.0/s

normalize 0 0.0/s

memory 0 0.0/s

bad-timestamp 0 0.0/s

congestion 0 0.0/s

ip-option 0 0.0/s

proto-cksum 0 0.0/s

state-mismatch 0 0.0/s

state-insert 0 0.0/s

state-limit 0 0.0/s

src-limit 0 0.0/s

synproxy 0 0.0/s

shield@/usr/ports/net>





В самом верху видно, сколько байт принято и сколько отправлено.



Могу только добавить, чтобы очистить счетчик можно воспользоваться командой pfctl:



shield@/usr/ports/net> pfctl -F info

pf: statistics cleared

shield@/usr/ports/net>


Я не стал писать полный конфиг pf, так как я сейчас пишу статью про Policy Based Routing и pf. ))

Обновлено 28.05.2010 12:18
 

ffsinfo - программа создания дампа метаинформации UFS

ffsinfo - программа создания дампа метаинформации UFS

Автор: lissyara.
Оригинал: http://www.lissyara.su/articles/freebsd/file_system/ffsinfo/

`Исчо` одна интересная програмулина для ковыряния FS - ffsinfo. Позволяет делать дамп всей метаинформации файловой системы UFS. Разумеется всю FS дампить никто не заставляет (если дампить всю, то объём дампа составит до 2% от размера FS), при желании можно сделать частичный дамп, определённой группы цилиндров, или даже одной иноды.
Ключики:
-g cylinder_group этот ключ ограничит дамп только информацией об этой группе цилиндров. 0 - первая группа цилинров, -1 - последняя
-i inode - ограничит дамп только информацией об этой иноде. Минимальная разрешённая инода - 2. Если инода не выбрана, но группа цилиндров определена, то будет создан дамп только для инод в пределах этой группы цилиндров.
-l level - уровень детализации дампа. Значение `по-умолчанию` - 255.
-o outfile - имя файла в который будет сделан дамп. Должен быть обязательно. Если задать - то дамп будет выведен на стандартный вывод (в трубу, или на экран.).

Вот примеры использования:/usr/home/lissyara/>ls -i
4945922 .cshrc 4945927 .mailrc 4945931 distfiles
4945924 .login 4945928 .profile 4945930 distfiles.tar.bz2
4945926 .login_conf 4945925 .rhosts 4946193 file.txt
4945923 .mail_aliases 4945929 .shrc
/usr/home/lissyara/>ffsinfo -o - -i 4945927 -l 0x100 /dev/ad1s1c
===== START UFS2 INODE DUMP =====
# 0@80a4700: Inode 0x004b7807
mode u_int16_t 0100644
nlink int16_t 0x0001
uid u_int32_t 0x000003e9
gid u_int32_t 0x00000000
blksize u_int32_t 0x00000000
size u_int64_t 0x000000000000014b
blocks u_int64_t 0x0000000000000004
atime ufs_time_t 1137673537
mtime ufs_time_t 1137673537
ctime ufs_time_t 1137673537
birthtime ufs_time_t 1137673537
mtimensec int32_t 0x00000000
atimensec int32_t 0x00000000
ctimensec int32_t 0x00000000
birthnsec int32_t 0x00000000
gen int32_t 0x1649ada8
kernflags u_int32_t 0x00000000
flags u_int32_t 0x00000000
extsize int32_t 0x00000000
db ufs2_daddr_t[0] 0x 12d7d9f
===== END UFS2 INODE DUMP =====
/usr/home/lissyara/>


Это инфа по одной иноде. Можно достать информацию, например по суперблоку:/usr/home/lissyara/>ffsinfo -o - -l 0x001 /dev/ad1s1c
===== START SUPERBLOCK =====
# 0@80808c4: primary sblock
sblkno int32_t 0x00000028
cblkno int32_t 0x00000030
iblkno int32_t 0x00000038
dblkno int32_t 0x00000bb8
old_cgoffset int32_t 0x00000000
old_cgmask int32_t 0x00000000
old_time int32_t 0
old_size int32_t 0x00000000
old_dsize int32_t 0x00000000
ncg int32_t 0x000000d6
bsize int32_t 0x00004000
fsize int32_t 0x00000800
frag int32_t 0x00000008
minfree int32_t 0x00000008
old_rotdelay int32_t 0x00000000
old_rps int32_t 0x00000000
bmask int32_t 0xffffc000
fmask int32_t 0xfffff800
bshift int32_t 0x0000000e
fshift int32_t 0x0000000b
maxcontig int32_t 0x00000008
maxbpg int32_t 0x00000800
fragshift int32_t 0x00000003
fsbtodb int32_t 0x00000002
sbsize int32_t 0x00000800
spare1 int32_t[2] 0x00000000 0x00000000
nindir int32_t 0x00000800
inopb int32_t 0x00000040
old_nspf int32_t 0x00000000
optim int32_t 0x00000000
old_npsect int32_t 0x00000000
old_interleave int32_t 0x00000000
old_trackskew int32_t 0x00000000
id int32_t[2] 0x43cf81c1 0x85c2eb4f
old_csaddr int32_t 0x00000000
cssize int32_t 0x00001000
cgsize int32_t 0x00004000
spare2 int32_t 0x00000000
old_nsect int32_t 0x00000000
old_spc int32_t 0x00000000
old_ncyl int32_t 0x00000000
old_cpg int32_t 0x00000000
ipg int32_t 0x00005c00
fpg int32_t 0x00016f88
===== START CYLINDER SUMMARY =====
# 1@8080984: internal old_cstotal
ndir int32_t 0x00000000
nbfree int32_t 0x00000000
nifree int32_t 0x00000000
nffree int32_t 0x00000000
===== END CYLINDER SUMMARY =====
fmod int8_t 0x00
clean int8_t 0x00
ronly int8_t 0x00
old_flags int8_t 0xffffff80
fsmnt u_char[MAXMNTLEN] "/usr"
volname u_char[MAXVOLLEN] ""
swuid u_int64_t 0x0000000000000000
pad int32_t 0x00000000
cgrotor int32_t 0x00000017
old_cpc int32_t 0x00000000
maxbsize int32_t 0x00004000
sblockloc int64_t 0x0000000000010000
===== START CYLINDER SUMMARY TOTAL =====
# 1@8080cb4: internal cstotal
ndir int64_t 0x00000000000063fc
nbfree int64_t 0x000000000022a1f5
nifree int64_t 0x00000000004a9303
nffree int64_t 0x0000000000008a21
numclusters int64_t 0x0000000000000000
===== END CYLINDER SUMMARY TOTAL =====
time ufs_time_t 1137745993
size int64_t 0x0000000001324af1
dsize int64_t 0x000000000128a067
csaddr ufs2_daddr_t 0x0000000000000bb8
pendingblocks int64_t 0x0000000000000000
pendinginodes int32_t 0x00000000
snapinum int32_t[ 0] 0x00000000
avgfilesize int32_t 0x00004000
avgfpdir int32_t 0x00000040
save_cgsize int32_t 0x00000000
flags int32_t 0x00000002
contigsumsize int32_t 0x00000008
maxsymlinklen int32_t 0x00000078
old_inodefmt int32_t 0x00000000
maxfilesize u_int64_t 0x000080100202ffff
qbmask int64_t 0x0000000000003fff
qfmask int64_t 0x00000000000007ff
state int32_t 0x00000000
old_postblformat int32_t 0x00000000
old_nrpos int32_t 0x00000000
spare5 int32_t[2] 0x00000000 0x00000000
magic int32_t 0x19540119
===== END SUPERBLOCK =====
/usr/home/lissyara/>


Другие примеры приводить не буду, тока один, чтобы был понятен общий объём инфы:/usr/home/lissyara/>
/usr/home/lissyara/>ffsinfo -o - -l 255 /dev/ad1s1c | wc -l
54452
/usr/home/lissyara/>ffsinfo -o file.txt -l 255 /dev/ad1s1c
/usr/home/lissyara/>ls -lah | grep file.txt
-rw-r--r-- 1 root wheel 13M Jan 20 11:53 file.txt
/usr/home/lissyara/>

Обновлено 28.05.2010 13:21
 


Страница 2 из 158.

Операционные системы

Сообщество в VK / COMMUNITY in VK


  • Вопросы по поводу написанных статей можно обсудить в нашем сообществе в Вконтакте / Questions about written articles can be discussed in our community in Vkontakte Вопросы по поводу написанных статей можно обсудить в нашем сообществе в  Вконтакте / Questions about written articles can be discussed in our community in Vkontakte
Яндекс.Метрика