Документация по ОС FreeBSD Пятница, 19.04.2024, 08:53
Приветствую Вас Гость
Меню сайта

Главная » FAQ » Misc


text/html; opera %s >/dev/null 2>&1

application/pdf; xpdf %s > /dev/null 2>&1

application/msword; ooffice %s > /dev/null 2>&1

image/*; qiv %s >/dev/null 2>&1


Самая распространенная конфигурация — запуск php-скриптов от пользователя nobody. Но в этом случае невозможно определить, какой пользователь отправил письмо со спамом. Для разрешения этой ситуации, существует специальный php mail header патч (http://choon.net/php-mailheader. php). После его установки в хедерах каждого письма будет строка типа: «X-PHPScript: cup.su/mail.php for 213.180.204.8». Вычислить спамера не составит труда, и у тебя будет весомый аргумент перед дата-центром. Можешь смело заявлять, что аккаунт спамера известен и будет немедленно удален, а твоей сервер трогать ни в коем случае не нужно!


Следует удостоверится, что ядро собрано с поддержкой устройств:

        device  da
        device  scbus
        device  pass

Загружаем модуль поддержки USB Mass Storage:

        # kldload umass.ko

Загружаем USB-демона:

        # /usr/sbin/usbd

Вставляем flash-disk в USB-порт. Смотрим в /var/log/messages:

        Aug  5 17:33:49 hole /kernel: umass0: vendor 0x0c76 product 0x0005, rev 1.10/1.
        00, addr 4
        Aug  5 17:33:49 hole /kernel: da2 at umass-sim0 bus 0 target 0 lun 0
        Aug  5 17:33:49 hole /kernel: da2:  Removable Direct Access SCSI-2 device
        Aug  5 17:33:49 hole /kernel: da2: 650KB/s transfers
        Aug  5 17:33:49 hole /kernel: da2: 62MB (127091 512 byte sectors: 64H 32S/T 62C
        )

Посмотрим, что говорит camcontrol:

        # camcontrol rescan all
        Re-scan of bus 0 was successful
        # camcontrol devlist -v
        scbus1 on umass-sim0 bus 0:
        ...

Посмотрим что говорит usbdevs:

        # usbdevs -v
        Controller /dev/usb0:
        addr 1: self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 0x0100
         port 1 addr 4: power 100 mA, config 1, product 0x0005(0x0005), vendor 0x0c76(0
        x0c76), rev 0x0100
        ...

Смотрим, что говорит fdisk

        # fdisk da2
        ...
        Information from DOS bootblock is:
        The data for partition 1 is:
        sysid 6,(Primary 'big' DOS (> 32MB))
            start 32, size 126688 (61 Meg), flag 80 (active)
                beg: cyl 0/ head 1/ sector 1;
                end: cyl 359/ head 10/ sector 32
        ...

Монтируем файловую систему:

        # mount_msdos /dev/da2s1 /mnt/umass

В версиях 5.1 и выше достаточно подгрузить модуль umass.ko, запустить /usr/sbin/usbd и вставить flash-disk в USB-порт.

$ fetch ftp://ftp.cronyx.ru/pub/cronyx/omega/ombsd18.tgz
$ tar xfvz ombsd18.tgz
$ cd ombsd
# patch -N -r "" -d /sys/isa < sio46.pch
# cd /dev
# for d in 2 3 4 5 6 7 8 9 a b c d e f g h h i j k l m n o p q r s t u v ; \
            do ./MAKEDEV ttyd$d cuaa$d; done

ВНИМАНИЕ! В файл описания ядра ничего писать не надо.
Конфигурируем, собираем и устанавливаем новое ядро.

        # reboot

После перезагрузки:

        $ dmesg | grep sio
        siopci0:  port 0x6700-0x670f,0x6600-0x667f,0x6500-0x657f irq 10 at device 9.0 o
        n pci0
        sio2: type ST16650A with 64 bytes FIFO
        sio3: type ST16650A with 64 bytes FIFO
        sio4: type ST16650A with 64 bytes FIFO
        sio5: type ST16650A with 64 bytes FIFO
        sio6: type ST16650A with 64 bytes FIFO
        sio7: type ST16650A with 64 bytes FIFO
        sio8: type ST16650A with 64 bytes FIFO
        sio9: type ST16650A with 64 bytes FIFO

Преобразовать обычный текста в формат PostScript можно с помощью утилиты a2ps. Её удобно использовать для печати обычных ASCII файлов (подробно о настройке lpd-фильтров печати и сетевой печати, отдельная страница этого сайта посвящена вопросам безопасности). Основная проблема с русскими буквами.

Чтобы появились русские буквы:

Смотрим, где a2ps ищет шрифты:

a2ps --list=defaults

Скачиваем русские шрифты i18n-fonts-0.1.tar.gz (или более новую версию, если она появилась). Эти шрифты можно найти на многих ftp-серверах, в частности, на ftp://ftp.enst.fr/pub/unix/a2ps/.

Распаковываем этот архив. Там есть две директории: afm и fonts. Копируем их содержимое в соответствующие директории, выданные командой a2ps --list=defaults.

Запускаем скрипт afm/make_fonts_map.sh. Он находится в той же директории, что и .afm-файлы (есть он и в дистрибутиве шрифтов). Он создаёт файл fonts.map.new, этим файлом надо заменить существующий fonts.map.

Всё шрифты привязаны.

Пробуем:

a2ps -X koi8 text >text.ps

Если вы не хотите каждый раз указывать кодировку вручную, то поправьте конфигурационный файл (я предпочитаю править /usr/local/etc/a2ps-site.cfg). Укажите в нём:

Options: --encoding=koi8

Проще всего воспользоваться системой LaTeX.

Сперва делаем PostScript:

#!/bin/sh
f=DBI
pod2latex -out $f.t $f.pm
( cat doc-head-12pt.tex
 perl -pe 's/section\*/section/g' $f.t.tex
 cat doc-tail.tex ) > $f.tex
latex $f.tex
latex $f.tex
dvips -o $f.ps $f.dvi

Совет: если вы создаёте русский POD-документ и вам выдаётся странная ошибка, что POD не обнаружен, то поправьте в модуле Pod::Find строчку unless(-f $file && -T _ && ($file =~ /\.(pod|pm|plx?)\z/i || -x _ )). Выкиньте из неё проверку -T — она не воспринимает файл, как текстовый, если в нём есть не-ASCII символы, коими являются русские буквы.

Здесь предполагается, что DBI.pm (или любой другой файл с POD-документацией) находится в текущей директории, а файлы doc-head-12pt.tex и doc-tail.tex имеют примерно следующее содержание:

файл doc-head-12pt.tex:

% Задаём глобальные атрибуты документа
%\documentclass[11pt, twocolumn]{article}
\documentclass[11pt]{article}
%\usepackage[magstep2]{scale}

%\usepackage[a3paper]{geometry}

% Изменяем поля
\addtolength{\hoffset}{-.9in}
\addtolength{\textwidth}{1.8in}
\addtolength{\voffset}{-1.1in}
\addtolength{\textheight}{2.2in}
% Отступ абзацев
\setlength{\parindent}{1cm}
% Расстояние между абзацами
\setlength{\parskip}{0pt}
% Русский стиль оформления абзацев
%\usepackage{indentfirst}

% Оговариваем кодировку документа
% (обычно POD-документы англоязычны, но вы можете создать
% свой собственный на любом языке)
%\usepackage[cp866]{inputenc}
% \usepackage[koi8-r]{inputenc}
% \usepackage[russian]{babel}
% \selectlanguage{russian}
%\usepackage{draftcopy}

% Включаем графический пакет
% (это только для опытных пользователей, которые
% сами разрабатывают документацию в POD)
%\usepackage[dvips]{graphicx}
%\graphicspath{{ps/}}
% Макрос для вставки картинок
%\newcommand{\inspsfig}[3]{
%\begin{figure}[!htbp]
%\begin{center}
%\includegraphics[angle=0, width=#2\textwidth]{#1}
%\end{center}
%\caption{#3}
%\label{text}
%\end{figure}
%}

% Задаём межстрочный интервал
\linespread{1}

% Документ начался
\begin{document}
% В начале документа генерируем оглавление и ...
\tableofcontents
% ... список иллюстраций
%\listoffigures
% Можно начать документ со следующей страницы
\newpage
% а можно просто задать отступ
%\vspace{50mm}

Большинство директив здесь закомментированны, но они могу оказать полезны. А иные вам, возможно, захочется закомментировать.

файл doc-tail.tex:

\end{document}

Скрипт создаёт PS-файл с которым можно сделать любые преобразования. Например, если на выходе нужен буклет, то это можно сделать так:

#/bin/sh
f=DBI
pstops '4:-3L@.7(21cm,0)+0L@.7(21cm,14.85cm)' $f.ps $f-up.ps
pstops '4:1L@.7(21cm,0)+-2L@.7(21cm,14.85cm)' $f.ps $f-down.ps

Получатся два файла (у нас: DBI-up.ps и DBI-down.ps). Это все верхние и все нижние странички. То есть печатаете сперва верхние, потом переворачиваете всю пачку и печатаете нижние. Потом складываете пачку пополам, прошиваете, и буклет готов.

Все полученные PSы можно переделать в PDFы:

#/bin/sh
gs -sOutputFile=${1%.ps}.pdf \
 -dBATCH -dNOPAUSE \
 -sPAPERSIZE=a4 \
 -sDEVICE=pdfwrite \
 $1

Очень удобный способ генерации паролей:
 
openssl rand -base64 24

Для генерации md5-сумм существуют отдельные утилиты (под FreeBSD — md5, под Linux — md5sum), но выдают информацию в разных форматах. openssl — более универсальный метод:
 
openssl md5 файл

Зашифровать файл:

openssl enc -aes-256-cbc -salt -in входной_файл -out зашифрованный_файл

Эта команда дважды спросит пароль для шифрования.

openssl enc -d -aes-256-cbc -in зашифрованный_файл -out расшифрованный_файл

Спросит пароль.

Того же самого эффекта можно доиться, управляя стандартными потоками:

# шифруем
openssl enc -aes-256-cbc -salt < входной_файл > зашифрованный_файл
# расшифровываем
openssl enc -d -aes-256-cbc < зашифрованный_файл > расшифрованный_файл

Полезный пример:

# создаём защищённый паролем tar-архив
tar czf - your_dir | openssl enc -aes-256-cbc -salt >file.tgz
# распаковываем этот архив
openssl enc -d -aes-256-cbc < file.tgz | tar xzf -

Создать patch:
 
diff старый_файл новый_файл > patch_файл
 
 Наложить patch:
 
patch старый_файл patch_файл
 
Естественно порядок файлов везде важен.

Во FreeBSD есть две утилиты для подсчёта md5-сумм файлов. Они выдают один а тот же результат, но в несколько разном формате, что очень неудобно, если надо сравнить файлы (по суммам), лежащие на машинах. Поэтому я написал маленький скрипт, эмитирующий поведение недостающей утилиты.
 
!/bin/sh
md5 -- "$@" | sed -E 's/^MD5 \((.*)\) = ([^[:space:]]+)/\2  \1/'
 
Они, конечно, не позволяют использовать ключи командной строки, но обычно это как раз то, что нужно.

Очень полезная утилита smartctl

/usr/local/sbin/smartctl -a /dev/ad4

выдаст полную информацию по указанному диску, вот лишь, некоторые поля:

ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
 1 Raw_Read_Error_Rate 0x000f 100 100 051 Pre-fail Always - 0
 3 Spin_Up_Time 0x0007 253 253 025 Pre-fail Always - 5760
 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 77
 7 Seek_Error_Rate 0x000f 253 253 051 Pre-fail Always - 0
 8 Seek_Time_Performance 0x0025 253 253 015 Pre-fail Offline - 0
 9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 5899
 10 Spin_Retry_Count 0x0033 253 253 051 Pre-fail Always - 0
 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 61
194 Temperature_Celsius 0x0022 050 043 000 Old_age Always - 50
196 Reallocated_Event_Count 0x0032 253 253 000 Old_age Always - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x000a 100 100 000 Old_age Always - 0
201 Soft_Read_Error_Rate 0x000a 100 100 000 Old_age Always - 0
202 TA_Increase_Count 0x0032 253 253 000 Old_age Always - 0

На самом деле информации выдаётся на много больше.
Информация о нагрузке на диски в реальном масштабе времени: gstat и iostat -w 1.
Информация о swap'e: swapctl -lh
Информация о всех открытых файлах fstat.
Есть ещё systat.

Демон печати по умолчанию запускается в очень беспечном режиме, позволяя практически кому угодно использовать вашу машину для печати. Чтобы оставить право печати только себе, запустите lpd с ключом -s:
 
killall lpd
lpd -s
 
Чтобы сервер запускался сам с этим ключом, при старте системы, добавьте в /etc/rc.conf строки:
 
lpd_enable="YES"
lpd_flags="-s"

По умолчанию syslogd запускается с ключом -s, это обеспечивает некоторый уровень защиты. Но чтобы демон не пытался слушать внешние порты, его следует запускать с ключом -ss. Для этого пишем в /etc/rc.conf:
 
 syslogd_flags="-ss"

Все просто, потому и быстро забывается ;)

1. Устанавливаем:
root@localhost# pkg_add -r ntp

2. Записываем в /etc/crontab:
55    23    *    *    *    root    /usr/sbin/ntpdate ntp.rinet.ru
Думаю, за пять минут до полуночи, раз в сутки - достаточно для весьма точной синхронизации времени.
P.S.: ntp.rinet.ru - это сервер точного времени моего провайдера. В принципе, открыт для всего интернета, но лучше поискать ближайший.

Форма входа

Поиск

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024