<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-774920690559205587</id><updated>2011-11-05T07:47:49.282+02:00</updated><category term='virtualization'/><category term='mail'/><category term='active directory'/><category term='proxy'/><category term='cluster'/><category term='perl'/><category term='tomcat'/><category term='http'/><category term='BSD'/><category term='rhel'/><category term='groupware'/><category term='ldap'/><category term='wrt'/><category term='shell'/><category term='tips'/><category term='spam'/><category term='zope'/><category term='torrent'/><category term='Solaris'/><category term='debian'/><category term='windows'/><category term='performance'/><category term='rootconf'/><category term='firewall'/><category term='raid'/><category term='ipmi'/><category term='snort'/><category term='update'/><category term='backup'/><category term='linux'/><category term='apache'/><category term='hack'/><category term='bonding'/><category term='centos'/><category term='cvs'/><category term='boot'/><category term='java'/><category term='mysql'/><category term='authentication'/><category term='internet explorer'/><category term='php'/><category term='security'/><category term='pptp'/><category term='nagios'/><category term='ssh'/><category term='monitoring'/><category term='blog'/><category term='file system'/><category term='X'/><category term='pdf'/><category term='oracle'/><category term='webservice'/><category term='exim'/><category term='print'/><category term='plone'/><category term='antivirus'/><category term='HA'/><category term='diagram'/><category term='dns'/><category term='imap'/><category term='kernel'/><category term='samba'/><category term='certificate'/><category term='bacula'/><category term='snmp'/><category term='vpn'/><category term='ubuntu'/><category term='error'/><category term='ftp'/><category term='svn'/><title type='text'>Заметки администратора</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default?start-index=101&amp;max-results=100'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>107</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-1423183544003533399</id><published>2009-09-24T15:47:00.005+02:00</published><updated>2009-09-25T13:50:24.471+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>Tomcat 6 на 80-м порту</title><content type='html'>Данная заметка описывает "с нуля" процесс установки и конфигурирования Tomcat 6 на 80-м порту для Linux Debian 5.0 Lenny.&lt;br /&gt;Для работы Tomcat необходимо наличие Java (пакет sun-java6-jdk  (или хотя бы sun-java6-jre) из non-free репозитария). 6-го Tomcat пока нет в Debian Stable версии, поэтому ставим всё руками.&lt;br /&gt;Скачиваем, распаковываем, подготавливаем пользователя и наводим порядок с правами.&lt;br /&gt;&lt;pre&gt;wget http://www.apache.lt/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz&lt;br /&gt;tar zxf apache-tomcat-6.0.20.tar.gz&lt;br /&gt;mv apache-tomcat-6.0.20/ /opt/&lt;br /&gt;cd /opt&lt;br /&gt;ln -s apache-tomcat-6.0.20/ tomcat&lt;br /&gt;useradd --system --home-dir /opt/tomcat tomcat&lt;br /&gt;chown -R tomcat:tomcat /opt/apache-tomcat-6.0.20/&lt;br /&gt;mkdir /var/run/tomcat &amp;amp;&amp;amp; chown tomcat /var/run/tomcat&lt;br /&gt;ln -s /var/log/tomcat /opt/tomcat/logs/&lt;/pre&gt;В файл /etc/profile добавляем описание переменной JAVA_HOME&lt;br /&gt;&lt;pre&gt;JAVA_HOME=/usr/lib/jvm/java-6-sun/&lt;br /&gt;export JAVA_HOME&lt;/pre&gt;Как сказано в &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/setup.html"&gt;официальной документации&lt;/a&gt; для работы Tomcat на привилигерованном порту (коим является порт 80) от имени обычного пользователя необходимо использовать jsvc:&lt;br /&gt;&lt;pre&gt;cd /opt/tomcat/bin&lt;br /&gt;tar xvfz jsvc.tar.gz&lt;br /&gt;cd jsvc-src&lt;br /&gt;autoconf&lt;br /&gt;./configure --with-java=/usr/lib/jvm/java-6-sun/&lt;br /&gt;make&lt;br /&gt;cp jsvc ..&lt;br /&gt;cd ..&lt;/pre&gt;В основном конфигурационном файле tomcat'а, меняем порт на 80&lt;br /&gt;&lt;pre&gt;connector port="80" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443"&lt;/pre&gt;Осталось подготовить init-скрипт и сконфигурировать автоматический запуск tomcat-сервиса&lt;pre&gt;# cat &gt; /etc/init.d/tomcat&lt;br /&gt;#! /bin/sh -e&lt;br /&gt;#&lt;br /&gt;# /etc/init.d/tomcat -- startup script for the Tomcat 6.0 servlet engine&lt;br /&gt;#&lt;br /&gt;### BEGIN INIT INFO&lt;br /&gt;# Provides:          tomcat&lt;br /&gt;# Required-Start:    $local_fs $remote_fs $network&lt;br /&gt;# Required-Stop:     $local_fs $remote_fs $network&lt;br /&gt;# Should-Start:      $named&lt;br /&gt;# Should-Stop:       $named&lt;br /&gt;# Default-Start:     2 3 4 5&lt;br /&gt;# Default-Stop:      0 1 6&lt;br /&gt;# Short-Description: Start Tomcat.&lt;br /&gt;# Description:       Start the Tomcat servlet engine.&lt;br /&gt;### END INIT INFO&lt;br /&gt;&lt;br /&gt;NAME=tomcat&lt;br /&gt;DESC="Tomcat 6.0 servlet engine"&lt;br /&gt;CATALINA_HOME=/opt/$NAME&lt;br /&gt;TOMCAT_USER=tomcat&lt;br /&gt;LOGDIR="/opt/tomcat/logs"&lt;br /&gt;PIDFILE="/var/run/tomcat/$NAME.pid"&lt;br /&gt;TMP_DIR=/tmp&lt;br /&gt;CATALINA_OPTS=""&lt;br /&gt;CLASSPATH=\&lt;br /&gt;#$JAVA_HOME/lib/tools.jar:\&lt;br /&gt;#$CATALINA_HOME/bin/commons-daemon.jar:\&lt;br /&gt;$CATALINA_HOME/bin/bootstrap.jar&lt;br /&gt;&lt;br /&gt;case "$1" in&lt;br /&gt;start)&lt;br /&gt; echo "Starting $DESC using Java from $JAVA_HOME"&lt;br /&gt; #&lt;br /&gt; # Start Tomcat&lt;br /&gt; #&lt;br /&gt; $CATALINA_HOME/bin/jsvc \&lt;br /&gt; -user $TOMCAT_USER \&lt;br /&gt; -home $JAVA_HOME \&lt;br /&gt; -Dcatalina.home=$CATALINA_HOME \&lt;br /&gt; -Djava.io.tmpdir=$TMP_DIR \&lt;br /&gt; -wait 10 \&lt;br /&gt; -pidfile $PIDFILE \&lt;br /&gt; -outfile $CATALINA_HOME/logs/catalina.out \&lt;br /&gt; -errfile '&amp;amp;1' \&lt;br /&gt; $CATALINA_OPTS \&lt;br /&gt; -cp $CLASSPATH \&lt;br /&gt; org.apache.catalina.startup.Bootstrap&lt;br /&gt; #&lt;br /&gt; # To get a verbose JVM&lt;br /&gt; #-verbose \&lt;br /&gt; # To get a debug of jsvc.&lt;br /&gt; #-debug \&lt;br /&gt; exit $?&lt;br /&gt; ;;&lt;br /&gt;stop)&lt;br /&gt; echo "Stopping $DESC"&lt;br /&gt; #&lt;br /&gt; # Stop Tomcat&lt;br /&gt; #&lt;br /&gt; $CATALINA_HOME/bin/jsvc \&lt;br /&gt; -stop \&lt;br /&gt; -pidfile $PIDFILE \&lt;br /&gt; org.apache.catalina.startup.Bootstrap&lt;br /&gt; exit $?&lt;br /&gt; ;;&lt;br /&gt;restart|force-reload)&lt;br /&gt; $0 stop&lt;br /&gt; sleep 1&lt;br /&gt; $0 start&lt;br /&gt; ;;&lt;br /&gt;*)&lt;br /&gt; echo "Usage: /etc/init.d/tomcat {start|stop|restart}" &gt;&amp;amp;2&lt;br /&gt; exit 1&lt;br /&gt; ;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;exit 0&lt;br /&gt;[Ctrl+D]&lt;br /&gt;# chmod +x /etc/init.d/tomcat&lt;br /&gt;# update-rc.d tomcat defaults&lt;br /&gt;Adding system startup for /etc/init.d/tomcat ...&lt;br /&gt;/etc/rc0.d/K20tomcat -&gt; ../init.d/tomcat&lt;br /&gt;/etc/rc1.d/K20tomcat -&gt; ../init.d/tomcat&lt;br /&gt;/etc/rc6.d/K20tomcat -&gt; ../init.d/tomcat&lt;br /&gt;/etc/rc2.d/S20tomcat -&gt; ../init.d/tomcat&lt;br /&gt;/etc/rc3.d/S20tomcat -&gt; ../init.d/tomcat&lt;br /&gt;/etc/rc4.d/S20tomcat -&gt; ../init.d/tomcat&lt;br /&gt;/etc/rc5.d/S20tomcat -&gt; ../init.d/tomcat&lt;br /&gt;&lt;/pre&gt;Запускаем сервис&lt;br /&gt;&lt;pre&gt;# /etc/init.d/tomcat start&lt;br /&gt;Starting Tomcat 6.0 servlet engine using Java from /usr/lib/jvm/java-6-sun&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.klawitter.de/tomcat80.html"&gt;How to run Tomcat on Port 80&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/setup.html"&gt;Tomcat Setup&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-1423183544003533399?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/1423183544003533399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=1423183544003533399' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1423183544003533399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1423183544003533399'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2009/09/tomcat-6-80.html' title='Tomcat 6 на 80-м порту'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2234290920318035062</id><published>2009-09-01T08:14:00.004+02:00</published><updated>2009-09-01T09:26:33.649+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='bacula'/><title type='text'>Bacula Heartbeat Interval</title><content type='html'>При использовании резервного копирования Bacula вылезает ньюанс, если между Director-сервером и FD-сервером (клиентом) находится маршрутизатор (используется NAT) - выполняемая задача (job) может вдруг ни с того, ни с сего остановиться с ошибкой "Fatal error: Network error with FD during Backup: ERR=Connection reset by peer".&lt;br /&gt;Дело всё в том, что Director, инициируя задачу на клиенте, в процессе выполнения просто ждёт - весь трафик идёт между FD-сервером (клиентом) и SD-сервером (storage). Маршрутизатор спустя установленное время (timeout, у cisco - 7200 секунд) решив, что соединение между Director-сервером и FD-сервером (клиентом) умерло, просто удаляет информацию о соединении из своей таблицы соединений, обрывая таким образом выполняемую задачу.&lt;br /&gt;Решается проблема тривиально - на FD-сервере (клиенте) в конфигурационном файле в секцию FileDaemon добавить: &lt;pre&gt;Heartbeat Interval = 60&lt;/pre&gt;При действующем Heartbeat-интервале FD-сервер в процессе выполнения работы пересылает heartbeat-пакеты Director-серверу, создавая таким образом активность в соединении и маршрутизатор, видя, что соединение "живо", не вмешивается.&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.bacula.org/en/rel-manual/Client_Fi_daemon_Configura.html#8876"&gt;Client/File daemon Configuration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mail-archive.com/bacula-users@lists.sourceforge.net/msg36797.html"&gt;Timeout (?) problems with some Full backups&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2234290920318035062?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2234290920318035062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2234290920318035062' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2234290920318035062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2234290920318035062'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2009/09/bacula-heartbeat-interval.html' title='Bacula Heartbeat Interval'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-4194258920587265045</id><published>2009-08-26T13:18:00.005+02:00</published><updated>2009-08-26T14:44:20.767+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><category scheme='http://www.blogger.com/atom/ns#' term='ipmi'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><title type='text'>Пример конфигурирования IPMI на сервере</title><content type='html'>IPMI - интеллектуальный интерфейс управления платформой, помогающий следить (и не только) за сенсорами состояния железа на сервере (температуры, напряжения, скоростью вращения вентиляторов, состоянием источников питания и т.п.).&lt;br /&gt;Задача - сконфигурировать IPMI-интерфейс на сервере, с возможностью получать данные о сенсорах по сети. Операционная система RHEL/CentOS 5, сервер Intel S5000PAL.&lt;br /&gt;Для начала нужно установить пакеты с модулями и необходимыми утилитами:&lt;br /&gt;&lt;pre&gt;yum install OpenIPMI-tools OpenIPMI&lt;br /&gt;chkconfig ipmi on &amp;amp;&amp;amp; service ipmi start&lt;br /&gt;Starting ipmi drivers:                                     [  OK  ]&lt;/pre&gt;Прежде чем приступать к конфигурированию, необходимо решить, на каком физическом сетевом адаптере сервер будет отвечать на IPMI-запросы. На языке IPMI, сетевой адаптер - это канал. Первый канал соответствует первому сетевому интерфейсу, но их mac-адреса отличаются, поэтому можно смело выбирать незанятую ip-сеть для IPMI-мониторинга и назначать выбранному каналу (сетевой плате) ip-адрес для использования IPMI.&lt;br /&gt;Для примера я выбрал первый канал (первую сетевую плату).&lt;br /&gt;&lt;pre&gt;ipmitool shell&lt;br /&gt;ipmitool&gt; lan set 1 ipaddr 10.10.16.115&lt;br /&gt;Setting LAN IP Address to 10.10.16.115&lt;br /&gt;ipmitool&gt; lan set 1 defgw ipaddr 10.10.16.254&lt;br /&gt;Setting LAN Default Gateway IP to 10.10.16.254&lt;/pre&gt;Открываем возможность использования IPMI по сети, а также говорим, что будем использовать MD5-хэширования при аутентификации:&lt;br /&gt;&lt;pre&gt;ipmitool&gt; lan set 1 access on&lt;br /&gt;ipmitool&gt; lan set 1 auth ADMIN MD5&lt;/pre&gt;Создаем пользователя, включаем его и назначем ему ADMINISTRATOR-права:&lt;br /&gt;&lt;pre&gt;ipmitool&gt; user set name 2 monuser&lt;br /&gt;ipmitool&gt; user set password 2 monpassword&lt;br /&gt;ipmitool&gt; user enable 2&lt;br /&gt;ipmitool&gt; channel setaccess 1 2 ipmi=on privilege=4&lt;br /&gt;ipmitool&gt; user list 1&lt;br /&gt;ID  Name             Enabled Callin  Link Auth  IPMI Msg   Channel Priv Limit&lt;br /&gt;2   monuser           true    true    false      true       ADMINISTRATOR&lt;br /&gt;ipmitool&gt;&lt;/pre&gt;Вот так выглядит первый канал, после всех приготовлений:&lt;br /&gt;&lt;pre&gt;ipmitool&gt; lan print 1&lt;br /&gt;Set in Progress         : Set Complete&lt;br /&gt;Auth Type Support       : NONE MD5 PASSWORD&lt;br /&gt;Auth Type Enable        : Callback :&lt;br /&gt;                     : User     :&lt;br /&gt;                     : Operator :&lt;br /&gt;                     : Admin    : MD5&lt;br /&gt;                     : OEM      :&lt;br /&gt;IP Address Source       : BIOS Assigned Address&lt;br /&gt;IP Address              : 10.10.16.115&lt;br /&gt;Subnet Mask             : 255.255.255.0&lt;br /&gt;MAC Address             : 00:04:23:dc:12:d2&lt;br /&gt;SNMP Community String   :&lt;br /&gt;IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10&lt;br /&gt;BMC ARP Control         : ARP Responses Enabled, Gratuitous ARP Enabled&lt;br /&gt;Gratituous ARP Intrvl   : 2.0 seconds&lt;br /&gt;Default Gateway IP      : 10.10.16.254&lt;br /&gt;Default Gateway MAC     : 00:00:00:00:00:00&lt;br /&gt;Backup Gateway IP       : 0.0.0.0&lt;br /&gt;Backup Gateway MAC      : 00:00:00:00:00:00&lt;br /&gt;RMCP+ Cipher Suites     : 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14&lt;br /&gt;Cipher Suite Priv Max   : XXXXXXXXXXXXXXX&lt;br /&gt;                     :     X=Cipher Suite Unused&lt;br /&gt;                     :     c=CALLBACK&lt;br /&gt;                     :     u=USER&lt;br /&gt;                     :     o=OPERATOR&lt;br /&gt;                     :     a=ADMIN&lt;br /&gt;                     :     O=OEM&lt;br /&gt;ipmitool&gt;&lt;/pre&gt;Теперь с monitoring-сервера можно обращаться к IPMI-интерфейсу и забирать информацию об интересующих сенсорах:&lt;br /&gt;&lt;pre&gt;ipmitool -I lan -A MD5 -U monuser -P monpassword -H 10.10.16.115 power status&lt;br /&gt;Chassis Power is on&lt;br /&gt;ipmitool -I lan -A MD5 -U monuser -P monpassword -H 10.10.16.115 sensor&lt;br /&gt;BB +1.2V Vtt     | 1.197      | Volts      | ok    | na        | 1.096     | 1.134     | 1.285     | 1.323     | na     &lt;br /&gt;BB +1.5V AUX     | 1.474      | Volts      | ok    | na        | 1.334     | 1.373     | 1.622     | 1.669     | na     &lt;br /&gt;BB +1.5V         | 1.482      | Volts      | ok    | na        | 1.326     | 1.365     | 1.625     | 1.677     | na     &lt;br /&gt;BB +1.8V         | 1.795      | Volts      | ok    | na        | 1.622     | 1.673     | 1.907     | 1.969     | na     &lt;br /&gt;BB +3.3V         | 3.337      | Volts      | ok    | na        | 2.941     | 3.027     | 3.578     | 3.681     | na     &lt;br /&gt;BB +3.3V STB     | 3.388      | Volts      | ok    | na        | 3.027     | 3.113     | 3.509     | 3.612     | na     &lt;br /&gt;BB +1.5V ESB     | 1.505      | Volts      | ok    | na        | 1.357     | 1.404     | 1.591     | 1.638     | na     &lt;br /&gt;BB +5V           | 5.070      | Volts      | ok    | na        | 4.446     | 4.576     | 5.408     | 5.564     | na     &lt;br /&gt;BB +12V AUX      | 11.842     | Volts      | ok    | na        | 10.416    | 10.726    | 13.144    | 13.578    | na     &lt;br /&gt;BB +0.9V         | 0.902      | Volts      | ok    | na        | 0.811     | 0.835     | 0.950     | 0.979     | na     &lt;br /&gt;Serverboard Temp | 28.000     | degrees C  | ok    | na        | 5.000     | 10.000    | 61.000    | 66.000    | na     &lt;br /&gt;Ctrl Panel Temp  | 22.000     | degrees C  | ok    | na        | 0.000     | 5.000     | 44.000    | 48.000    | na     &lt;br /&gt;Fan 2            | 7267.000   | RPM        | ok    | na        | 1720.000  | 1978.000  | na        | na        | na     &lt;br /&gt;Fan 4            | 5590.000   | RPM        | ok    | na        | 1720.000  | 1978.000  | na        | na        | na     &lt;br /&gt;Fan 5            | 7316.000   | RPM        | ok    | na        | 2046.000  | 2356.000  | na        | na        | na     &lt;br /&gt;PS1 AC Current   | 0.434      | Amps       | ok    | na        | na        | na        | 11.222    | 11.904    | na     &lt;br /&gt;PS2 AC Current   | 0.434      | Amps       | ok    | na        | na        | na        | 11.222    | 11.904    | na     &lt;br /&gt;PS1 +12V Current | 7.000      | Amps       | ok    | na        | na        | na        | 66.000    | 70.000    | na     &lt;br /&gt;PS2 +12V Current | 7.000      | Amps       | ok    | na        | na        | na        | 66.000    | 70.000    | na     &lt;br /&gt;PS1 +12V Power   | 80.000     | Watts      | ok    | na        | na        | na        | 792.000   | 840.000   | na   &lt;br /&gt;...&lt;/pre&gt;И это только сбор информации, а можно и питанием удалённо управлять, в обход операционной системы, так что будете аккуратны :)&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.mascanc.net/%7Emax/ipmi/ipmi.html"&gt;An introduction to IPMI (... to be completed)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lonesysadmin.net/2005/09/23/configuring-and-securing-ipmi-on-dell-poweredge-x8xx-hardware/"&gt;Configuring and Securing IPMI on Dell PowerEdge x8xx Hardware&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ipmitool.sourceforge.net/manpage.html"&gt;ipmitool manpage&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-4194258920587265045?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/4194258920587265045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=4194258920587265045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4194258920587265045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4194258920587265045'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2009/08/ipmi.html' title='Пример конфигурирования IPMI на сервере'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-1821787964638445106</id><published>2009-08-21T08:15:00.002+02:00</published><updated>2009-08-21T08:53:37.388+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>В помощь администратору: Autossh</title><content type='html'>Иногда необходимо иметь возможность удалённо управлять какими-то системами, которые находятся за firewall'ами, которые Вы не контролируете. В таких случаях помогают ssh-тунели с использованием перенаправления (forwarding) портов. Например, допустим имеется удалённая машина trick, которая находится за маршрутизатором в удалённой локальной сети, и вторая машина rose имеющая внешний ip-адрес. Для того, чтобы иметь возможность с rose заходить на trick (либо использовать какой-то сервис на trick), необходимо поднять туннель с использованием перенаправления удаленных портов (remote port forwarding):&lt;br /&gt;&lt;pre&gt;ssh -f -N username@rose -R 3722:127.0.0.1:22&lt;/pre&gt;Получаем такую картину: на rose в списке открытых портов появляется порт 3722, который на самом деле перенаправляет все пакеты на 22-й порт trick-системы. После этого можно логиниться через ssh на trick из rose:&lt;br /&gt;&lt;pre&gt;ssh username@127.0.0.0 -p 3722&lt;/pre&gt;А что делать, чтобы тунели были постоянно доступны? Ведь ssh-соединения бывают рвуться и тогда опять необходимо с trick-системы инициировать тунель. А если trick находится в 100 км от Вас? А если их таких у Вас 20? :) Вот тут-то и помогает замечательная вещь - &lt;span style="font-weight: bold;"&gt;autossh&lt;/span&gt;, утилитка занимающаяся тем, что поддерживает поднятые ssh-тунели в рабочем состоянии. Перед её запуском необходимо установить переменную AUTOSSH_PORT, указывающую номер порта, который будет использоваться для heartbeat-пакетов на предмет того - жив ли тунель.&lt;br /&gt;Также, если тунели необходимо поднимать во время старта системы, советуют установить переменную AUTOSSH_GATETIME=0. Переменная AUTOSSH_DEBUG позволит получить из логов дополнительную информацию о ходе процесса.&lt;br /&gt;&lt;pre&gt;export AUTOSSH_DEBUG=1&lt;br /&gt;export AUTOSSH_GATETIME=0&lt;br /&gt;export AUTOSSH_PORT=20037&lt;br /&gt;autossh -f -N username@rose -R 3722:127.0.0.1:22&lt;/pre&gt;Без ключа -f апликация не отправляется в фон, поэтому данный режим полезен, чтобы разбираться с проблемами при установлении тунеля, если они возникают. &lt;br /&gt;В приведенном выше примере кроме портов rose:3722 и trick:22 поднимается ещё 3 дополнительных (так как установлена переменная AUTOSSH_PORT) - trick:20037, rose:20037, trick:20038, связанных между собой в цепочку для прохождения heartbeat-пакета. Таким образом, что отправляя запрос на trick:20037, пакет приходит на rose:20037, который в свою очередь перенаправляет его дальше на trick:20038. Получается своеобразный "бумеранг", позволяющий следить за тунелем.&lt;br /&gt;&lt;br /&gt;Links:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://linux.com/archive/feature/134133"&gt;Keeping your SSH connections alive with autossh&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-1821787964638445106?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/1821787964638445106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=1821787964638445106' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1821787964638445106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1821787964638445106'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2009/08/autossh.html' title='В помощь администратору: Autossh'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2911335315476385071</id><published>2009-07-03T13:50:00.009+03:00</published><updated>2009-07-08T17:45:53.395+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><category scheme='http://www.blogger.com/atom/ns#' term='bonding'/><category scheme='http://www.blogger.com/atom/ns#' term='HA'/><title type='text'>Конфигурирование bonding для сетевых интерфейсов на RHEL/CentOS 5</title><content type='html'>Конфигурация необходимых сетевых интерфейсов:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;eth0&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;# cat &gt; /etc/sysconfig/network-scripts/ifcfg-eth0&lt;br /&gt;DEVICE=eth0&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;ONBOOT=yes&lt;br /&gt;MASTER=bond0&lt;br /&gt;SLAVE=yes&lt;br /&gt;USERCTL=no&lt;br /&gt;[Ctrl+D]&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;eth1:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;# cat &gt; /etc/sysconfig/network-scripts/ifcfg-eth1&lt;br /&gt;DEVICE=eth1&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;ONBOOT=yes&lt;br /&gt;MASTER=bond0&lt;br /&gt;SLAVE=yes&lt;br /&gt;USERCTL=no&lt;br /&gt;[Ctrl+D]&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;bond0:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;# cat &gt; /etc/sysconfig/network-scripts/ifcfg-bond0&lt;br /&gt;DEVICE=bond0&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;ONBOOT=yes&lt;br /&gt;NETWORK=10.10.70.0&lt;br /&gt;IPADDR=10.10.70.77&lt;br /&gt;NETMASK=255.255.255.0&lt;br /&gt;USERCTL=NO&lt;br /&gt;[Ctrl+D]&lt;/pre&gt;Загружаем модуль и перегружаем сеть:&lt;br /&gt;&lt;pre&gt;# cat &gt;&gt; /etc/modprobe.conf&lt;br /&gt;alias bond0 bonding&lt;br /&gt;options bond0 mode=1 miimon=100&lt;br /&gt;[Ctrl+D]&lt;br /&gt;# service network restart&lt;/pre&gt;Просмотр статуса:&lt;br /&gt;&lt;pre&gt;# cat /proc/net/bonding/bond0&lt;br /&gt;Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)&lt;br /&gt;&lt;br /&gt;Bonding Mode: fault-tolerance (active-backup)&lt;br /&gt;Primary Slave: None&lt;br /&gt;Currently Active Slave: eth1&lt;br /&gt;MII Status: up&lt;br /&gt;MII Polling Interval (ms): 100&lt;br /&gt;Up Delay (ms): 0&lt;br /&gt;Down Delay (ms): 0&lt;br /&gt;&lt;br /&gt;Slave Interface: eth0&lt;br /&gt;MII Status: up&lt;br /&gt;Link Failure Count: 2&lt;br /&gt;Permanent HW addr: 00:1b:11:50:7a:01&lt;br /&gt;&lt;br /&gt;Slave Interface: eth1&lt;br /&gt;MII Status: up&lt;br /&gt;Link Failure Count: 1&lt;br /&gt;Permanent HW addr: 00:18:fe:8c:a1:96&lt;/pre&gt;&lt;br /&gt;Links:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.technomenace.com/2009/06/implement-bonding-rhel-5/"&gt;Implement bonding in RHEL 5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.howtoforge.com/network_card_bonding_centos"&gt;Network Card Bonding On CentOS&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2911335315476385071?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2911335315476385071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2911335315476385071' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2911335315476385071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2911335315476385071'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2009/07/bonding-rhelcentos-5.html' title='Конфигурирование bonding для сетевых интерфейсов на RHEL/CentOS 5'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3033736328776109896</id><published>2009-06-29T13:46:00.012+03:00</published><updated>2009-06-29T15:35:20.457+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dns'/><title type='text'>Как безболезненно сменить ip-адрес сайта (хоста)?</title><content type='html'>За разрешение имён хостов в ip-адреса и наоборот ответственна служба DNS. Чтобы снизить нагрузку на уполномоченные за зону (домен) сервера используется кеширование dns-запросов, и в настройках DNS-сервисов есть параметры, помогающие гибко сконфигурировать данную функциональность.&lt;br /&gt;&lt;br /&gt;В описании зоны есть параметры для вторичных серверов:&lt;br /&gt;refresh - интервал обновления зоны (в секундах) для вторичных уполномоченных серверов&lt;br /&gt;retry - интервал попытки обновления зоны (в секундах) при неудаче обновления&lt;br /&gt;expire - интервал истечения полномочий для вторичных уполномоченных серверов при неудаче обновления (в секундах)&lt;br /&gt;&lt;br /&gt;В рамках вопроса, который интересовал меня (см. subject) наиболее интересны параметры Default TTL, TTL, Minimum TTL. Они определяют время TTL (Time-to-live - "время жизни"), в течение которого DNS-серверы (кроме вторичных), получившие информацию о записях с любого DNS-сервера, будут ее хранить в своей памяти (кэше) и сообщать ее по запросам других DNS-серверов.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;TTL - этот параметр определяет период времени (в секундах), в течение которого другие DNS-сервера должны хранить запись в кэше. Если значение параметра в записи не указано, то "время жизни" определяется параметром Default TTL.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Default TTL - определяет значение параметра TTL для тех записей, для которых это значение не установлено явно. Обычно используется именно Default TTL вместо указания TTL для каждой записи.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Minimum TTL - определяет "время жизни" отрицательных ответов на запросы о ресурсах, не существующих в DNS.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Таким образом, если Вы готовитесь сменить ip-адрес сайта (хоста) и хотите об этом объявить через СМИ (с указанием конкретной даты), Вам необходимо заранее изменить (Default)TTL-записи Вашей зоны (либо конкретных хостов в зоне) на маленькие значения, например 5 минут (60 секунд), подождать, пока изменения вступят в силу и обязательно проверить.&lt;br /&gt;После того как перенос будет завершён не забудьте вернуть значения назад, чтобы снизить нагрузку на уполномоченные за Вашу зону dns-сервера.&lt;br /&gt;Безусловно, это не решит всех проблем, так как есть крупные dns-forward'еры (dns-сервера), которые используются большим числом людей (например, провайдер даёт пользоваться своим dns-сервером) и которые могут игнорировать заданные Вами TTL-значения. В данном случае ничего кроме пресловутого "ждите" не поможет. Хотя можете попробовать добраться до админов данного dns-сервера и попросить их руками выбросить из кэша данные о Вашем старом ip-адресе :)&lt;br /&gt;&lt;br /&gt;Links:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.dns-master.ru/dns-master/help/help.html"&gt;DNS-Master - Редактор файлов зон DNS :: Помощь&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bog.pp.ru/work/dns_info.html"&gt;Bog BOS: DNS (Domain Name System)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ducea.com/2006/05/21/moving-your-website-to-another-server-tune-your-dns-for-minimum-downtime/"&gt;Moving your website to another server? Tune your DNS for minimum downtime.&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3033736328776109896?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3033736328776109896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3033736328776109896' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3033736328776109896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3033736328776109896'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2009/06/dns-c.html' title='Как безболезненно сменить ip-адрес сайта (хоста)?'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-4658829437056712109</id><published>2009-06-10T14:55:00.005+03:00</published><updated>2009-07-08T17:45:39.976+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Замена PGP ключей в Debian для подписывания пакетов</title><content type='html'>Debian в очередной раз меняют pgp-ключи, которыми подписаны deb-пакеты в официальных репозитариях. Чтобы apt продолжал работать, необходимо выполнить следущее:&lt;br /&gt;&lt;pre&gt;# gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 9AA38DCD55BE302B&lt;br /&gt;gpg: keyring `/root/.gnupg/secring.gpg' created&lt;br /&gt;gpg: requesting key 55BE302B from hkp server wwwkeys.eu.pgp.net&lt;br /&gt;gpg: key 55BE302B: public key "Debian Archive Automatic Signing Key (5.0/lenny) &lt;ftpmaster@debian.org&gt;" imported&lt;br /&gt;gpg: no ultimately trusted keys found&lt;br /&gt;gpg: Total number processed: 1&lt;br /&gt;gpg:               imported: 1  (RSA: 1)&lt;br /&gt;# gpg --armor --export 9AA38DCD55BE302B | apt-key add -&lt;br /&gt;OK&lt;br /&gt;# apt-get update&lt;br /&gt;&lt;/ftpmaster@debian.org&gt;&lt;/pre&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.debian.org/News/2009/20090523"&gt;Debian Archive Signing Key to be changed&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.delodder.be/howto/apt-key-gpg-tip/"&gt;Apt-key gpg tip&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-4658829437056712109?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/4658829437056712109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=4658829437056712109' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4658829437056712109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4658829437056712109'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2009/06/pgp-debian.html' title='Замена PGP ключей в Debian для подписывания пакетов'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-8247619466985240627</id><published>2009-04-02T00:09:00.000+02:00</published><updated>2009-04-01T23:22:34.912+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rootconf'/><title type='text'>RootConf</title><content type='html'>13-14 апреля 2009 г. в Москве будет проходить &lt;a href="http://rootconf.ru/"&gt;RootConf&lt;/a&gt; - профессиональная конференция системных администраторов.&lt;br /&gt;Я буду участвовать в качестве докладчика с материалом "HA-кластер своими руками".&lt;br /&gt;Ожидается &lt;a href="http://rootconf.ru/papers2009/"&gt;масса&lt;/a&gt; интересных докладов и мастер-классов!&lt;br /&gt;По-моему отличный шанс пообщаться вживую и поделиться друг с другом опытом :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-8247619466985240627?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/8247619466985240627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=8247619466985240627' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8247619466985240627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8247619466985240627'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2009/04/rootconf.html' title='RootConf'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-7424428107870253530</id><published>2009-02-13T14:56:00.003+02:00</published><updated>2009-07-08T17:45:32.964+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><title type='text'>Локальный CentOS репозитарий</title><content type='html'>Роман Шрамко &lt;a href="http://blog.ronix.net.ua/2009/01/centos.html"&gt;напомнил&lt;/a&gt; о давней идее - организовать локальный CentOS репозитарий. Приложив минимум усилий, имеем скрипт &lt;span style=";font-family:courier new;font-size:85%;"  &gt;centos_repository_update.sh&lt;/span&gt;, который через cron всё делает автоматечески.&lt;br /&gt;&lt;pre&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;rsync="/usr/bin/rsync -aqHz --delete --delay-updates --bwlimit=512"&lt;br /&gt;mirror=mirrors.kernel.org::centos&lt;br /&gt;ver=5&lt;br /&gt;archlist="i386"&lt;br /&gt;baselist="os updates extras"&lt;br /&gt;local=/var/centos&lt;br /&gt;&lt;br /&gt;for arch in $archlist&lt;br /&gt;do&lt;br /&gt;for base in $baselist&lt;br /&gt;do&lt;br /&gt;remote=$mirror/$ver/$base/$arch/&lt;br /&gt;$rsync $remote $local/$ver/$base/$arch/&lt;br /&gt;done&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;Прежде чем запускать скрипт, необходимо создать требуемую структуру каталогов&lt;br /&gt;&lt;pre&gt;mkdir -pv /var/centos/5/{os,updates,extras}&lt;/pre&gt;Вот теперь можно запустить сам скрипт &lt;span style=";font-family:courier new;font-size:85%;"  &gt;centos_repository_update.sh&lt;/span&gt; и, пока он скачивает пакеты, сконфигурировать доступ к каталогу /var/centos через http-протокол с клиентов.&lt;br /&gt;На клиентах необходимо отредактировать описания доступных репозитариев (каталог /etc/yum.repos.d), неиспользуемые репозитарии можно отключить. Вот пример переписанного конфигурационного файла для работы с новоиспечённым локальным репозитарием:&lt;br /&gt;&lt;pre&gt;[base]&lt;br /&gt;name=CentOS-$releasever - Base&lt;br /&gt;baseurl=http://server/centos/$releasever/os/$basearch/&lt;br /&gt;gpgcheck=1&lt;br /&gt;gpgkey=http://server/centos/RPM-GPG-KEY-CentOS-5&lt;br /&gt;&lt;br /&gt;[updates]&lt;br /&gt;name=CentOS-$releasever - Updates&lt;br /&gt;baseurl=http://server/centos/$releasever/updates/$basearch/&lt;br /&gt;gpgcheck=1&lt;br /&gt;gpgkey=http://server/centos/RPM-GPG-KEY-CentOS-5&lt;br /&gt;&lt;br /&gt;[extras]&lt;br /&gt;name=CentOS-$releasever - Extras&lt;br /&gt;baseurl=http://server/centos/$releasever/extras/$basearch/&lt;br /&gt;gpgcheck=1&lt;br /&gt;gpgkey=http://server/centos/RPM-GPG-KEY-CentOS-5&lt;/pre&gt;Перед запуском утилиты yum, необходимо ещё выложить в корень (в директорию /var/centos/) репозитария открытый gpg-ключ релиза (файл /var/centos/5/os/i386/RPM-GPG-KEY-CentOS-5).&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.centos.org/modules/tinycontent/index.php?id=22"&gt;CentOS Mirroring HowTo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.ronix.net.ua/2009/01/centos.html"&gt;Локальный репозитарий для CentOS&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-7424428107870253530?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/7424428107870253530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=7424428107870253530' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7424428107870253530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7424428107870253530'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2009/02/centos.html' title='Локальный CentOS репозитарий'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6326884740144231300</id><published>2009-02-12T15:14:00.008+02:00</published><updated>2009-02-12T16:23:48.572+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wrt'/><category scheme='http://www.blogger.com/atom/ns#' term='torrent'/><title type='text'>Установка и конфигурирование transmission на dd-wrt</title><content type='html'>Железо - Linksys WRT54GL (v1.1) + NAS (HDD, доступный через CIFS/SMB), OS - dd-wrt v.24. Потребность - закрутить на всём этом хозяйстве torrent-демон &lt;a href="http://www.transmissionbt.com/"&gt;transmission&lt;/a&gt; с возможностью управления закачками через web.&lt;br /&gt;Сперва стоит позаботиться о том, чтобы файловая система jffs работала без проблем и была примонтирована (/jffs, NAS как раз для этого и нужен). На её основе будет построена новая ветка /jffs/opt, в которую будет установлены все необходимые для работы transmission пакеты &lt;a href="http://www.dd-wrt.com/wiki/index.php/Optware"&gt;Optware&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;# mkdir /jffs/opt&lt;br /&gt;# mount -o bind /jffs/opt /opt&lt;/pre&gt;Далее необходимо пройти минимальную установку Optware:&lt;br /&gt;&lt;pre&gt;# wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O /tmp/optware-install.sh&lt;br /&gt;# sh /tmp/optware-install.sh&lt;/pre&gt;Теперь можно запускать установку transmission, установив прежде переменную PATH:&lt;br /&gt;&lt;pre&gt;# export PATH=/opt/bin:/opt/sbin:$PATH&lt;br /&gt;# ipkg-opt install transmission&lt;/pre&gt;Домашней директорией для transmission будет /jffs/torrents, поэтому запускаем демон, указав необходимые параметры&lt;br /&gt;&lt;pre&gt;/opt/bin/transmission-daemon -g /jffs/torrents/.config/transmission-daemon -a "192.168.1.33"&lt;br /&gt;killall transmission-daemon&lt;/pre&gt;Запустив однажды transmission, создаётся дерево служебных подкаталогов, скаченные файлы складываются в корень созданной структуры (/jffs/torrents), конфигурационный файл - /jffs/torrents/.config/transmission-daemon/settings.json:&lt;br /&gt;&lt;pre&gt;/jffs/torrents/.config/&lt;br /&gt;/jffs/torrents/.config/transmission-daemon&lt;br /&gt;/jffs/torrents/.config/transmission-daemon/settings.json&lt;br /&gt;/jffs/torrents/.config/transmission-daemon/stats.json&lt;br /&gt;/jffs/torrents/.config/transmission-daemon/blocklists&lt;br /&gt;/jffs/torrents/.config/transmission-daemon/resume        &lt;br /&gt;/jffs/torrents/.config/transmission-daemon/torrents&lt;/pre&gt;Остаётся открыть порт 9091 для доступа к web-интерфейсу&lt;br /&gt;&lt;pre&gt;/usr/sbin/iptables -I INPUT 1 -p tcp --dport 9091 -j logaccept&lt;/pre&gt;и добавить запуск transmission в startup-скрипт&lt;br /&gt;&lt;pre&gt;mount -o bind /jffs/opt /opt&lt;br /&gt;export PATH=/opt/bin:/opt/sbin:$PATH&lt;br /&gt;/opt/bin/transmission-daemon -g /jffs/torrents/.config/transmission-daemon&lt;/pre&gt;Web-интерйейс доступен с компьютера 192.168.1.33 по адресу http://host:9091/transmission/web/.&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.dd-wrt.com/wiki"&gt;DD-Wrt Wiki&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6326884740144231300?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6326884740144231300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6326884740144231300' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6326884740144231300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6326884740144231300'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2009/02/transmission-dd-wrt.html' title='Установка и конфигурирование transmission на dd-wrt'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-8784723015349778180</id><published>2008-09-11T08:06:00.003+02:00</published><updated>2008-09-11T08:44:01.416+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>Использование LDAP-базы пользователей в Tomcat</title><content type='html'>Для аутентификации и авторизации в Tomcat очень удобно использовать LDAP-директорию. Для примера можно рассмотреть доступ к manager'у приложений, который идёт в комплекте с Tomcat (http://servername:port/manager/html). Данное приложение пропускает только тех пользователей, которые прошли аутентификацию и имеют роль manager.&lt;br /&gt;Прежде всего необходимо подготовить LDAP-директорию, она должна иметь примерно такую структуру&lt;br /&gt;&lt;pre&gt;dn: o=My Organization,c=RU&lt;br /&gt;o: My Organization&lt;br /&gt;objectClass: organization&lt;br /&gt;objectClass: top&lt;br /&gt;&lt;br /&gt;dn: ou=People,o=My Organization,c=RU&lt;br /&gt;objectClass: top&lt;br /&gt;objectClass: organizationalUnit&lt;br /&gt;ou: People&lt;br /&gt;&lt;br /&gt;dn: uid=user3,ou=People,o=My Organization,c=RU&lt;br /&gt;objectClass: top&lt;br /&gt;objectClass: person&lt;br /&gt;objectClass: organizationalPerson&lt;br /&gt;objectClass: inetOrgPerson&lt;br /&gt;sn: Test&lt;br /&gt;uid: user3&lt;br /&gt;userPassword: password3&lt;br /&gt;cn: User 3&lt;br /&gt;&lt;br /&gt;dn: uid=user2,ou=People,o=My Organization,c=RU&lt;br /&gt;cn: User 2&lt;br /&gt;objectClass: inetOrgPerson&lt;br /&gt;objectClass: organizationalPerson&lt;br /&gt;objectClass: person&lt;br /&gt;objectClass: top&lt;br /&gt;sn: Test&lt;br /&gt;uid: user2&lt;br /&gt;userPassword: password2&lt;br /&gt;&lt;br /&gt;dn: ou=groups,o=My Organization,c=RU&lt;br /&gt;objectClass: organizationalUnit&lt;br /&gt;objectClass: top&lt;br /&gt;ou: groups&lt;br /&gt;&lt;br /&gt;dn: cn=manager,ou=groups,o=My Organization,c=RU&lt;br /&gt;cn: manager&lt;br /&gt;objectClass: groupOfUniqueNames&lt;br /&gt;objectClass: top&lt;br /&gt;uniqueMember: uid=user3,ou=People,o=My Organization,c=RU&lt;/pre&gt;После этого в конфигурационном файле TOMCAT_HOME/server.xml необходимо закомментировать использование ресурса UserDatabase и UserDatabaseRealm, вместо него добавить&lt;br /&gt;&lt;pre&gt;&amp;lt;realm classname="org.apache.catalina.realm.JNDIRealm"&lt;br /&gt;    connectionurl="ldap://LDAP_SERVER"&lt;br /&gt;    rolebase="ou=groups,o=My Organization,c=RU"&lt;br /&gt;    rolename="cn"&lt;br /&gt;    rolesearch="(uniqueMember={0})"&lt;br /&gt;    userpattern="uid={0},ou=People,o=My Organization,c=RU"/&gt;&lt;/pre&gt;&lt;br /&gt;и перезапустить Tomcat.&lt;br /&gt;Если всё получилось, доступ к ресурсу http://servername:port/manager/html будет иметь только пользователь user3, пользователь user2 хоть и пройдет аутентификацию, но доступа к ресурсу не получит, так как не включен в группу manager (не имеет данной роли).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-8784723015349778180?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/8784723015349778180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=8784723015349778180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8784723015349778180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8784723015349778180'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2008/09/ldap-tomcat.html' title='Использование LDAP-базы пользователей в Tomcat'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-1541863191650556849</id><published>2008-06-19T19:35:00.007+03:00</published><updated>2008-07-08T23:06:03.641+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><title type='text'>Репликация в MySQL</title><content type='html'>Срочно понадобилось иметь копию двух таблиц (test_db.wiz_main и test_db.wiz_data) на втором mysql-сервере. Причем, чтобы все новые изменения с master-таблиц, сразу же появлялись на втором сервере. Как вариант решения была выбрана репликация.&lt;br /&gt;&lt;br /&gt;Для того, чтобы организовать репликацию между двумя MySQL-серверами необходимо:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;На master-сервере&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;1) Включить binarylog, если он еще не включён и назначить master-серверу идентификатор (server-id). Для этого в my.cnf добавить и перегрузить:&lt;br /&gt;&lt;pre&gt;log-bin=/var/db/mysql/srv011-bin.log&lt;br /&gt;server-id = 1&lt;br /&gt;&lt;/pre&gt;2) Создать пользователя с правами:&lt;br /&gt;&lt;pre&gt;GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '&lt;some_password&gt;';&lt;br /&gt;FLUSH PRIVILEGES;&lt;/some_password&gt;&lt;br /&gt;&lt;/pre&gt;3) Заблокировать требуемые таблицы на время dump'а. Во время блокировки также необходимо посмотреть текущее состояние в binary логе&lt;br /&gt;&lt;pre&gt;mysql&gt; FLUSH TABLES WITH READ LOCK;&lt;br /&gt;mysql&gt; show master status;&lt;br /&gt;+-------------------+----------+--------------+------------------+&lt;br /&gt;File               Position  Binlog_Do_DB  Binlog_Ignore_DB&lt;br /&gt;+-------------------+----------+--------------+------------------+&lt;br /&gt;srv011-bin.000813   1156293                            &lt;br /&gt;+-------------------+----------+--------------+------------------+&lt;br /&gt;1 row in set (0.00 sec)&lt;/pre&gt;4) Сделать dump требуемых таблиц и снять блокировку&lt;pre&gt;mysqldump -u root -p test_db &gt; /root/test_db.db&lt;br /&gt;mysql&gt; UNLOCK TABLES;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;На slave-сервере&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;1) Указать, где находится master-сервер и какие конкретно базы (таблицы) следует реплицировать. Для этого в my.cnf добавить:&lt;br /&gt;&lt;pre&gt;max-user-connections=50&lt;br /&gt;master-host=212.122.238.32&lt;br /&gt;master-user=slave_user&lt;br /&gt;master-password=v9X8Ds4&lt;br /&gt;server-id= 2&lt;br /&gt;replicate-do-db=test_db&lt;br /&gt;replicate-do-table=test_db.wiz_data&lt;br /&gt;replicate-do-table=test_db.wiz_main&lt;/pre&gt;2) Указать "отправную точку", с которой следует начать репликацию данных.&lt;br /&gt;&lt;pre&gt;mysql&gt; CHANGE MASTER TO MASTER_LOG_FILE='srv011-bin.000813';&lt;br /&gt;Query OK, 0 rows affected (0.05 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; CHANGE MASTER TO MASTER_LOG_POS=1156293;&lt;br /&gt;Query OK, 0 rows affected (0.05 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; SHOW SLAVE STATUS\G&lt;br /&gt;*************************** 1. row ***************************&lt;br /&gt;      Slave_IO_State:&lt;br /&gt;         Master_Host: 212.122.238.32&lt;br /&gt;         Master_User: slave_user&lt;br /&gt;         Master_Port: 3306&lt;br /&gt;       Connect_Retry: 60&lt;br /&gt;     Master_Log_File: srv011-bin.000813&lt;br /&gt; Read_Master_Log_Pos: 1156293&lt;br /&gt;      Relay_Log_File: relay.000001&lt;br /&gt;       Relay_Log_Pos: 4&lt;br /&gt;Relay_Master_Log_File: srv011-bin.000813&lt;br /&gt;    Slave_IO_Running: No&lt;br /&gt;   Slave_SQL_Running: No&lt;br /&gt;     Replicate_Do_DB: test_db&lt;br /&gt; Replicate_Ignore_DB:&lt;br /&gt;  Replicate_Do_Table: test_db.wiz_main,test_db.wiz_data&lt;br /&gt;Replicate_Ignore_Table:&lt;br /&gt;Replicate_Wild_Do_Table:&lt;br /&gt;Replicate_Wild_Ignore_Table:&lt;br /&gt;          Last_Errno: 0&lt;br /&gt;          Last_Error:&lt;br /&gt;        Skip_Counter: 0&lt;br /&gt; Exec_Master_Log_Pos: 1156293&lt;br /&gt;     Relay_Log_Space: 4&lt;br /&gt;     Until_Condition: None&lt;br /&gt;      Until_Log_File:&lt;br /&gt;       Until_Log_Pos: 0&lt;br /&gt;  Master_SSL_Allowed: No&lt;br /&gt;  Master_SSL_CA_File:&lt;br /&gt;  Master_SSL_CA_Path:&lt;br /&gt;     Master_SSL_Cert:&lt;br /&gt;   Master_SSL_Cipher:&lt;br /&gt;      Master_SSL_Key:&lt;br /&gt;Seconds_Behind_Master: NULL&lt;br /&gt;1 row in set (0.00 sec)&lt;/pre&gt;3) Инициировать репликацию&lt;br /&gt;&lt;pre&gt;mysql&gt; start slave;&lt;br /&gt;Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; SHOW SLAVE STATUS\G&lt;br /&gt;*************************** 1. row ***************************&lt;br /&gt;      Slave_IO_State: Waiting for master to send event&lt;br /&gt;         Master_Host: 212.122.238.32&lt;br /&gt;         Master_User: slave_user&lt;br /&gt;         Master_Port: 3306&lt;br /&gt;       Connect_Retry: 60&lt;br /&gt;     Master_Log_File: srv011-bin.000813&lt;br /&gt; Read_Master_Log_Pos: 1174592&lt;br /&gt;      Relay_Log_File: relay.000001&lt;br /&gt;       Relay_Log_Pos: 18347&lt;br /&gt;Relay_Master_Log_File: srv011-bin.000813&lt;br /&gt;    Slave_IO_Running: Yes&lt;br /&gt;   Slave_SQL_Running: Yes&lt;br /&gt;     Replicate_Do_DB: test_db&lt;br /&gt; Replicate_Ignore_DB:&lt;br /&gt;  Replicate_Do_Table: test_db.wiz_main,test_db.wiz_data&lt;br /&gt;Replicate_Ignore_Table:&lt;br /&gt;Replicate_Wild_Do_Table:&lt;br /&gt;Replicate_Wild_Ignore_Table:&lt;br /&gt;          Last_Errno: 0&lt;br /&gt;          Last_Error:&lt;br /&gt;        Skip_Counter: 0&lt;br /&gt; Exec_Master_Log_Pos: 1174592&lt;br /&gt;     Relay_Log_Space: 18347&lt;br /&gt;     Until_Condition: None&lt;br /&gt;      Until_Log_File:&lt;br /&gt;       Until_Log_Pos: 0&lt;br /&gt;  Master_SSL_Allowed: No&lt;br /&gt;  Master_SSL_CA_File:&lt;br /&gt;  Master_SSL_CA_Path:&lt;br /&gt;     Master_SSL_Cert:&lt;br /&gt;   Master_SSL_Cipher:&lt;br /&gt;      Master_SSL_Key:&lt;br /&gt;Seconds_Behind_Master: 0&lt;br /&gt;1 row in set (0.00 sec)&lt;/pre&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.onlamp.com/pub/a/onlamp/2005/06/16/MySQLian.html"&gt;Live Backups of MySQL Using Replication&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.howtoforge.com/mysql_database_replication"&gt;How To Set Up Database Replication In MySQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.webnext.ru/blog/2007/08/21/replication-mysql-master-slave.html"&gt;Репликация Master-Slave в MySQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://kairblog.ru/post/8325/"&gt;Репликация mySQL — параметры и команды&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family:Courier New,Courier,mono;"&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-1541863191650556849?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/1541863191650556849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=1541863191650556849' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1541863191650556849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1541863191650556849'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2008/06/mysql.html' title='Репликация в MySQL'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-7696056906096908792</id><published>2008-06-06T08:49:00.002+03:00</published><updated>2008-06-06T09:06:46.305+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>2&gt;&amp;1</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Cron&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;перенаправить стандартный вывод и вывод об ошибках в файл /var/log/cron&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;52 6 1 * * root /root/scripts/check_disk.sh &gt;&gt; /var/log/cron 2&gt;&amp;amp;1&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;отправить стандартный вывод и вывод об ошибках на me@domain.net&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;01 21 * * * root /root/scripts/check_disk.sh 2&gt;&amp;amp;1 | mail -s "Disk check output" me@domain.net&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Shell&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;отличие конструкций '&lt;span style="font-style: italic;"&gt;2&gt;&amp;amp;1 &gt; file&lt;/span&gt;' и '&lt;span style="font-style: italic;"&gt;&gt; file 2&gt;&amp;amp;1&lt;/span&gt;'&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;$ cat food 2&gt;&amp;amp;1 &gt; file&lt;br /&gt;cat: food: No such file or directory&lt;br /&gt;$ cat food &gt; file 2&gt;&amp;amp;1&lt;br /&gt;$ cat file&lt;br /&gt;cat: food: No such file or directory&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-7696056906096908792?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/7696056906096908792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=7696056906096908792' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7696056906096908792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7696056906096908792'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2008/06/2.html' title='2&gt;&amp;1'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6648012138141573065</id><published>2008-05-16T16:41:00.003+03:00</published><updated>2008-05-16T17:11:24.521+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='bacula'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Использование Bacula для backup'а Oracle баз данных</title><content type='html'>При использовании Bacula для копирования Oracle баз данных в online-режиме (не останавливая базу, при включенной опции ARCHIVELOG) советую использовать идущую с Oracle'ом утилиту RMAN. После того, как соответствующее окружение (Flash Recovery Area, Catalog и т.п.) для RMAN'а будет настроено, на Bacula-клиенте можно использовать скрипт /u01/app/oracle/product/10.2.0/db_1/scripts/runbeforebackup:&lt;br /&gt;&lt;pre&gt;#!/bin/bash            &lt;br /&gt;&lt;br /&gt;if [ "$1" = "1" ]&lt;br /&gt;then&lt;br /&gt;       LEVEL=1&lt;br /&gt;elif [ "$1" = "0" ]&lt;br /&gt;then&lt;br /&gt;       LEVEL=0&lt;br /&gt;else&lt;br /&gt;       echo "Bad backup level"&lt;br /&gt;       exit 1&lt;br /&gt;fi&lt;br /&gt;rman catalog rcatuser/PASSWORD@RCAT target / &amp;lt;&amp;lt; EOF&lt;br /&gt;RUN {&lt;br /&gt;       BACKUP incremental level=$LEVEL as compressed backupset DATABASE INCLUDE CURRENT CONTROLFILE plus archivelog delete input;&lt;br /&gt;}&lt;br /&gt;EOF&lt;/pre&gt;На Bacula Director'е в соответствующие job'ы добавить строки:&lt;br /&gt;&lt;pre&gt;ClientRunBeforeJob = "/bin/su - oracle -c \"/u01/app/oracle/product/10.2.0/db_1/scripts/runbeforebackup.sh LEVEL\""&lt;br /&gt;&lt;/pre&gt;где LEVEL - 0 (Full Backup) или 1 (Incremental Backup).&lt;br /&gt;В зависимости от backup-политики на Вашем предприятии, конфигурируйте как часто следует использовать каждый из уровеней.&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/docs/cd/B19306_01/backup.102/b14192/toc.htm"&gt;Oracle® Database Backup and Recovery Basics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://appsdbablog.com/blog/rman/"&gt;Oracle Applications DBA Blog: RMAN Archives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.database-expert.com/white_papers/Restoring_an_Oracle_database_using_the_ControlFile_as_an_RMAN_Repository.htm"&gt;Backing up and Restoring an Oracle database using the ControlFile as a Repository&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6648012138141573065?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6648012138141573065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6648012138141573065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6648012138141573065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6648012138141573065'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2008/05/bacula-backup-oracle.html' title='Использование Bacula для backup&apos;а Oracle баз данных'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-1024194614150312535</id><published>2008-05-09T15:55:00.005+03:00</published><updated>2009-07-08T17:46:41.132+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='bacula'/><title type='text'>Использование Bacula для backup'а MySQL баз данных</title><content type='html'>При использовании Bacula для копирования MySQL баз данных на Bacula-клиенте (там, откуда необходимо копировать mysql-базы) необходимо создать скрипт /usr/loca/bin/mysqlhotcopyall:&lt;br /&gt;&lt;pre&gt;#!/bin/bash&lt;br /&gt;DBLIST="db1 db2 db3 mysql" # здесь необходимо указать имена баз, которые следует копировать&lt;br /&gt;DBDIR=/var/lib/bacula/mysql&lt;br /&gt;UP=" --user=$1 --password=$2"&lt;br /&gt;LOGFILE=/var/log/backup.log&lt;br /&gt;mkdir $DBDIR&lt;br /&gt;for DATABASE in $DBLIST&lt;br /&gt;do&lt;br /&gt;mysqlhotcopy $UP $DATABASE ${DBDIR} --allowold &gt;&gt; ${LOGFILE}&lt;br /&gt;done&lt;/pre&gt;Также необходимо в MySQL'е создать пользователя bacula, который будет выполнять блокировку и копирование указанных баз на время backup'а. Данному пользователю должны быть предоставлены глобальные привилегии SELECT, RELOAD, LOCK TABLES.&lt;br /&gt;&lt;pre&gt;CREATE USER 'bacula'@'localhost' IDENTIFIED BY 'PASSWORD';&lt;br /&gt;GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'bacula'@'localhost' IDENTIFIED BY 'PASSWORD';&lt;/pre&gt;На Bacula Director'е в соответствующий job добавить строки:&lt;br /&gt;&lt;pre&gt;ClientRunBeforeJob = "/usr/local/bin/mysqlhotcopyall bacula PASSWORD"&lt;br /&gt;ClientRunAfterJob = "/bin/rm -rf /var/lib/bacula/mysql"&lt;/pre&gt;Благодаря указанным параметрам перед backup'ом с помощью утилиты mysqlhotcopy указанные базы будут скопированы в каталог /var/lib/bacula/mysql. После backup'а содержимое данного каталога будет очищено.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Поправка&lt;/span&gt; - данное решение работает только для таблиц типа MyISAM и ARCHIVE, таблицы INNODB следует копировать как минимум вручную, либо mysqldump'ом.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-1024194614150312535?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/1024194614150312535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=1024194614150312535' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1024194614150312535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1024194614150312535'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2008/05/bacula-backup-mysql.html' title='Использование Bacula для backup&apos;а MySQL баз данных'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-4883747647639087764</id><published>2008-05-07T22:11:00.012+03:00</published><updated>2009-07-10T10:48:04.334+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='pptp'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='vpn'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>PPTP VPN-клиент для Linux Ubuntu</title><content type='html'>Для того, чтобы установить VPN-туннель с удаленной сетью и работать в ней как в обычной локальной сети достаточно установить пакет pptp-linux:&lt;br /&gt;&lt;pre&gt;sudo apt-get install pptp-linux&lt;br /&gt;&lt;/pre&gt;После этого достаточно добавить логин/пароль в файл /etc/ppp/chap-secrets в формате:&lt;br /&gt;&lt;pre&gt;$DOMAIN\\$USERNAME PPTP $PASSWORD *&lt;br /&gt;&lt;/pre&gt;А также создать файл /etc/ppp/peers/$TUNNEL примерно такого содержания:&lt;br /&gt;&lt;pre&gt;pty "pptp $SERVER --nolaunchpppd"&lt;br /&gt;name $DOMAIN\\$USERNAME&lt;br /&gt;remotename PPTP&lt;br /&gt;require-mppe-128&lt;br /&gt;file /etc/ppp/options.pptp&lt;br /&gt;ipparam $TUNNEL&lt;br /&gt;&lt;/pre&gt;Для установления соединения: &lt;pre&gt;sudo pon $TUNNEL&lt;br /&gt;&lt;/pre&gt;Для разрыва соединения: &lt;pre&gt;sudo poff $TUNNEL&lt;/pre&gt;В заключении необходимо прописать дополнительный маршрут для доступа к удаленной сети (например к сети 192.168.1.0/24 через маршрутизатор 192.168.1.1):&lt;br /&gt;&lt;pre&gt;sudo route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1&lt;br /&gt;&lt;/pre&gt;Чтобы это хозяйство использовать ежедневно, желательно всё оформить в виде скрипта /etc/ppp/ip-up.d/$TUNNEL, тогда каждый раз при успешном установлении соединении будет выполняться данный скрипт.&lt;br /&gt;&lt;pre&gt;cat &gt; /etc/ppp/ip-up.d/$TUNNEL&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1&lt;br /&gt;[Crtl+d]&lt;br /&gt;chmod +x /etc/ppp/ip-up.d/$TUNNEL&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://pptpclient.sourceforge.net/howto-debian.phtml"&gt;PPTP Client&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-4883747647639087764?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/4883747647639087764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=4883747647639087764' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4883747647639087764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4883747647639087764'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2008/05/vpn-linux-ubuntu.html' title='PPTP VPN-клиент для Linux Ubuntu'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3716389123872508045</id><published>2008-05-02T23:33:00.003+03:00</published><updated>2009-07-08T17:47:05.721+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='exim'/><category scheme='http://www.blogger.com/atom/ns#' term='antivirus'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><title type='text'>Mailhub-сервер на базе Exim</title><content type='html'>Второй раз столкнулся с задачей конфигурирования основного mx-сервера и так уж получилось, что это вновь оказался Exim (дистрибутив Debian Etch 4.0r3). Решил уже всё дотошно описать, чтобы впоследствии можно было с легкостью восстановить требуемую конфигурацию. Данное описание содержит комментарии только к внесенным мною изменениям, стандартные конфигурационные параметры я не описываю и не указываю.&lt;br /&gt;&lt;br /&gt;В моей конфигурации основной mx-сервер выступает в роли "привратника", который принимает из Internet всю почту и рассылает далее по внутренним smtp-серверам, поэтому упор делается на отброс нежелательной корреспонденции (spam'a).&lt;br /&gt;Комментарии приветствуются :)&lt;br /&gt;&lt;br /&gt;Основной конфигурационный файл Exim для "пересборки" выглядит примерно так:&lt;br /&gt;&lt;pre&gt;# cat /etc/exim4/update-exim4.conf&lt;br /&gt;dc_eximconfig_configtype='internet'&lt;br /&gt;dc_other_hostnames='mail.mycompany.com'&lt;br /&gt;dc_local_interfaces=''&lt;br /&gt;dc_readhost=''&lt;br /&gt;dc_relay_domains='mycompany.com:mycompany.eu:mycompany.net'&lt;br /&gt;dc_minimaldns='false'&lt;br /&gt;dc_relay_nets=''&lt;br /&gt;dc_smarthost=''&lt;br /&gt;CFILEMODE='644'&lt;br /&gt;dc_use_split_config='true'&lt;br /&gt;dc_hide_mailname=''&lt;br /&gt;dc_mailname_in_oh='true'&lt;br /&gt;dc_localdelivery='mail_spool'&lt;br /&gt;&lt;/pre&gt;Для удобства внесения изменений в конфигурацию я использую мини-скрипт &lt;span style="font-style: italic;"&gt;rebuild&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;cat &gt; /etc/exim4/rebuild&lt;br /&gt;#!/bin/bash&lt;br /&gt;update-exim4.conf&lt;br /&gt;/etc/init.d/exim4 restart&lt;br /&gt;[Ctrl+d]&lt;br /&gt;chmod +x /etc/exim4/rebuild&lt;br /&gt;&lt;/pre&gt;В базовой комплектации Debian Exim идёт в "лёгкой" сборке, но для того, чтобы использовать возможность фильтровать вирусы с помощью ClamAv необходим heavy-пакет.&lt;br /&gt;&lt;pre&gt;# apt-get install exim4-daemon-heavy&lt;/pre&gt;Антивирус прикручивается к Exim'у просто, но для его установки следут использовать volatile-репозитарий. Перед установкой пакета clamav-daemon, следует добавить в /etc/apt/sources.list соответствующую строку и обновить apt-get.&lt;br /&gt;&lt;pre&gt;# cat &gt;&gt; /etc/apt/sources.list&lt;br /&gt;deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free&lt;br /&gt;[Ctrl+d]&lt;br /&gt;# apt-get update&lt;br /&gt;# apt-get install clamav-daemon&lt;br /&gt;&lt;/pre&gt;Чтобы clamav-пользователь имел возможность читать и писать в каталог /var/spool/exim4/scan, его необходимо добавить в группу Debian-exim&lt;br /&gt;&lt;pre&gt;# usermod -G Debian-exim clamav&lt;br /&gt;&lt;/pre&gt;Чтобы научить Exim отдавать на проверку stmp-траффик, необходимо добавить строку&lt;br /&gt;&lt;pre&gt;av_scanner = clamd:/var/run/clamav/clamd.ctl&lt;br /&gt;&lt;/pre&gt;в main-отдел конфигурации Exim'а (каталог /etc/exim4/conf.d/main/).&lt;br /&gt;Затем добавить в acl-отдел конфигурации строки&lt;br /&gt;&lt;pre&gt;deny message = This message contains a virus: ($malware_name) please scan your system.&lt;br /&gt;malware = */defer_ok&lt;/pre&gt;Далее начинается &lt;span style="font-style: italic;"&gt;самое ответственное&lt;/span&gt; - конфигурация Exim'а для первичной фильтрации спама:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/etc/exim4/conf.d/main/&lt;/span&gt;&lt;span style="font-style: italic;"&gt;01_exim4-config_listmacrosdefs&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;CHECK_RCPT_IP_DNSBLS = bl.spamcop.net&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;/etc/exim4/conf.d/main/&lt;/span&gt;&lt;span style="font-style: italic;"&gt;02_exim4-config_options&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;smtp_banner = Welcome to the Moon $tod_full - изменяем banner&lt;/li&gt;&lt;li&gt;rfc1413_query_timeout = 0s - отключаем Ident-запросы, чтобы избавиться от задержки при подключению к smtp-сервису&lt;br /&gt;&lt;/li&gt;&lt;li&gt;helo_allow_chars = _ - чтобы разрешить в HELO/EHLO символ _&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;/etc/exim4/conf.d/acl/30_exim4-config_check_mail&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;acl_check_mail:&lt;br /&gt;deny&lt;br /&gt;message = no HELO given before MAIL command&lt;br /&gt;condition = ${if def:sender_helo_name {no}{yes}}&lt;br /&gt;&lt;br /&gt;accept&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-style: italic;"&gt;/etc/exim4/conf.d/acl/&lt;/span&gt;&lt;span style="font-style: italic;"&gt;30_exim4-config_check_rcptd&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;acl_check_rcpt:&lt;br /&gt;accept&lt;br /&gt;hosts = :&lt;br /&gt;# описание этого условия можно найти &lt;a href="http://sozinov.blogspot.com/2006/08/helo-exim4.html"&gt;тут&lt;/a&gt;&lt;br /&gt;drop message = Forged IP in HELO.&lt;br /&gt;log_message = HELO is our IP&lt;br /&gt;condition   = ${if eq {${lookup {$sender_helo_name} \&lt;br /&gt;   lsearch{/etc/exim4/reject_helo} \&lt;br /&gt;   {yes}{no}}}{${if !eq {$sender_host_address}{127.0.0.1}{yes}{no}}}{yes}{no}}&lt;br /&gt;&lt;br /&gt;accept&lt;br /&gt;.ifndef CHECK_RCPT_POSTMASTER&lt;br /&gt;local_parts = postmaster&lt;br /&gt;.else&lt;br /&gt;local_parts = CHECK_RCPT_POSTMASTER&lt;br /&gt;.endif&lt;br /&gt;domains = +local_domains : +relay_to_domains&lt;br /&gt;&lt;br /&gt;accept&lt;br /&gt;hosts = +relay_from_hosts&lt;br /&gt;control = submission/sender_retain&lt;br /&gt;&lt;br /&gt;accept&lt;br /&gt;authenticated = *&lt;br /&gt;control = submission/sender_retain&lt;br /&gt;&lt;br /&gt;accept&lt;br /&gt;domains = +local_domains&lt;br /&gt;endpass&lt;br /&gt;message = unknown user&lt;br /&gt;verify = recipient&lt;br /&gt;&lt;br /&gt;# Иногда бывает удобно воспользоваться данным условием, чтобы заблокировать отправителей,&lt;br /&gt;# указав их в файле /etc/exim4/local_sender_blacklist&lt;br /&gt;deny&lt;br /&gt;message = sender envelope address $sender_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster&lt;br /&gt;!acl = acl_whitelist_local_deny&lt;br /&gt;senders = ${if exists{CONFDIR/local_sender_blacklist}\&lt;br /&gt;            {CONFDIR/local_sender_blacklist}\&lt;br /&gt;            {}}&lt;br /&gt;&lt;br /&gt;# То же самое, только касательно хостов-отправителей&lt;br /&gt;deny&lt;br /&gt;message = sender IP address $sender_host_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster&lt;br /&gt;!acl = acl_whitelist_local_deny&lt;br /&gt;hosts = ${if exists{CONFDIR/local_host_blacklist}\&lt;br /&gt;          {CONFDIR/local_host_blacklist}\&lt;br /&gt;          {}}&lt;br /&gt;&lt;br /&gt;# Полезное правило, но с ним нужно быть осторожным. На основном mx-сервере я оставляю его&lt;br /&gt;# в warn-режиме, чтобы вдруг не заблокировать неродиво настроенных серверов, а вот на вторичных всегда выставляю в deny.&lt;br /&gt;warn&lt;br /&gt;message = X-Host-Lookup-Failed: Reverse DNS lookup failed for $sender_host_address (${if eq{$host_lookup_failed}{1}{failed}{deferred}})&lt;br /&gt;condition = ${if and{{def:sender_host_address}{!def:sender_host_name}}\&lt;br /&gt;               {yes}{no}}&lt;br /&gt;&lt;br /&gt;# Проверка по DNSBLS. Почта отбрасывается, если хост находится сразу в трёх DNS Black листах:&lt;br /&gt;# bl.spamcop.net, xbl.spamhaus.org, ctl.abuseat.org.&lt;br /&gt;.ifdef CHECK_RCPT_IP_DNSBLS&lt;br /&gt;drop&lt;br /&gt;message = X-Warning: $sender_host_address is listed at DNSLists (bl.spamcop.net,xbl.spamhaus.org,cbl.abuseat.org) and out system thinks your message is spam.&lt;br /&gt;log_message = $sender_host_address is listed at DNSLists&lt;br /&gt;dnslists = CHECK_RCPT_IP_DNSBLS&lt;br /&gt;dnslists = xbl.spamhaus.org&lt;br /&gt;dnslists = cbl.abuseat.org&lt;br /&gt;.endif&lt;br /&gt;&lt;br /&gt;# Проверка отправителя. Callout означает, что данных почтовый сервер, для того чтобы проверить&lt;br /&gt;# существование указанного отправителя, инициирует попытку отправить письмо указанному отправителю.&lt;br /&gt;# Опция defer_ok предостерегает от отбрасывания серверов с greylisting'ом, либо с серверов,&lt;br /&gt;# на которые временно невозможно присоединиться&lt;br /&gt;deny&lt;br /&gt;message = Sender verification failed&lt;br /&gt;!acl = acl_whitelist_local_deny&lt;br /&gt;domains = +relay_to_domains&lt;br /&gt;!verify = sender/callout=30s,defer_ok&lt;br /&gt;&lt;br /&gt;# Обязательная проверка получателя для внутренних доменов (relay_to_domains) callout'ом.&lt;br /&gt;accept&lt;br /&gt;domains = +relay_to_domains&lt;br /&gt;endpass&lt;br /&gt;message = unknown user&lt;br /&gt;verify = recipient/callout&lt;br /&gt;&lt;br /&gt;# Если все предыдущие условия не подходят, отбрасываем письмо.&lt;br /&gt;deny&lt;br /&gt;message = relay not permitted&lt;/pre&gt;А для того, чтобы данный основной mx-сервер рассылал почту конкретным внутренним серверам, достаточно добавить файл /etc/exim4/hubbed_hosts примерно такого содержания:&lt;br /&gt;&lt;pre&gt;mycompany.com: 192.168.1.2&lt;br /&gt;mycompany.eu: 192.168.1.2&lt;br /&gt;mycompany.net: 192.168.1.3&lt;br /&gt;&lt;/pre&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.exim.org/exim-html-current/doc/html/spec_html/index.html"&gt;Specification of the Exim Mail Transfer Agent&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3716389123872508045?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3716389123872508045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3716389123872508045' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3716389123872508045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3716389123872508045'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2008/05/mailhub-exim.html' title='Mailhub-сервер на базе Exim'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-5814139830594740125</id><published>2008-03-27T07:51:00.005+02:00</published><updated>2008-03-27T10:23:27.098+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>X11Forwarding после su</title><content type='html'>Чтобы X11Forwarding работал на CentOS/RHEL, в системе должен быть установлен пакет xorg-x11-xauth, в комплекте которого идёт утилита xauth.&lt;br /&gt;Статья &lt;a href="http://www.debian-administration.org/articles/494"&gt;Getting X11 forwarding through ssh working after running su&lt;/a&gt; объясняет, что необходимо выполнить, чтобы X11Forwarding работал после переключения на другого пользователя (su -).&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[home]$ ssh -X roman@work&lt;br /&gt;[work]$ id&lt;br /&gt;uid=1000(roman) gid=2000(users)&lt;br /&gt;[work]$ xauth list&lt;br /&gt;work/unix:12  MIT-MAGIC-COOKIE-1  42e71ddd7a5bdf635e5d4d52eafa3097&lt;br /&gt;work/unix:10  MIT-MAGIC-COOKIE-1  74c837450ad8d9720a914fa00b0b8eab&lt;br /&gt;[work]$ su -&lt;br /&gt;password:&lt;br /&gt;[work]# su - oracle&lt;br /&gt;[work]$ id&lt;br /&gt;uid=500(oracle) gid=501(oinstall) groups=500(dba),501(oinstall)&lt;br /&gt;[work]$ xauth add work/unix:10  MIT-MAGIC-COOKIE-1  74c837450ad8d9720a914fa00b0b8eab&lt;br /&gt;[work]$ xclock&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-5814139830594740125?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/5814139830594740125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=5814139830594740125' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5814139830594740125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5814139830594740125'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2008/03/x11forwarding-su-sudo.html' title='X11Forwarding после su'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-7066211964942799882</id><published>2008-03-13T16:17:00.003+02:00</published><updated>2009-07-08T17:48:07.987+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='active directory'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><title type='text'>Аутентификация Linux-сервера через Windows AD Domain Controller</title><content type='html'>Данное оипсание применялось на дистрибутиве CentOS/RHEL 5 в связке с Windows 2003 Server.&lt;br /&gt;Для начала установим необходимые для работы пакеты&lt;br /&gt;&lt;pre&gt;# yum install -y krb5-workstation samba-common&lt;/pre&gt;&lt;br /&gt;Подправим файл /etc/hosts, чтобы он имел примерно такой вид:&lt;br /&gt;&lt;pre&gt;# vi /etc/hosts&lt;br /&gt;127.0.0.1 localhost.localdomain localhost&lt;br /&gt;10.10.2.91 vm01.organization.local vm01&lt;br /&gt;10.10.2.1 windows.organization.local windows&lt;/pre&gt;&lt;br /&gt;Теперь настроим Керберос для добавления linux-сервера в windows-домен&lt;br /&gt;&lt;pre&gt;# vi /etc/krb5.conf&lt;br /&gt;[logging]&lt;br /&gt;default = FILE:/var/log/krb5libs.log&lt;br /&gt;kdc = FILE:/var/log/krb5kdc.log&lt;br /&gt;admin_server = FILE:/var/log/kadmind.log&lt;br /&gt;&lt;br /&gt;[libdefaults]javascript:void(0)&lt;br /&gt;default_realm = ORGANIZATION.LOCAL&lt;br /&gt;dns_lookup_realm = false&lt;br /&gt;dns_lookup_kdc = false&lt;br /&gt;ticket_lifetime = 24h&lt;br /&gt;forwardable = yes&lt;br /&gt;&lt;br /&gt;[realms]&lt;br /&gt;ORGANIZATION.LOCAL = {&lt;br /&gt;kdc = windows.organization.local:88&lt;br /&gt;admin_server = windows.organization.local:749&lt;br /&gt;default_domain = organization.local&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[domain_realm]&lt;br /&gt;.organization.local = ORGANIZATION.LOCAL&lt;br /&gt;organization.local = ORGANIZATION.LOCAL&lt;br /&gt;&lt;br /&gt;[kdc]&lt;br /&gt;profile = /var/kerberos/krb5kdc/kdc.conf&lt;br /&gt;&lt;br /&gt;[appdefaults]&lt;br /&gt;pam = {&lt;br /&gt;debug = false&lt;br /&gt;ticket_lifetime = 36000&lt;br /&gt;renew_lifetime = 36000&lt;br /&gt;forwardable = true&lt;br /&gt;krb4_convert = false&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# kinit administrator@ORGANIZATION.LOCAL&lt;br /&gt;Password for administrator@ORGANIZATION.LOCAL:&lt;/pre&gt;&lt;br /&gt;Минимальная настройка samba&lt;br /&gt;&lt;pre&gt;[root@vm01 ~]#vi /etc/samba/smb.conf&lt;br /&gt;[global]&lt;br /&gt;workgroup = ORGANIZATIONAL&lt;br /&gt;netbios name = VM01&lt;br /&gt;server string = VM01 Samba Server&lt;br /&gt;security = ads&lt;br /&gt;encrypt passwords = yes&lt;br /&gt;realm = ORGANIZATIONAL.LOCAL&lt;br /&gt;password server = windows.organization.local&lt;br /&gt;winbind enum users = yes&lt;br /&gt;winbind enum groups = yes&lt;br /&gt;winbind cache time = 1800&lt;br /&gt;winbind use default domain = yes&lt;br /&gt;winbind refresh tickets = yes&lt;br /&gt;idmap uid = 10000-20000&lt;br /&gt;idmap gid = 10000-20000&lt;br /&gt;template shell = /bin/bash&lt;br /&gt;template homedir = /home/%U&lt;br /&gt;printing = &lt;br /&gt;load printers = no&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Входим в домен&lt;br /&gt;&lt;pre&gt;# net ads join -U administrator&lt;br /&gt;administrator's password:&lt;br /&gt;Using short domain name -- ORGANIZATION&lt;br /&gt;Joined 'VM01' to realm 'ORGANIZATION.LOCAL'&lt;/pre&gt;&lt;br /&gt;Добавить описание pam_winbind.so модуля для аутентификации в системе. Модуль pam_mkhomedir.so для автоматического создания домашней директории при первом присоединении пользователя.&lt;br /&gt;&lt;pre&gt;vim /etc/pam.d/system-auth&lt;br /&gt;auth        required      pam_env.so&lt;br /&gt;auth        sufficient    pam_unix.so nullok try_first_pass&lt;br /&gt;auth        requisite     pam_succeed_if.so uid &gt;= 500 quiet&lt;br /&gt;auth        sufficient    pam_winbind.so use_first_pass&lt;br /&gt;auth        required      pam_deny.so&lt;br /&gt; &lt;br /&gt;account     required      pam_unix.so&lt;br /&gt;account     sufficient    pam_succeed_if.so uid &lt; 500 quiet&lt;br /&gt;account     [default=bad success=ok user_unknown=ignore] pam_winbind.so&lt;br /&gt;account     required      pam_permit.so&lt;br /&gt; &lt;br /&gt;password    requisite     pam_cracklib.so try_first_pass retry=3&lt;br /&gt;password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok&lt;br /&gt;password    sufficient    pam_winbind.so use_authtok&lt;br /&gt;password    required      pam_deny.so&lt;br /&gt; &lt;br /&gt;session     optional      pam_keyinit.so revoke&lt;br /&gt;session     required      pam_limits.so&lt;br /&gt;session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid&lt;br /&gt;session     required      pam_unix.so&lt;br /&gt;session     required      pam_mkhomedir.so skel=/etc/skel/ umask=0022&lt;/pre&gt;&lt;br /&gt;Настраиваем nsswitch, для того чтобы он мог использовать данные (о пользователях и групппах) AD с помощью winbind-сервиса и стартуем сервис&lt;br /&gt;&lt;pre&gt;vim /etc/nsswitch.conf&lt;br /&gt;passwd: files winbind&lt;br /&gt;shadow: files&lt;br /&gt;group: files winbind&lt;br /&gt; &lt;br /&gt;/etc/init.d/winbind start&lt;br /&gt;Starting Winbind services: [ OK ]&lt;br /&gt;chkconfig winbind on&lt;/pre&gt;&lt;br /&gt;Ограничиваем доступ к ssh-сервису&lt;br /&gt;&lt;pre&gt;vim /etc/ssh/sshd_config&lt;br /&gt;PermitRootLogin no&lt;br /&gt;AllowGroups admins&lt;br /&gt; &lt;br /&gt;/etc/init.d/sshd restart&lt;br /&gt;Stopping sshd:                                             [  OK  ]&lt;br /&gt;Starting sshd:                                             [  OK  ]&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-7066211964942799882?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/7066211964942799882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=7066211964942799882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7066211964942799882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7066211964942799882'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2008/03/linux-windows-ad-domain-controller.html' title='Аутентификация Linux-сервера через Windows AD Domain Controller'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-974717601199089684</id><published>2007-10-21T12:11:00.002+02:00</published><updated>2009-07-08T17:48:19.102+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='active directory'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='samba'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><title type='text'>Интеграция Samba-сервера с Windows AD Domain Controller</title><content type='html'>Данное оипсание применялось на дистрибутиве CentOS 5 в связке с Windows 2003 Server Enterprise.&lt;br /&gt;Для начала установим необходимые для работы пакеты&lt;br /&gt;# yum install samba samba-client ntp acl&lt;br /&gt;(клиентская часть необходима, если необходимо монтировать шары виндоуза на линухе)&lt;br /&gt;Подправим файл /etc/hosts, чтобы он имел примерно такой вид:&lt;br /&gt;&lt;pre&gt;# vi /etc/hosts&lt;br /&gt;127.0.0.1 localhost.localdomain localhost&lt;br /&gt;10.10.2.91 vm01.organization.local vm01&lt;/pre&gt;&lt;br /&gt;Добавим опцию acl при монтировании рабочего дискового раздела&lt;br /&gt;&lt;pre&gt;# vi /etc/fstab&lt;br /&gt;/dev/VolGroup00/LogVol00 / ext3 defaults,&lt;span style="font-weight: bold;"&gt;acl&lt;/span&gt; 1 1&lt;br /&gt;# mount -o remount /&lt;br /&gt;# mkdir /share&lt;br /&gt;# setfacl -m u:"ORGANIZATION+romans":rwx /share&lt;/pre&gt;&lt;br /&gt;Теперь настроим Керберос для добавления linux-сервера в windows-домен&lt;br /&gt;&lt;pre&gt;# yum install krb5-workstation&lt;br /&gt;# vi /etc/krb5.conf&lt;br /&gt;[logging]&lt;br /&gt;default = FILE:/var/log/krb5libs.log&lt;br /&gt;kdc = FILE:/var/log/krb5kdc.log&lt;br /&gt;admin_server = FILE:/var/log/kadmind.log&lt;br /&gt;&lt;br /&gt;[libdefaults]&lt;br /&gt;default_realm = ORGANIZATION.LOCAL&lt;br /&gt;dns_lookup_realm = false&lt;br /&gt;dns_lookup_kdc = false&lt;br /&gt;ticket_lifetime = 24h&lt;br /&gt;forwardable = yes&lt;br /&gt;&lt;br /&gt;[realms]&lt;br /&gt;ORGANIZATION.LOCAL = {&lt;br /&gt;kdc = windows.organization.local:88&lt;br /&gt;admin_server = windows.organization.local:749&lt;br /&gt;default_domain = organization.local&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[domain_realm]&lt;br /&gt;.organization.local = ORGANIZATION.LOCAL&lt;br /&gt;organization.local = ORGANIZATION.LOCAL&lt;br /&gt;&lt;br /&gt;[kdc]&lt;br /&gt;profile = /var/kerberos/krb5kdc/kdc.conf&lt;br /&gt;&lt;br /&gt;[appdefaults]&lt;br /&gt;pam = {&lt;br /&gt;debug = false&lt;br /&gt;ticket_lifetime = 36000&lt;br /&gt;renew_lifetime = 36000&lt;br /&gt;forwardable = true&lt;br /&gt;krb4_convert = false&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# kinit administrator@ORGANIZATION.LOCAL&lt;br /&gt;Password for administrator@ORGANIZATION.LOCAL:&lt;/pre&gt;&lt;br /&gt;Минимальная настройка samba&lt;br /&gt;&lt;pre&gt;[root@vm01 ~]#vi /etc/samba/smb.conf&lt;br /&gt;[global]&lt;br /&gt;workgroup = ORGANIZATION&lt;br /&gt;netbios name = VM01&lt;br /&gt;server string = VM01 Samba Server&lt;br /&gt;security = ads&lt;br /&gt;encrypt passwords = yes&lt;br /&gt;realm = ORGANIZATION.LOCAL&lt;br /&gt;password server = windows.organization.local&lt;br /&gt;idmap uid = 10000-20000&lt;br /&gt;idmap gid = 10000-20000&lt;br /&gt;winbind enum users = yes&lt;br /&gt;winbind enum groups = yes&lt;br /&gt;winbind separator = +&lt;br /&gt;load printers = no&lt;br /&gt;printcap name = /etc/printcap&lt;br /&gt;printing =&lt;br /&gt;log file = /var/log/samba/%m.log&lt;br /&gt;max log size = 50&lt;br /&gt;&lt;br /&gt;[share]&lt;br /&gt;comment = a comment&lt;br /&gt;path = /share&lt;br /&gt;browseable = yes&lt;br /&gt;read only = no&lt;br /&gt;inherit acls = yes&lt;br /&gt;inherit permissions = yes&lt;br /&gt;create mask = 700&lt;br /&gt;directory mask = 700&lt;br /&gt;valid users = "ORGANIZATION+romans"&lt;/pre&gt;&lt;br /&gt;Входим в домен&lt;br /&gt;&lt;pre&gt;# net ads join -U administrator&lt;br /&gt;administrator's password:&lt;br /&gt;Using short domain name -- ORGANIZATION&lt;br /&gt;Joined 'VM01' to realm 'ORGANIZATION.LOCAL'&lt;/pre&gt;&lt;br /&gt;Стартуем сервисы&lt;br /&gt;&lt;pre&gt;# /etc/init.d/smb start&lt;br /&gt;Starting SMB services: [ OK ]&lt;br /&gt;Starting NMB services: [ OK ]&lt;/pre&gt;&lt;br /&gt;Настраиваем nsswitch, для того чтобы он мог использовать данные AD с помощью winbind-сервиса&lt;br /&gt;&lt;pre&gt;# vi /etc/nsswitch.conf&lt;br /&gt;passwd: files winbind&lt;br /&gt;shadow: files&lt;br /&gt;group: files winbind&lt;br /&gt;# /etc/init.d/winbind start&lt;br /&gt;Starting Winbind services: [ OK ]&lt;/pre&gt;&lt;br /&gt;Для проверки&lt;br /&gt;&lt;pre&gt;#wbinfo -u&lt;br /&gt;ORGANIZATION+administrator&lt;br /&gt;ORGANIZATION+guest&lt;br /&gt;ORGANIZATION+support_388945a0&lt;br /&gt;ORGANIZATION+vartotojas&lt;br /&gt;ORGANIZATION+cba_anonymous&lt;br /&gt;ORGANIZATION+krbtgt&lt;br /&gt;ORGANIZATION+for_test_1&lt;br /&gt;ORGANIZATION+for_test_2&lt;br /&gt;ORGANIZATION+for_admin&lt;br /&gt;ORGANIZATION+romans&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.howtoforge.com/samba_active_directory"&gt;How To Integrate Samba (File Sharing) Using Active Directory For Authentication&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wlug.org.nz/ActiveDirectorySamba"&gt;Samba as an Active Directory Domain Member&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.unixdoc.ru/index.php?mode=2&amp;amp;podmode=1&amp;amp;amp;arcicle_id=145&amp;amp;theme=Samba%20ADS"&gt;Как подружить Samba 3 и контроллер домена Windows 2003 SP1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Deployment_Guide-en-US/ch-samba.html"&gt;RHEL5 Deployment Guide - Samba&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Deployment_Guide-en-US/ch-kerberos.html"&gt;RHEL5 Deployment Guide - Kerberos&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-974717601199089684?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/974717601199089684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=974717601199089684' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/974717601199089684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/974717601199089684'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/08/samba-windows-ad-domain-controller.html' title='Интеграция Samba-сервера с Windows AD Domain Controller'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-5296847024002924824</id><published>2007-10-10T16:07:00.001+02:00</published><updated>2009-07-08T17:48:40.412+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='file system'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><title type='text'>GFS - Global File System</title><content type='html'>&lt;p&gt;Данный лог действий описывает процесс установки и начальной конфигурации кластерной файловой системы GFS в CentOS5.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Перед началом установки необходимо убедиться, что отключен firewall и не действует SE Linux.&lt;br /&gt;&lt;/p&gt; &lt;pre&gt;# chkconfig iptables off&lt;br /&gt;# selinux disable&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;Установка включает в себя инсталяцию группы 'Cluster storage' и сервиса ntp для синхронизации времени на всех нодах кластера.&lt;br /&gt;&lt;/p&gt; &lt;pre&gt;# yum groupinstall 'Cluster Storage'&lt;br /&gt;# yum install ntp&lt;br /&gt;# yum install kmod-gfs-xen (если используется Xen)&lt;br /&gt;&lt;span class="kw2"&gt;# chkconfig&lt;/span&gt; ntpd on&lt;br /&gt;&lt;span class="kw2"&gt;# service&lt;/span&gt; ntpd start&lt;br /&gt;# Starting ntpd:                                             &lt;span class="br0"&gt;[&lt;/span&gt;  OK  &lt;span class="br0"&gt;]&lt;br /&gt;# reboot&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;Проверить перед запуском, что на всех нодах файлы /etc/hosts и /etc/cluster/cluster.conf одного содержания &lt;/p&gt; &lt;pre&gt;# vi /etc/hosts&lt;br /&gt;127.0.0.1       localhost.localdomain localhost&lt;br /&gt;10.10.2.91      vm01.organization.local   vm01&lt;br /&gt;10.10.2.92      vm02.organization.local   vm02&lt;br /&gt;# vi /etc/cluster/cluster.conf&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;cluster name="gfsc" config_version="1"&amp;gt;&lt;br /&gt;&amp;lt;cman two_node="1" expected_votes="1"&gt;&lt;br /&gt;&amp;lt;/cman&gt;&lt;br /&gt;&amp;lt;clusternodes&gt;&lt;br /&gt;&amp;lt;clusternode name="vm01" nodeid="1"&gt;&lt;br /&gt;&amp;lt;fence&gt;&lt;br /&gt;&amp;lt;method name="human"&gt;&lt;br /&gt;&amp;lt;device name="last_resort" ipaddr="vm01"&gt;&lt;br /&gt;&amp;lt;/device&gt;&lt;br /&gt;&amp;lt;/method&gt;&lt;br /&gt;&amp;lt;/fence&gt;&lt;br /&gt;&amp;lt;clusternode name="vm02" nodeid="2"&gt;&lt;br /&gt;&amp;lt;fence&gt;&lt;br /&gt;&amp;lt;method name="human"&gt;&lt;br /&gt;&amp;lt;device name="last_resort" ipaddr="vm02"&gt;&lt;br /&gt;&amp;lt;/device&gt;&lt;br /&gt;&amp;lt;/method&gt;&lt;br /&gt;&amp;lt;/fence&gt;&lt;br /&gt;&amp;lt;/clusternode&gt;&lt;br /&gt;&amp;lt;fencedevices&gt;&lt;br /&gt;&amp;lt;fencedevice name="last_resort" agent="fence_manual"&gt;&lt;br /&gt;&amp;lt;/fencedevice&gt;&lt;br /&gt;&amp;lt;/fencedevices&gt;&lt;br /&gt;&amp;lt;/clusternode&gt;&amp;lt;/clusternodes&gt;&lt;br /&gt;&amp;lt;/cluster&gt;&lt;/pre&gt; &lt;p&gt;Для того, чтобы впоследствии копировать измененный файл конфигурации /etc/cluster/cluster.conf на все ноды можно воспользоваться утилитой ccs_tool: &lt;/p&gt; &lt;pre&gt;# scp /etc/cluster/cluster.conf root@vm02:/etc/cluster/&lt;br /&gt;# ccs_tool update /etc/cluster/cluster.conf&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;После того как все готово, можно запускать службу cman (поочередно на всех нодах)&lt;br /&gt;&lt;/p&gt; &lt;pre&gt;# /etc/init.d/cman start&lt;br /&gt;# cman_tool status&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;Подготовка диска (я использую lvm)&lt;br /&gt;&lt;/p&gt; &lt;pre&gt;# vi /etc/lvm/lvm.conf&lt;br /&gt;locking_type = 3&lt;br /&gt;# pvcreate /dev/sdc&lt;br /&gt;# vgcreate gfsc /dev/sdc&lt;br /&gt;# lvcreate -l 100%FREE gfsc&lt;br /&gt;# gfs_mkfs -p lock_dlm -t gfsc:gfs1 -j 2 /dev/gfsc/lvol0&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;Теперь можно примонтировать том с кластерной файловой системой и работать с ним как с обычным диском&lt;br /&gt;&lt;/p&gt; &lt;pre&gt;# mount -t gfs /dev/gfsc/lvol0 /mnt&lt;/pre&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://sources.redhat.com/cluster/faq.html"&gt;Cluster Project FAQ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sources.redhat.com/cluster/doc/usage.txt"&gt;How to install and run clvm and gfs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.redhat.com/magazine/009jul05/features/gfs_overview/"&gt;Enterprise data sharing with Red Hat Global File System&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-5296847024002924824?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/5296847024002924824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=5296847024002924824' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5296847024002924824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5296847024002924824'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2008/10/gfs-global-file-system.html' title='GFS - Global File System'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-5787149961502599202</id><published>2007-08-21T16:13:00.001+03:00</published><updated>2009-07-08T17:50:13.709+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='file system'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><title type='text'>OCFS - Oracle cluster file system</title><content type='html'>OCFS - кластерная файловая система, разработанная Oracle, с учетом кластеризации баз данных. Проста в установке и использовании - всё, что необходимо - модули для используемого ядра и набор утилит для работы с файловой системой.&lt;br /&gt;Для установки в среде CentOS5 можно использовать бинарники, предназначенные для RHEL5:&lt;br /&gt;ocfs2 modules - http://oss.oracle.com/projects/ocfs2/files/&lt;br /&gt;ocfs2-tools - http://oss.oracle.com/projects/ocfs2-tools/files/&lt;br /&gt;В Debian-репозитарии также имеется пакет &lt;a href="http://packages.debian.org/stable/admin/ocfs2-tools"&gt;ocfs2-tools&lt;/a&gt; с данными утилитами. А вот ядро, наверняка, придется пересобрать с включенными ocfs-модулями.&lt;br /&gt;&lt;br /&gt;Лог действий достаточно прозрачен:&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;# wget http://oss.oracle.com/projects/ocfs2/dist/files/RedHat/RHEL5/x86_64/1.2.6-1/2.6.18-8.1.8.el5/ocfs2-2.6.18-8.1.8.el5-1.2.6-1.el5.x86_64.rpm&lt;br /&gt;# wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL5/x86_64/1.2.6-1/ocfs2-tools-1.2.6-1.el5.x86_64.rpm&lt;br /&gt;# rpm -Uvh ocfs2-2.6.18-8.1.8.el5-1.2.6-1.el5.x86_64.rpm ocfs2-tools-1.2.6-1.el5.x86_64.rpm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь все необходимые модули должны появиться в каталоге /lib/modules/KERNEL_VERSION/kernel/fs/ocfs2. Осталось только подготовить конфигурационный файл для сервиса блокировок o2cb:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;# mkdir /etc/ocfs2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# vi /etc/ocfs2/cluster.conf&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;cluster:&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;   node_count = 2&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;        name = fc&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;node:&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;   ip_port = 7777&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;   ip_address = 192.168.2.15&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;   number = 1&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;   name = centos1&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;   cluster = fc&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;node:&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;        ip_port = 7777&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;        ip_address = 192.168.2.16&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;    number = 22&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;    name = centos2&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;        cluster = fc&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;На данном этапе необходимо скопировать данный файл на все ноды и запустить сервис o2cb:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;# /etc/init.d/o2cb start&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь можно форматировать доступное блочное устройство /dev/sdb в формат ocfs и монтировать ее для дальнейшей работы:&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;# mkfs.ocfs2 -b 4K -C 128K -N 2 -L ocfs1 /dev/sdb&lt;br /&gt;# mount -t ocfs2 /dev/sdb /mnt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://oss.oracle.com/projects/ocfs2/dist/documentation/ocfs2_faq.html"&gt;OCFS2 - FAQ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xenamo.sourceforge.net/index.html"&gt;Xen with DRBD, GNBD and OCFS2 HOWTO&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.rampant-books.com/art_hunter_rac_oracle_ocfs2.htm"&gt;Install &amp;amp; Configure OCFS2 for Oracle RAC&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-5787149961502599202?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/5787149961502599202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=5787149961502599202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5787149961502599202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5787149961502599202'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/08/ocfs-oracle-cluster-file-system.html' title='OCFS - Oracle cluster file system'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-1260698512819221994</id><published>2007-08-21T15:10:00.001+03:00</published><updated>2009-09-18T07:57:32.511+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><title type='text'>Собираем кластер. Часть 2: Storage</title><content type='html'>Для функционирования кластерной системы, необходимо наличие единой дисковой подсистемы, доступной для всех серверов (node), работающих внутри кластера.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_z-VCq4KhLPA/RoZBBhTAsEI/AAAAAAAAABE/TrCM6dqq7UA/s1600-h/cluster2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_z-VCq4KhLPA/RoZBBhTAsEI/AAAAAAAAABE/TrCM6dqq7UA/s400/cluster2.png" alt="" id="BLOGGER_PHOTO_ID_5081820723907964994" border="0" /&gt;&lt;/a&gt;С дисковой подсистемой (storage) можно общаться на уровне:&lt;br /&gt;- сервиса (примеры - NFS-директория, примонтированная на всех нодах, &lt;a href="http://www.openslx.org/trac/dnbd"&gt;DNBD&lt;/a&gt;)&lt;br /&gt;- блочного устройства, доступного всем нодам (SAN)&lt;br /&gt;Самым простым решением является использование сетевой файловой системы - NFS. В данном случае все проблемы по обслуживанию блокировок при совместной работе с данными NFS-служба берет на себя. Статья [1] прекрасно описывает пример создания storage на основе NFS. Я попробовал на Debian 4.0 - все отлично работает. Но присутствие уровня сервиса накладывает некоторый отрицательный отпечаток на производительность.&lt;br /&gt;Более низкий уровень общения с дисковой системой - уровень обычного блочного устройства (block device). В этом случае Вы имете в системе дополнительный диск (/dev/sdb, /dev/hdb), с которым работаете как с обычным жестким диском, но есть несколько "но":&lt;br /&gt;&lt;ul&gt;&lt;li&gt;если данный диск доступен нескольким нодам в режиме записи (RW), Вы должны обеспечить на нем функционирование кластерной файловой системы, которая позволит работать одновременно с одними и теми же данными с разных нодов.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Вам придется раскошелиться на приобретение &lt;a href="http://en.wikipedia.org/wiki/Storage_area_network"&gt;SAN&lt;/a&gt; (на основе Fibre Channel или более дешевого - &lt;a href="http://en.wikipedia.org/wiki/ISCSI"&gt;iSCSI&lt;/a&gt;. Точных цен я не знаю, но это недешевая покупка :)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Перед написанием этих строк я попробовал две кластерные файловые системы - GFS и OCFS2. Если сравнивать "на глаз" производительность, то можно сказать, что обе файловые системы работают более менее одинакого быстро. Но GFS по сравнению с OCFS на первых порах более сложен в запуске, так как требует установки и настройки Red Hat Cluster Suite. Данный Suite включает в себя все необходимые "примочки" для работы кластера, начиная от heartbeat'а, поддержки множества сетевых служб, заканчивая фенсингом кластерной файловой системы (&lt;a href="http://en.wikipedia.org/wiki/Node_fencing"&gt;fencing&lt;/a&gt;). Информации по GFS доступно достаточно, чего не скажешь об OCFS. Обе  данные кластерные файловые системы опробованы на CentOS 5, все работает стабильно без каких-либо оговорок, лог действий скоро выложу.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://howtoforge.com/high_availability_nfs_drbd_heartbeat"&gt;Setting Up A Highly Available NFS Server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.debian-administration.org/articles/348"&gt;Distributed filesystem for Debian clusters? (discussion)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://linux-ha.org/DRBD/NFS"&gt;DRBD/NFS: Linux HA&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.opennet.ru/tips/info/1382.shtml"&gt;Обзор сетевых и кластерных ФС:  Lustre, GFS, AFS, GFarm&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-1260698512819221994?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/1260698512819221994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=1260698512819221994' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1260698512819221994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1260698512819221994'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/06/2-storage.html' title='Собираем кластер. Часть 2: Storage'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_z-VCq4KhLPA/RoZBBhTAsEI/AAAAAAAAABE/TrCM6dqq7UA/s72-c/cluster2.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6803999565489999231</id><published>2007-06-27T12:29:00.001+03:00</published><updated>2009-07-08T17:50:31.845+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='HA'/><title type='text'>Собираем кластер. Часть 1: Heartbeat</title><content type='html'>Кластер - это прежде всего система повышенной готовности (high availability - HA), построеная с учетом того, что она продолжает работать безотказно, даже если какая-то ее часть выходит из строя.&lt;br /&gt;Heartbeat - продукт проекта Linux-HA, позволяющий реализовать механизм безотказной работы отдельных частей кластера. Первый, кому необходим этот механизм в кластере - это распределитель нагрузки (load balancer, или director).&lt;br /&gt;Допустим, у нас есть два сервера (loadb1, loadb2), которые выделены для того, чтобы стать распределителями нагрузки в будущем кластере. Но прежде чем устанавливать на них программное обеспечение для управление кластером, необходимо настроить и оттестировать механим безотказной работы - когда какой-либо из серверов (loadb1 или loadb2) выходит из строя, второй, благодаря heartbeat, заменяет его. В данном случае условием того, что сервер вышел из строя будет считаться, что он не отвечает на broadcast запросы, т.е. проблемы в сетевом интерфейсе. Сервера loadb1 и loadb2 будут эмулировать  ip-адрес кластера - 195.46.64.21, т.е. он будет "поднят" на сетевом интерфейсе как дополнительный (alias).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_z-VCq4KhLPA/RoNQJRTAsDI/AAAAAAAAAA8/WHz2nR_QJK8/s1600-h/cluster.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_z-VCq4KhLPA/RoNQJRTAsDI/AAAAAAAAAA8/WHz2nR_QJK8/s400/cluster.png" alt="" id="BLOGGER_PHOTO_ID_5080992924796235826" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:130%;"&gt;Настройка heartbeat в Debian 4.0 (Etch)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;1. Установить пакет heartbeat-2 и все зависимости, которые он за собой тянет.&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;apt-get install heartbeat-2&lt;/span&gt;&lt;/blockquote&gt;В конце установки сервис heartbeat не сможет запуститься, потому как не созданы основные конфигурационные файлы - &lt;span style="font-style: italic;"&gt;ha.cf, authkeys, haresources&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ha.cf&lt;/span&gt; - основной конфигурационный файл, содержащий массу различных параметров того, как будет  осуществляться heartbeat-механизм. За основу можно взять файл, идущий в пакете (расположен в /usr/share/doc/heartbeat-2). Перед использованием достаточно установить 3 параметра (директивы):&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;bcast   eth0&lt;br /&gt;node    loadb1&lt;br /&gt;node    loadb2&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Указав таким образом использовать heartbeat-механизм через eth0 интерфейсы на основе broadcast-запросов. Имена loadb1, loadb2 должны быть hostname-именами серверов, команда uname -a должна возвращать такие же значения.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;authkeys &lt;/span&gt;- файл для взаимной аутентификации серверов loadb1 и loadb2. Можно использовать sha, md5, но чтобы не расходовать ресурсы достаточно использовать crc. После создания файл, необходимо установить права доступа к нему только для root&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# cat &gt; authkeys&lt;br /&gt;auth 1&lt;br /&gt;1 crc&lt;br /&gt;[Ctrl+C]&lt;br /&gt;# chmod 600 authkeys&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;haresources &lt;/span&gt;- файл, описывающий ресурсы, контролируемые серверами loadb1 и loadb2. Ресурсы представляют собой обычные стоп/старт скрипты, похожие чем-то на сценарии из/etc/init.d. В директории /etc/ha.d/resource.d можно посмотреть доступные (уже готовые к использованию) сценарии. В данном примере будет использован ресурс IPaddr для активации дополнительного ip-адреса на интерфейсе eth0.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;loadb1  IPaddr::195.46.64.21/24/eth0&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Данные конфигурационные файлы должны быть помещены на обоих серверах в директорию /etc/ha.d и должны быть идентичны. После того, как все подготовлено, запустить heartbeat-сервис на обоих серверах:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# /etc/init.d/heartbeat start&lt;br /&gt;Starting High-Availability services:&lt;br /&gt;2007/06/28_10:14:21 INFO: IPaddr Resource is stopped&lt;br /&gt;Done.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Спустя пару секунд на сервере loadb1 будет поднят дополнительный ip-адрес - 195.46.64.21.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;loadb1# ifconfig&lt;br /&gt;eth0      Link encap:Ethernet  HWaddr 00:60:08:04:09:0D&lt;br /&gt;        inet addr:195.46.64.15  Bcast:195.46.64.255  Mask:255.255.255.0&lt;br /&gt;        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;        RX packets:1119456 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;        TX packets:96462 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;        collisions:0 txqueuelen:1000&lt;br /&gt;        RX bytes:79824340 (76.1 MiB)  TX bytes:18991729 (18.1 MiB)&lt;br /&gt;        Interrupt:10 Base address:0xe000&lt;br /&gt;&lt;br /&gt;eth0:0    Link encap:Ethernet  HWaddr 00:60:08:04:09:0D&lt;br /&gt;        inet addr:195.46.64.21  Bcast:195.46.64.255  Mask:255.255.255.0&lt;br /&gt;        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;        Interrupt:10 Base address:0xe000&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Если что-то случается с loadb1 (можно сэмулировать аварию, отправив его на перезагрузку), loadb2 поднимает данный ip-адрес на своем eth0 интерфейсе и принимает на себя основную роль.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;loadb2# ifconfig&lt;br /&gt;eth0      Link encap:Ethernet  HWaddr 00:10:5A:BF:2B:8C&lt;br /&gt;        inet addr:195.46.64.16  Bcast:195.46.64.255  Mask:255.255.255.0&lt;br /&gt;        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;        RX packets:1256304 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;        TX packets:93726 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;        collisions:0 txqueuelen:1000&lt;br /&gt;        RX bytes:99944699 (95.3 MiB)  TX bytes:19336953 (18.4 MiB)&lt;br /&gt;        Interrupt:9 Base address:0xec00&lt;br /&gt;&lt;br /&gt;eth0:0    Link encap:Ethernet  HWaddr 00:10:5A:BF:2B:8C&lt;br /&gt;        inet addr:195.46.64.21  Bcast:195.46.64.255  Mask:255.255.255.0&lt;br /&gt;        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;        Interrupt:9 Base address:0xec00&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;В /var/log/messages можно проследить происходящее - всё очень подробно и понятно.&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/ru/linux/library/l-halinux/"&gt;Программное обеспечение повышенной готовности промежуточного уровня в Linux, часть 1: Heartbeat и Web-сервер Apache&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://howtoforge.com/high_availability_loadbalanced_apache_cluster"&gt;How To Set Up A Loadbalanced High-Availability Apache Cluster&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.linux-ha.org/"&gt;The High Availability Linux Project&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6803999565489999231?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6803999565489999231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6803999565489999231' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6803999565489999231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6803999565489999231'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/06/1-heartbeat.html' title='Собираем кластер. Часть 1: Heartbeat'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_z-VCq4KhLPA/RoNQJRTAsDI/AAAAAAAAAA8/WHz2nR_QJK8/s72-c/cluster.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6170979529985683158</id><published>2007-06-20T16:54:00.000+03:00</published><updated>2007-06-20T15:43:34.576+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><title type='text'>Индексы в OpenLDAP</title><content type='html'>Для увеличения производительности LDAP-сервиса на основе OpenLDAP, можно воспользоваться индексацией (index), которая помогает ускорить обработку поисковых запросов.&lt;br /&gt;Для этого в основном конфигурационном файле (/etc/ldap.slapd.conf) предусмотрен параметр index. Формат следующий:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;index    {attrlist | default} [pres,eq,approx,sub,none]&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;где&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;attrlist &lt;/span&gt;&lt;/span&gt;- список атрибутов (через запятую), для которых будет включена индексация&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;default &lt;/span&gt;- используется для указания всех явно не указанных, но используемых в базе, атрибутов&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;pres &lt;/span&gt;&lt;/span&gt;(present) - индекс для более быстрого определения установлен ли указанный атрибут&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;eq &lt;/span&gt;&lt;/span&gt;(equality) - индекс для точного поиска указанного значения атрибута (cn=Roman Sozinov)&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;approx &lt;/span&gt;&lt;/span&gt;(approximate) - индексация для быстрого поиска созвучных (по фонетике) значений (cn=smith и cn=smit)&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;sub &lt;/span&gt;&lt;/span&gt;(substring) - индексация при поиске по неполным строкам (cn=Roma*)&lt;/li&gt;&lt;/ul&gt;Пример использования:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;index cn&lt;br /&gt;index sn,uid,mail eq,sub&lt;br /&gt;index default none&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;В данном случае для cn-атрибута будут включены все методы индексации; для sn, uid и mail только eq и sub. Для всех остальных атрибутов индексация будет отключена (default none).&lt;br /&gt;&lt;br /&gt;Чтобы внести изменения в индексы, необходимо остановить работающий ldap-сервис (чтобы получить rw-контроль над базой) и запустить утилиту slapindex, обновляющую индексы, установленные для базы. В некоторых источниках советуют перед переиндексацией сделать копию базы "на всякий пожарный".&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# /etc/init.d/slapd stop&lt;br /&gt;Stopping OpenLDAP: slapd.&lt;br /&gt;# slapindex -v&lt;br /&gt;...&lt;br /&gt;# /etc/init.d/slapd start&lt;br /&gt;Starting OpenLDAP: slapd.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Не стоит слишком увлекаться индексацией, так как она требует дополнительного использования памяти и ресурсов процессора.&lt;br /&gt;&lt;br /&gt;Литература:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;LDAP Implementation Cookbook (IBM, 1999)&lt;/li&gt;&lt;li&gt;LDAP System Administration (O'Reilly, 2003)&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6170979529985683158?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6170979529985683158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6170979529985683158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6170979529985683158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6170979529985683158'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/06/openldap.html' title='Индексы в OpenLDAP'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-5977360343354458263</id><published>2007-06-12T15:51:00.001+03:00</published><updated>2008-10-11T12:43:24.780+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Знакомство с Linux-VServer</title><content type='html'>Статья &lt;a href="http://www.sunhelp.ru/archives/52-ZonnaJa_Zawita_Solaris_10.html"&gt;"Зонная Защита Solaris 10"&lt;/a&gt; замечательно описывает подход и возможности виртуализации на уровне  операционной системы на примере зон в Solaris. Она также содержит ссылки на подобные решения в Linux-среде -  Linux-Vserver, OpenVZ. Так как я использую преимущественно Debian (а он уже содержит в себе поддержку linux-vserver), то вопрос выбора для меня стоял недолго, хотя желание ознакомиться с OpenVZ не пропало.&lt;br /&gt;Linux-vserver - это отличное решение для хостинга и тестирования в различных окружениях - на одном физическом сервере используется одно для нескольких виртуальных серверов Linux-ядро. Главный (MAIN) сервер используется для контроля за виртуальными серверами, каждый из которых находится в закрытой адресной среде, не видя остальных. Разработчики указывают около 3-4% падения производительности системы при использовании VServer, но это настолько маленькие цифры, что их можно не учитывать - система работает как обычно - шустро.&lt;br /&gt;В репозитарии Debian 4.0 уже есть пропатченное linux-ядро, готовое к работе. Минусом является отсутствие отдельного патча linux-vserver, чтобы иметь возможность наложить его на собранное своими руками ядрышко.&lt;br /&gt;Установка и использование linux-vserver очень проста.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# apt-get install linux-image-2.6-vserver-686 util-vserver vserver-debiantools debootstrap&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Пример команды для создания виртуального сервера&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# newvserver --vsroot /var/lib/vservers/ --hostname srv002 --domain domain.ru --ip 192.168.1.102/24 --dist etch --mirror http://ftp.at.debian.org/debian --interface eth0&lt;br /&gt;# uname -a&lt;br /&gt;Linux srvmain 2.6.18-4-vserver-686 #1 SMP Thu May 10 01:37:59 UTC 2007 i686 GNU/Linux&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;Стартуем виртуальный хост&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# vserver srv002 start&lt;/span&gt;&lt;/blockquote&gt;Входим в виртуальный хост&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# vserver srv002 enter&lt;br /&gt;# uname -a&lt;br /&gt;Linux srv002 2.6.18-4-vserver-686 #1 SMP Thu May 10 01:37:59 UTC 2007 i686 GNU/Linux&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;Сейчас можно настроить виртуальный хост для требуемых нужд, установить все необходимое/дополнительное. Всё, как на обычном хосте.&lt;br /&gt;Выходим из виртуального хоста&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;# vserver srv002 stop&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;Возможные проблемы могут возникнуть с Apache, если на main-хосте уже запущен Apache и не привязан к конкретному ip-адресу.  В этом случае, пытаясь запустить apache на виртуальном хосте, в error.log можно встреить ошибку:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;[crit] (98)Address already in use: make_sock: could not bind to port 80&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Решение: привязать main-сервер к конкретному ip-адресу.&lt;br /&gt;&lt;br /&gt;Проблема с Bind 9 решается не так просто:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;blockquote&gt;cd /usr/src&lt;br /&gt;apt-get build-dep bind9&lt;br /&gt;apt-get source bind9&lt;br /&gt;cd bind9-x.x.x&lt;br /&gt;vi debian/rules&lt;br /&gt;...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;--disable-linux-caps&lt;/span&gt; \&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;--disable-threads&lt;/span&gt; \&lt;br /&gt;...&lt;br /&gt;dpkg-buildpackage&lt;br /&gt;...&lt;br /&gt;cd ..&lt;br /&gt;dpkg -i *.deb&lt;br /&gt;echo "bind9 hold" | dpkg --set-selections # чтобы заморощить автоматическое обновление&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;На официальном сайте есть &lt;a href="http://linux-vserver.org/Problematic_Programs"&gt;отдел&lt;/a&gt;, посвященный "проблемному" soft'у. Проблем с OpenLDAP, Exim, Proftpd не наблюдалось - всё работает как обычно - как часы.&lt;br /&gt;&lt;br /&gt;Для автозапуска виртуального сервера при перезагрузке необходимо выполнить следующее:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;blockquote&gt;echo "default" &gt; /etc/vservers/SERVERNAME/apps/init/mark&lt;/blockquote&gt;&lt;/span&gt;Чтобы сделать копию уже сконфигурированного виртуального хоста srv002 (например web-сервера).&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;blockquote&gt;vserver srv003 build --hostname srv003 --interface eth0:192.168.1.103/24 -m rsync -- -s /var/lib/vservers/srv002/&lt;/blockquote&gt;&lt;/span&gt;Если необходимо ограничить ресурсы (процессор, память) виртуальных хостов, linux-vserver и тут не подведет.&lt;br /&gt;Пример (взят из FAQ) того, как избежать ситуации "Out of memory"&lt;br /&gt;1. Проверить размер страниц (pagesize) в памяти (обычно 4Кб)&lt;br /&gt;2. Создать директорию rlimits&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;mkdir /etc/vservers/srv002/rlimits&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;3.  Установить значения максимума для резидентной памяти (rss) и максимума для всего объема виртуальной памяти (as). Хранимые значения указывают на число страниц памяти - например, чтобы установить предел в 200Мб при размере страницы 4Кб, нужно указать значение 50000.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;echo 50000 &gt; /etc/vserver/&lt;guest&gt;/rlimits/rss   # 200Mb&lt;br /&gt;echo 100000 &gt; /etc/vserver/&lt;guest&gt;/rlimits/as    # 400Mb&lt;br /&gt;&lt;/guest&gt;&lt;/guest&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;4. Чтобы изменения вступили в силу, необходимо перезапустить виртуальный хост.&lt;br /&gt;&lt;br /&gt;В комплекте пакета util-vserver идут замечательные утилиты для наблюдения за виртуальными хостами. Вот как это выглядит:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# &lt;span style="font-weight: bold;"&gt;vserver-stat&lt;/span&gt;&lt;br /&gt;CTX   PROC    VSZ    RSS  userTIME   sysTIME    UPTIME NAME&lt;br /&gt;0       59 197.9M  43.7M  36m51s32   9m37s35   5d22h45 root server&lt;br /&gt;49166    9   137M  20.2M   0m02s98   0m03s40   4d00h03 srv008&lt;br /&gt;49169    9   137M  20.2M   0m39s41   0m06s62   3d23h59 srv009&lt;br /&gt;49170   13 174.3M 102.6M  16m30s91   1m03s46   3d20h57 srv002&lt;br /&gt;49171    3  21.1M   4.6M   0m00s40   0m00s10   3h22m13 srv001&lt;br /&gt;49176    9   137M  20.2M   0m00s80   0m00s20   1h28m18 srv007&lt;br /&gt;#&lt;br /&gt;#&lt;br /&gt;# &lt;span style="font-weight: bold;"&gt;vps ax&lt;/span&gt;&lt;br /&gt;PID CONTEXT             TTY      STAT   TIME COMMAND&lt;br /&gt;1     0 MAIN          ?        Ss     0:01 init [2]&lt;br /&gt;...&lt;br /&gt;1045     0 MAIN          ?        S&lt;     0:12 [md1_raid1]&lt;br /&gt; 1049     0 MAIN          ?        S&lt;     0:00 [md2_raid1]&lt;br /&gt; 1126     0 MAIN          ?        S&lt;     0:00 [kjournald]&lt;br /&gt; 1611     0 MAIN          ?        S&lt;     0:00 [kedac]&lt;br /&gt; 1662     0 MAIN          ?        S&lt;     0:00 [kpsmoused]&lt;br /&gt; 1922     0 MAIN          ?        S&lt;     0:00 [kmirrord]&lt;br /&gt; 1970     0 MAIN          ?        S&lt;     0:00 [kjournald]&lt;br /&gt; 1972     0 MAIN          ?        S&lt;     0:15 [kjournald]&lt;br /&gt; 2259     0 MAIN          ?        Ss     0:02 /sbin/syslogd&lt;br /&gt; 2265     0 MAIN          ?        Ss     0:00 /sbin/klogd -x&lt;br /&gt; 2617     0 MAIN          ?        Ss     0:00 /usr/sbin/inetd&lt;br /&gt; 2632     0 MAIN          ?        Ss     0:00 /usr/sbin/sshd&lt;br /&gt; 2874     0 MAIN          ?        Ss     0:00 /sbin/mdadm&lt;br /&gt; 2905     0 MAIN          ?        Ss     0:00 /usr/sbin/cron&lt;br /&gt; 2922     0 MAIN          ?        Ss     0:00 /usr/sbin/apache&lt;br /&gt; 2949     0 MAIN          tty1     Ss+    0:00 /sbin/getty 38400 tty1&lt;br /&gt; 2950     0 MAIN          tty2     Ss+    0:00 /sbin/getty 38400 tty2&lt;br /&gt; 2951     0 MAIN          tty3     Ss+    0:00 /sbin/getty 38400 tty3&lt;br /&gt; 2952     0 MAIN          tty4     Ss+    0:00 /sbin/getty 38400 tty4&lt;br /&gt; 2953     0 MAIN          tty5     Ss+    0:00 /sbin/getty 38400 tty5&lt;br /&gt; 2954     0 MAIN          tty6     Ss+    0:00 /sbin/getty 38400 tty6&lt;br /&gt;22845     0 MAIN          ?        Ss     0:00 /usr/sbin/exim4 -bd -q30m&lt;br /&gt;26097     0 MAIN          ?        S      0:00 /usr/sbin/apache&lt;br /&gt;26098     0 MAIN          ?        S      0:00 /usr/sbin/apache&lt;br /&gt;26099     0 MAIN          ?        S      0:00 /usr/sbin/apache&lt;br /&gt;26100     0 MAIN          ?        S      0:00 /usr/sbin/apache&lt;br /&gt;26101     0 MAIN          ?        S      0:00 /usr/sbin/apache&lt;br /&gt;15571 49166 srv008        ?        Ss     0:00 /sbin/syslogd&lt;br /&gt;15590 49166 srv008        ?        Ss     0:00 proftpd: (accepting connections)&lt;br /&gt;15596 49166 srv008        ?        Ss     0:00 /usr/sbin/cron&lt;br /&gt;15606 49166 srv008        ?        Ss     0:00 /usr/sbin/apache&lt;br /&gt;16397 49169 srv009        ?        Ss     0:00 /sbin/syslogd&lt;br /&gt;16416 49169 srv009        ?        Ss     0:00 proftpd: (accepting connections)&lt;br /&gt;16422 49169 srv009        ?        Ss     0:00 /usr/sbin/cron&lt;br /&gt;16432 49169 srv009        ?        Ss     0:00 /usr/sbin/apache&lt;br /&gt;17970 49170 srv002        ?        Ss     0:08 /sbin/syslogd&lt;br /&gt;17982 49170 srv002        ?        Ss     0:00 /usr/sbin/named -u bind&lt;br /&gt;17989 49170 srv002        ?        Ss     0:00 /usr/sbin/lwresd&lt;br /&gt;18005 49170 srv002        ?        Ss    15:58 /usr/sbin/clamd&lt;br /&gt;18088 49170 srv002        ?        Ss     0:00 /usr/bin/freshclam -d --quiet&lt;br /&gt;18233 49170 srv002        ?        Ss     0:06 /usr/sbin/exim4 -bd -q30m&lt;br /&gt;18259 49170 srv002        ?        Ss     0:00 /usr/sbin/cron&lt;br /&gt; 6387 49169 srv009        ?        S      0:00 /usr/sbin/apache&lt;br /&gt; 6388 49169 srv009        ?        S      0:00 /usr/sbin/apache&lt;br /&gt; 6389 49169 srv009        ?        S      0:00 /usr/sbin/apache&lt;br /&gt; 6390 49169 srv009        ?        S      0:00 /usr/sbin/apache&lt;br /&gt;17469     0 MAIN          ?        Ss     0:00 sshd: root@pts/0&lt;br /&gt;17471     0 MAIN          pts/0    Ss+    0:00 -bash&lt;br /&gt;18505 49171 srv001        ?        Ss     0:00 /sbin/syslogd&lt;br /&gt;18515 49171 srv001        ?        Ssl    0:00 /usr/sbin/slapd -g openldap -u openldap&lt;br /&gt;18531 49171 srv001        ?        Ss     0:00 /usr/sbin/cron&lt;br /&gt;19505     0 MAIN          ?        Ss     0:00 sshd: root@pts/2&lt;br /&gt;19507     0 MAIN          pts/2    Ss     0:00 -bash&lt;br /&gt;20434     0 MAIN          pts/2    S+     0:00 mc&lt;br /&gt;20436     0 MAIN          pts/3    Ss     0:00 bash -rcfile .bashrc&lt;br /&gt;21026 49176 srv007        ?        Ss     0:00 /sbin/syslogd&lt;br /&gt;21045 49176 srv007        ?        Ss     0:00 proftpd: (accepting connections)&lt;br /&gt;21051 49176 srv007        ?        Ss     0:00 /usr/sbin/cron&lt;br /&gt;21061 49176 srv007        ?        Ss     0:00 /usr/sbin/apache&lt;br /&gt;21083 49176 srv007        ?        S      0:00 /usr/sbin/apache&lt;br /&gt;21084 49176 srv007        ?        S      0:00 /usr/sbin/apache&lt;br /&gt;21846 49170 srv002        ?        S      0:00 /usr/sbin/exim4 -bd -q30m&lt;br /&gt;21847     1 ALL_PROC      pts/3    S+     0:00 vps ax&lt;br /&gt;21848     1 ALL_PROC      pts/3    R+     0:00 ps ax&lt;/span&gt;&lt;/blockquote&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.linux.com/print.pl?sid=06/12/19/0456207"&gt;Installing Linux-VServer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.5dollarwhitebox.org/wiki/index.php/Howtos_Linux-Vserver_Debian_Sarge"&gt;Howtos Linux-Vserver Debian Sarge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oldwiki.linux-vserver.org/ProblematicPrograms"&gt;Problematic Programs - Linux-VServer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oldwiki.linux-vserver.org/Vserver+DRBD"&gt;Vserver DRBD - Linux-VServer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nongnu.org/util-vserver/doc/conf/configuration.html"&gt;The /etc/vservers directory&lt;/a&gt;&lt;/li&gt;&lt;li&gt;"Системный администратор" (октябрь 2006)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-5977360343354458263?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/5977360343354458263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=5977360343354458263' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5977360343354458263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5977360343354458263'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/06/linux-vserver.html' title='Знакомство с Linux-VServer'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-8938575535994366314</id><published>2007-06-11T16:00:00.000+03:00</published><updated>2007-06-11T16:50:40.941+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><title type='text'>SSL соединение при использовании LDAP-сервиса</title><content type='html'>Данная заметка вышла как дополнение к постам &lt;a href="http://sozinov.blogspot.com/2007/01/starttls-ldap.html"&gt;StartTLS - безопасный LDAP&lt;/a&gt; и &lt;a href="http://sozinov.blogspot.com/2007/03/csv-ldif.html"&gt;cvs-&gt;ldif&lt;/a&gt;.&lt;br /&gt;При использовании общей для всех сотрудников LDAP-адресной книги за пределами офиса, условия использования безопасного LDAP-соединения становятся &lt;font style="font-weight: bold;"&gt;обязательными&lt;/font&gt;. Но существующие на данный  момент почтовые клиенты не умеют использовать функцию StartTLS, вместо этого они требуют отдельного SSL-соединения на отдельном порту (для ldaps это порт 636).&lt;br /&gt;В этом случае в дополнение к уже определенным в конфигурационном файле опциям TLSCertificateFile, TLSCertificateKeyFile, TLSCACertificateFile, в запускном скрипте необходимо открыть дополнительный безопасный порт - ldaps. В Debian это делается просто - в начало скрипта /etc/init.d/slapd необходимо добавить строку:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;&lt;font size="2"&gt;SLAPD_SERVICES="ldap:/// ldaps:///"&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;После перезапуска сервиса, убедиться, что ldaps порт открыт:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: courier new;"&gt;&lt;font size="2"&gt;# /etc/init.d/slapd restart&lt;br /&gt;Stopping OpenLDAP: slapd.&lt;br /&gt;Starting OpenLDAP: slapd.&lt;br /&gt;# netstat -an | grep 636&lt;br /&gt;tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN&lt;br /&gt;tcp6       0      0 :::636                  :::*                    LISTEN&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/blockquote&gt;Теперь остается только протестировать безопасное соединение из почтовой программы (галочка "secure connection (SSL)", порт 636). Thunderbird и Evolution прекрасно срабатывают сразу же. С Outlook'ом придется добавлять сертификат LDAP-сервера (или CA'я, который выдал данный сертификат) в Windows-хранилище сертификатов, иначе он будет отказываться работать, говоря при этом многозначительное "The specified directory service could not be reached".&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-8938575535994366314?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/8938575535994366314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=8938575535994366314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8938575535994366314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8938575535994366314'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/06/ssl-ldap.html' title='SSL соединение при использовании LDAP-сервиса'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-8539743107478140704</id><published>2007-06-08T13:01:00.000+03:00</published><updated>2007-06-15T08:15:02.167+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>Solaris LDAP Authentication with OpenLDAP</title><content type='html'>Продолжая тему интеграции работающих сервисов с единой директорией каталогов (LDAP), реализовал аутентификацию пользователей в Solaris 10 через PAM-модуль pam_ldap.&lt;br /&gt;&lt;br /&gt;План следующий:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Подготовить LDAP-каталог для хранения данных о пользователях&lt;/li&gt;&lt;li&gt;Подготовить систему для работы с LDAP-каталогом&lt;/li&gt;&lt;li&gt;Настроить PAM-конфигурацию для работы с LDAP&lt;/li&gt;&lt;li&gt;Протестировать работоспособность&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Перед тем как приступать к сборке всего этого "конструктора", советую ознакомиться (освежить в памяти) с документацией по PAM-модулям.&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote style="font-weight: bold;"&gt;1. Подготовка LDAP-каталога&lt;/blockquote&gt;В LDAP-директории должны существовать записи о пользователях, которые будут иметь доступ к системе. Пример записи:&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;pre&gt;dn: uid=user3,ou=People,o=Organization,c=lt&lt;br /&gt;uid: user3&lt;br /&gt;objectClass: top&lt;br /&gt;objectClass: person&lt;br /&gt;objectClass: organizationalPerson&lt;br /&gt;objectClass: inetOrgPerson&lt;br /&gt;objectClass: posixAccount&lt;br /&gt;gecos: Ivan Ivanov&lt;br /&gt;sn: Ivanov&lt;br /&gt;telephoneNumber: 37070022722&lt;br /&gt;mail: user3@organization.lt&lt;br /&gt;homeDirectory: /export/home/user3&lt;br /&gt;loginShell: /usr/bin/bash&lt;br /&gt;uidNumber: 1010&lt;br /&gt;cn: user3&lt;br /&gt;userPassword: {CRYPT}$1$Gw4bZGoA$cv7sLoqjquhfZiHIx5Hwi0&lt;br /&gt;gidNumber: 1100&lt;/pre&gt;&lt;/blockquote&gt;Также в LDAP-директории должен быть определен пользователь, имеющий доступ к "ветке" со всеми пользователями (доступ к паролям пользователей ему необязателен) - он будет использоваться для доступа к LDAP от имени системы. В рассматриваемом примере такой пользователь - &lt;span style="font-style: italic;"&gt;cn=manager, o=Organization,c=lt&lt;/span&gt; (с паролем '&lt;span style="font-style: italic;"&gt;neskazu&lt;/span&gt;').&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;2. Подготовка операционной системы для работы с LDAP-директорией&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;В Solaris 10 (и прежних, как оказалось, версиях) есть команда ldapclient, которая все сделает сама - нужно только правильно сформировать запрос. Если указываемые значения содержат пробелы, их необходимо обрамлять одинарными скобками. Например, на моей системе это выглядело так:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;ldapclient manual -v -a credentialLevel=proxy -a authenticationMethod=simple -a 'proxyDN=cn=manager,o=My Organization,c=lt' -a proxyPassword=neskazu -a 'defaultsearchbase=o=My Organization,c=lt '195.44.44.3&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Команда создаст в системе необходимые для работы с LDAP файлы и кое-что изменит не совсем верно - это касается файла /etc/nsswitch.conf.   В данном файле нужно будет поправить строку, добавив  запись возможность использовать dns для преобразования dns-имен хостов (resolving)&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;hosts:      &lt;span style="font-weight: bold;"&gt;dns &lt;/span&gt;ldap [NOTFOUND=return] files&lt;/span&gt;&lt;/blockquote&gt;Если все прошло без ошибок, то по команде getent passwd&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# getent passwd&lt;br /&gt;root:x:0:0:Super-User:/:/sbin/sh&lt;br /&gt;daemon:x:1:1::/:&lt;br /&gt;bin:x:2:2::/usr/bin:&lt;br /&gt;sys:x:3:3::/:&lt;br /&gt;adm:x:4:4:Admin:/var/adm:&lt;br /&gt;lp:x:71:8:Line Printer Admin:/usr/spool/lp:&lt;br /&gt;uucp:x:5:5:uucp Admin:/usr/lib/uucp:&lt;br /&gt;nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico&lt;br /&gt;smmsp:x:25:25:SendMail Message Submission Program:/:&lt;br /&gt;listen:x:37:4:Network Admin:/usr/net/nls:&lt;br /&gt;gdm:x:50:50:GDM Reserved UID:/:&lt;br /&gt;webservd:x:80:80:WebServer Reserved UID:/:&lt;br /&gt;nobody:x:60001:60001:NFS Anonymous Access User:/:&lt;br /&gt;noaccess:x:60002:60002:No Access User:/:&lt;br /&gt;nobody4:x:65534:65534:SunOS 4.x NFS Anonymous Access User:/:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;user3:x:1010:1100:Ivan Ivanov:/export/home/user3:/usr/bin/bash&lt;/span&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Не забыть создать в системе домашние директории для пользователей из LDAP-директории&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;mkdir /export/home/user3&lt;br /&gt;chown 1010:1100 &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;/export/home/user3&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;3. Настроить PAM-модуль pam_ldap&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;В файле /etc/pam.conf внести следующие изменения:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;other   auth requisite          pam_authtok_get.so.1&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# &lt;/span&gt;other  auth required           pam_dhkeys.so.1&lt;br /&gt;other   auth required           pam_unix_cred.so.1&lt;br /&gt;other   auth &lt;span style="font-weight: bold;"&gt;sufficient         &lt;/span&gt;pam_unix_auth.so.1&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;other   auth required           pam_ldap.so.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;other   account requisite       pam_roles.so.1&lt;br /&gt;other   account &lt;span style="font-weight: bold;"&gt;sufficient      &lt;/span&gt;pam_unix_account.so.1&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;other   account required        pam_ldap.so.1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;С включенным модулем pam_dhkeys система отказывалась аутентифицировать LDAP-пользователей. &lt;a href="http://cc.in2p3.fr/doc/phpman.php/man/pam_dhkeys/5"&gt;Поинтересовавшись&lt;/a&gt;, что это за модуль и поняв, что я его не использую,  закомментировал зверя.&lt;br /&gt;Если в pam.conf какая-то служба описана отдельно (например xscreensaver), то для нее необходимо также указать использование модуля pam_ldap как и для 'other'.&lt;br /&gt;&lt;br /&gt;После проделывания вышеприведенных процедур все должно заработать. Если что-то не так, то на помощь приходит Syslog-система, правда прежде чем ею воспользоваться, её конфигурационный файл (/etc/syslog.conf) тоже требует доработки - например, такой:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;auth.debug                /var/log/authlog&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;причем, если файл /var/log/authlog не создан, создать пустышку и заставить syslog перечиать свой файл конфигурации&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# touch /var/log/authlog&lt;br /&gt;# svcadm enable svc:/system/system-log:default&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://usefulthings.org.uk/operating-systems/solaris/ldap-authentication-in-solaris-10"&gt;LDAP Authentication in Solaris 10&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.scottlowe.org/2006/08/15/solaris-10-and-active-directory-integration/"&gt;Solaris 10 and Active Directory Integration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.freebsd.org/doc/ru_RU.KOI8-R/articles/pam/index.html"&gt;Подключаемые Модули Аутентификации (PAM)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sun.com/software/solaris/pam/pam.admin.pdf"&gt;PAM Administration (pdf)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scit.wlv.ac.uk/cgi-bin/mansec?1M+ldapclient"&gt;Manual Page for ldapclient&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-8539743107478140704?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/8539743107478140704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=8539743107478140704' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8539743107478140704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8539743107478140704'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/06/solaris-ldap-authentication-with.html' title='Solaris LDAP Authentication with OpenLDAP'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-1027752970463235779</id><published>2007-06-01T16:39:00.001+03:00</published><updated>2007-06-04T13:17:59.197+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BSD'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><category scheme='http://www.blogger.com/atom/ns#' term='imap'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><title type='text'>Установка Dovecot IMAP сервиса с поддержкой LDAP в FreeBSD 5.4</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Что есть:&lt;/span&gt; внутренний IMAP-сервер для переписки между сотрудниками (локальная сеть)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Что необходимо сделать:&lt;/span&gt;  научить IMAP-сервер аутентифицировать пользователей через единую LDAP-директорию.&lt;br /&gt;&lt;font style="font-family: courier new;" size="2"&gt;&lt;blockquote&gt;# cd /usr/ports&lt;br /&gt;# make update&lt;br /&gt;# cd /usr/ports/mail/dovecot&lt;br /&gt;# make&lt;br /&gt;&lt;br /&gt;make (выбрать LDAP)&lt;br /&gt;make install&lt;br /&gt;echo dovecot_enable="YES" &gt;&gt; /etc/rc.conf&lt;/blockquote&gt;&lt;/font&gt;&lt;font style="font-family: times new roman;" size="3"&gt;&lt;font style="font-family: courier new;"&gt;&lt;/font&gt;&lt;/font&gt;Если при сборке вываливается ошибка&lt;br /&gt;&lt;span style="font-style: italic;"&gt;On FreeBSD before 6.2 ports system unfortunately can not set default X11BASE by itself so please help it a bit by setting X11BASE=${LOCALBASE} in make.conf.&lt;/span&gt;&lt;br style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;On the other hand, if you do wish to use non-default X11BASE, please set variable USE_NONDEFAULT_X11BASE&lt;/span&gt;&lt;br /&gt;В /etc/make.conf нужно добавить строку X11BASE=${LOCALBASE} и повторить сборку.&lt;br /&gt;&lt;br /&gt;Приведенная ниже конфигурация позволяет использовать в качестве аутентификационной базы пользователей - LDAP-директорию, а данные о пользователях (uid, gid, homedir)  достаточно статичны, поэтому они формируются средствами внутренних переменных (%u).&lt;br /&gt;Приведены только те строки, которые требуют изменения.&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;font size="2"&gt;# cd /usr/local/etc&lt;br /&gt;# cp dovecot-example.conf dovecot.conf&lt;br /&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;font style="font-weight: bold;" size="2"&gt;dovecot.conf&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;# сеть локальная, поэтому можно разрешить plaintext-аутентификацию&lt;br /&gt;disable_plaintext_auth = no&lt;br /&gt;# иерархия папок очень важна, поэтому mbox'а не хватает&lt;br /&gt;mail_location = maildir:~/Maildir&lt;br /&gt;# данная схема аутентификации не нужна&lt;br /&gt;#passdb pam {&lt;br /&gt;#}&lt;br /&gt;passdb ldap {&lt;br /&gt;  args = /usr/local/etc/dovecot-ldap.conf&lt;br /&gt;}&lt;br /&gt;userdb static {&lt;br /&gt;  # пользователя с uid=500 нужно создать, если его нет&lt;br /&gt;  args = uid=500 gid=mail home=/var/mail/myorganization/%u&lt;br /&gt;}&lt;/font&gt;&lt;/blockquote&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;font size="2"&gt;# cp dovecot-ldap-example.conf dovecot-ldap.conf&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font style="font-weight: bold;" size="2"&gt;dovecot-ldap.conf&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;# вместо глобального использования логина администратора для "привязки"&lt;br /&gt;# (bind)  к ldap-серверу будет использоваться логин и пароль&lt;br /&gt;# аутентифицирующегося пользователя&lt;br /&gt;auth_bind = yes&lt;br /&gt;auth_bind_userdn = uid=%u,ou=People,o=myorganization,c=ru&lt;/font&gt;&lt;/blockquote&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://wiki.dovecot.org/AuthDatabase/LDAP"&gt;AuthDatabase/LDAP&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-1027752970463235779?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/1027752970463235779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=1027752970463235779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1027752970463235779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1027752970463235779'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/06/dovecot-imap-ldap-freebsd-54.html' title='Установка Dovecot IMAP сервиса с поддержкой LDAP в FreeBSD 5.4'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3276119814799385561</id><published>2007-05-30T12:47:00.001+03:00</published><updated>2008-05-09T15:53:07.123+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='raid'/><category scheme='http://www.blogger.com/atom/ns#' term='HA'/><title type='text'>Инструкция по восстановлению Software RAID 1</title><content type='html'>В процессе установки Debian 4.0 (Etch) возможно создать Software (программный) RAID, повысив тем самым надежность хранения Ваших данных. Статья &lt;a href="http://ads.wars-nicht.de/blog/archives/54-Install-Debian-Etch-on-a-Software-Raid-1-with-S-ATA-disks.html"&gt;Install Debian Etch on a Software Raid 1 with S-ATA disks&lt;/a&gt; подробно описывает как это сделать в процессе инсталляции на примере создания RAID 1 (зеркальное копирование).&lt;br /&gt;Советую протестировать "живучесть" работающего массива, сэмитировав возникновение проблемы с каким-либо диском в массиве. Приведенная ниже инструкция описывает как действовать в таких случаях на примере RAID 1 с двумя SCSI-дисками (/dev/sda, /dev/sdb) на Debian 4.0 (Etch).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Этап 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Если проблемы с каким либо разделом в RAID (например, /dev/sdb2)&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;blockquote&gt;# cat /proc/mdstat&lt;br /&gt;Personalities : [raid0] [raid1] [raid5]&lt;br /&gt;md1 : active raid1 sda2[0] sdb2[2](F)&lt;br /&gt;    63472704 blocks [2/1] [U_]&lt;br /&gt;md2 : active raid1 sda3[0] sdb3[1]&lt;br /&gt;    3903680 blocks [2/1] [UU]&lt;br /&gt;md0 : active raid1 sda1[0] sdb1[1]&lt;br /&gt;    3317312 blocks [2/1] [UU]&lt;/blockquote&gt;&lt;/span&gt;Необходимо удалить поврежденный раздел (прежде пометив его как fail), а потом его же добавить:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# mdadm /dev/md1 –f /dev/sdb2&lt;br /&gt;# mdadm /dev/md1 -r /dev/sdb2&lt;br /&gt;# mdadm /dev/md1 -a /dev/sdb2&lt;/span&gt;&lt;/blockquote&gt;После проделанных операций проверить его статус, как показано выше. Если проблема устранена, все md-разделы будут помечены как [UU].&lt;br /&gt;Если это не помогает и массив по прежнему не восстанавливается, следует удалить все разделы испорченного диска (/dev/sdb1, /dev/sdb2), пометив прежде их как fail, и перейти к Этапу 2:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# mdadm /dev/md1 -f /dev/sdb1&lt;br /&gt;# mdadm /dev/md1 -r /dev/sdb1&lt;br /&gt;# mdadm /dev/md1 -f /dev/sdb2&lt;br /&gt;# mdadm /dev/md1 -r /dev/sdb2&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Этап 2&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;1. Выключить сервер&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# shutdown -h now &lt;/span&gt;&lt;/blockquote&gt;2. Если проблема с вторичным диском - вставить новый диск на место старого, повторив установку перемычек (jumpers). Если проблема с первичным диском - вставить на место первичного диска (/dev/sda) вторичный диск (рабочий, /dev/sdb), повторив установку перемычек (jumpers), а на место вторичного установить новый диск.&lt;br /&gt;3. Загрузить сервер.&lt;br /&gt;4. Из под root выполнить комманды:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# sfdisk -d /dev/sda | sfdisk /dev/sdb # копирование таблицы разделов с /dev/sda на /dev/sdb&lt;br /&gt;# fdisk -l  # проверить, что оба диска имеют одинаковую разметку&lt;br /&gt;# mdadm --add /dev/md0 /dev/sdb1 # добавление устройств в RAID&lt;br /&gt;# mdadm --add /dev/md1 /dev/sdb2&lt;br /&gt;# mdadm --add /dev/md2 /dev/sdb3&lt;br /&gt;# grub&lt;br /&gt;grub&gt; root (hd1,0) # указать, где находится каталог /boot/grub на вторичном диске&lt;br /&gt;grub&gt; setup (hd1) # установить GRUB-загрузчик в MBR вторичного диска&lt;br /&gt;grub&gt; quit&lt;/span&gt;&lt;/blockquote&gt;5. Проверить состояние RAID устройств можно коммандой cat /proc/mdstat&lt;br /&gt;Если всё, прошло успешно, вывод будет похож на:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# cat /proc/mdstat&lt;br /&gt;Personalities : [raid0] [raid1] [raid5]&lt;br /&gt;md0 : active raid1 sda1[0] sdb1[1]&lt;br /&gt;    24418688 blocks [2/2] [UU]&lt;br /&gt; md2 : active raid1 sda3[0] sdb3[1]&lt;br /&gt;    3903680 blocks [2/1] [UU]&lt;br /&gt;md1 : active raid1 sda2[0] sdb2[1]&lt;br /&gt;    24418688 blocks [2/2] [UU]&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;6.Как только RAID восстановится, перегрузить сервер для проверки работоспособности.&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://citkit.ru/articles/166/"&gt;GRUB - GRand мира загрузчиков&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.texsoft.it/index.php?c=hardware&amp;amp;m=hw.storage.grubraid1&amp;amp;l=it"&gt;How to boot Linux from RAID-1 with GRUB&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3276119814799385561?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3276119814799385561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3276119814799385561' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3276119814799385561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3276119814799385561'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/05/software-raid-1.html' title='Инструкция по восстановлению Software RAID 1'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6984705461401736145</id><published>2007-05-11T16:37:00.000+03:00</published><updated>2007-05-11T19:10:35.502+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='nagios'/><title type='text'>NRPE - мониторинг удаленных (недоступных извне) серверов средствами Nagios</title><content type='html'>NRPE - модуль для системы мониторинга Nagios, позволяющий запускать plugin'ы на удаленных серверах. Основная задача данного модуля - получить информацию о локальных данных удаленных серверов (check_load, check_users). Но с таким же успехом его можно использовать для мониторинга недоступных серверов, например, находящихся в локальной сети и не имеющих внешних адресов. Для этого достаточно установить на промежуточном сервере (195.43.68.11), имеющим доступ к локальной сети (192.168.1.0), nrpe-службу и на сервере мониторинга (195.43.68.2) установить nrpe-plugin.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_z-VCq4KhLPA/RkSNwX22VQI/AAAAAAAAAAU/2IZbPAXoGh0/s1600-h/nrpe.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_z-VCq4KhLPA/RkSNwX22VQI/AAAAAAAAAAU/2IZbPAXoGh0/s400/nrpe.JPG" alt="" id="BLOGGER_PHOTO_ID_5063327743248585986" border="0" /&gt;&lt;/a&gt;Все описанные ниже действия были проделанны на серверах с Linux Debian 4.0 (Etch).&lt;br /&gt;&lt;br /&gt;1. На стороне remote-сервера установить nrpe-сервис и базовый набор nagios-plugin'ов&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;# apt-get install nagios-nrpe-server nagios-plugins-basic&lt;br /&gt;...&lt;br /&gt;Setting up nagios-nrpe-server (2.5.1-3) ...&lt;br /&gt;Starting nagios-nrpe: nagios-nrpe.&lt;br /&gt;&lt;br /&gt;# netstat -an | grep 5666&lt;br /&gt;tcp        0      0 0.0.0.0:5666            0.0.0.0:*               LISTEN&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;2. Изменить конфигурационный файл /etc/nagios/nrpe.cfg и перезапустить сервис с новыми параметрами&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote&gt;allowed_hosts=127.0.0.1,195.43.68.2&lt;br /&gt;# разрешить использование аргументов при выхове plugin'ов&lt;br /&gt;dont_blame_nrpe=1&lt;br /&gt;# пример описания plugin'а&lt;br /&gt;command[check_ftp]=/usr/lib/nagios/plugins/check_ftp -H $ARG1$&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# /etc/init.d/nagios-nrpe-server restart&lt;br /&gt;Stopping nagios-nrpe: nagios-nrpe.&lt;br /&gt;Starting nagios-nrpe: nagios-nrpe.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;3. На стороне мониторинг-сервера установить nrpe-plugin, протестировать его функциональность и добавить описания требуемых для мониторинга локальных сервисов. В приведенном ниже примере используется plugin check_ftp, для проверки работоспособности ftp-сервиса на локальном сервере 192.168.1.111.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# apt-get install &lt;/span&gt;&lt;span style="font-size:85%;"&gt;nagios-nrpe-plugin&lt;br /&gt;...&lt;br /&gt;Setting up nagios-nrpe-plugin (2.5.1-3) ...&lt;br /&gt;&lt;br /&gt;# /usr/lib/nagios/plugins/check_nrpe -H &lt;/span&gt;&lt;span style="font-size:85%;"&gt;195.43.68.11&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;NRPE v2.5.1&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;# /usr/lib/nagios/plugins/check_nrpe -H &lt;/span&gt;&lt;span style="font-size:85%;"&gt;195.43.68.11&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;-c check_users&lt;br /&gt;USERS OK - 1 users currently logged in |users=1;5;10;0&lt;br /&gt;# /usr/lib/nagios/plugins/check_nrpe -H 195.43.68.11 -c check_load&lt;br /&gt;OK - load average: 0.21, 0.16, 0.11|load1=0.210;15.000;30.000;0; load5=0.160;10.000;25.000;0; load15=0.110;5.000;20.000;0;&lt;br /&gt;# /usr/lib/nagios/plugins/check_nrpe -H 195.43.68.11 -c check_total_procs&lt;br /&gt;PROCS OK: 60 processes&lt;br /&gt;# /usr/lib/nagios/plugins/check_nrpe -H 195.43.68.11 -c check_zombie_procs&lt;br /&gt;PROCS OK: 0 processes with STATE = Z&lt;br /&gt;# /usr/lib/nagios/plugins/check_nrpe -H 195.43.64.11 -c check_ftp -a 192.168.1.111&lt;br /&gt;FTP OK - 0.024 second response time on port 21 [220 saule FTP server ready.]|time=0.024221s;0.000000;0.000000;0.000000;10.000000&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Пример описания данного сервиса в конфигурации Nagios:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;define service{&lt;br /&gt;    use                             generic-service&lt;br /&gt;    host_name remote&lt;br /&gt;    service_description             NRPE_FTP&lt;br /&gt;    check_command                   check_nrpe!check_ftp!192.168.1.111&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf"&gt;NRPE Documentation&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6984705461401736145?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6984705461401736145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6984705461401736145' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6984705461401736145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6984705461401736145'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/05/nrpe-nagios.html' title='NRPE - мониторинг удаленных (недоступных извне) серверов средствами Nagios'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_z-VCq4KhLPA/RkSNwX22VQI/AAAAAAAAAAU/2IZbPAXoGh0/s72-c/nrpe.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3687817024356216194</id><published>2007-05-07T16:44:00.000+03:00</published><updated>2007-06-13T13:06:48.371+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='exim'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><title type='text'>Exilog - инструмент для анализа логов MTA Exim</title><content type='html'>В Linux Debian в качестве default MTA используется Exim. Данный агент очень мощный в настройке и в отличие от sendmail более стабилен и безопасен. В комплекте с ним идут различные утилиты для работы с почтовой очередью, вывода статистики (existats), просмотра того, что в данный момент происходит (exiwhat) и т.п. Но у него есть один недостаток - для него не существует на данный момент активно разрабатываемого анализатора логов.&lt;br /&gt;&lt;a href="http://duncanthrax.net/exilog/"&gt;Exilog&lt;/a&gt; - продукт не имеющий релиза, застрявший в разработке (последняя версия 0.5 от 2005.10.23), но он вполне мог бы стать полноценным инструментом для работы с логами Exim'а. Сам активно использую уже больше года и могу только поблагодарить разработчиков.&lt;br /&gt;Exilog - это перл-демон, который в реальном времени сканирует логи, результаты сбрасывает в MySQL базу и имеет приятный &lt;a href="http://duncanthrax.net/exilog/screenshots/"&gt;web-интерфейc&lt;/a&gt;.&lt;br /&gt;Весь процесс установки подробно описан в &lt;a href="http://duncanthrax.net/exilog/exilog.txt"&gt;README&lt;/a&gt; (необходимо устранить все зависимости (для Debian-системы это пакеты libdbd-mysql-perl и libnet-netmask-perl) и подправить конфигурационный файл). От себя же добавлю, что для окончательной интеграции в Debian-систему в /etc/init.d/exim4 необходимо внести следующие изменения:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;...&lt;br /&gt;start_exim()&lt;br /&gt;{&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/var/spool/exim4/exilog/exilog_agent.pl &gt;&gt; /var/log/exilog_agent.log 2&gt;&amp;1&lt;/span&gt;&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;stop_exim()&lt;br /&gt;{&lt;br /&gt;...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;kill -s 15 `cat /var/run/exilog-agent.pid`&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;...&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;a href="http://duncanthrax.net/exilog/"&gt;Exilog - homepage&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3687817024356216194?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3687817024356216194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3687817024356216194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3687817024356216194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3687817024356216194'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/05/exilog-mta-exim.html' title='Exilog - инструмент для анализа логов MTA Exim'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-8626208560261648478</id><published>2007-05-03T11:06:00.000+03:00</published><updated>2007-05-03T13:26:29.267+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><title type='text'>The GNU Accounting Utilities - стандартный инструментарий для анализа произошедшего</title><content type='html'>The GNU Accounting Utilities (acct) - набор из нескольких утилит, помогающих проанализировать произошедшие инциденты и обнаружить слабые места в работе сервера.&lt;br /&gt;Смысл простой - вы включаете запись всего происходящего, а потом анализируете накопленные данные (файлы /var/log/pacct и /var/log/wtmp). Слежение происходит на уровне ядра, поэтому ядро должно иметь соответствующую опцию (&lt;span style="font-style: italic;"&gt;BSD-style process accounting&lt;/span&gt;) при сборке (мною опробованы стандартные ядра Debian 3.1, 4.0, Slackware 10 - с ними все в порядке). В Debian и Slackware - все элементарно ставится из репозитария  - пакет acct.&lt;br /&gt;В данный набор входят следующие утилиты:&lt;br /&gt;&lt;ul class="menu"&gt;&lt;li&gt;&lt;a accesskey="2" href="http://www.gnu.org/software/acct/manual/html_mono/accounting.html#ac"&gt;ac&lt;/a&gt;:                           выводит статистику о длительности сессии&lt;/li&gt;&lt;li&gt;&lt;a accesskey="3" href="http://www.gnu.org/software/acct/manual/html_mono/accounting.html#accton"&gt;accton&lt;/a&gt;: включает сбор данных&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a accesskey="4" href="http://www.gnu.org/software/acct/manual/html_mono/accounting.html#last"&gt;last&lt;/a&gt;:                         выводит данные о последних сессиях пользователей &lt;/li&gt;&lt;li&gt;&lt;a accesskey="5" href="http://www.gnu.org/software/acct/manual/html_mono/accounting.html#lastcomm"&gt;lastcomm&lt;/a&gt;:                     выводит список запущенных комманд &lt;/li&gt;&lt;li&gt;&lt;a accesskey="6" href="http://www.gnu.org/software/acct/manual/html_mono/accounting.html#sa"&gt;sa&lt;/a&gt;:                           выводит статистику по аккаунтам пользователей&lt;/li&gt;&lt;/ul&gt;Лучший способ рассказа об этих утилитах - пример ситуации. Итак, представьте себе, вы хорошо осведомлены о том, что происходит на ваших серверах, накапливаете статистику (например, по snmp с помощью &lt;a href="http://sozinov.blogspot.com/2007/01/cacti-086i-debian-etch-40.html"&gt;Cacti&lt;/a&gt;) о загрузке, использовании памяти и процессорного времени, приходите утром смотрите на графики и видите дикую нагрузку на вашем веб-сервере ночью, когда обычно всё тихо. Естественно, первым делом идут в ход обычные логи (/var/log/messages, /var/log/auth.log, /var/log/syslog и .т.д.), но ситуация несколько осложняется - дело в том, что на веб-сервере запущен не только веб-сервис, но и с десяток других (mail, ftp, ldap, dns и т.д.). Если обычные логи ничего толкогого не говорят и вы не можете точно сказать, что за сервис вызвал такую нагрузку (да и сервис ли это был?), тогда в дело вступают Accounting Utilities (естественно, если вы прежде включили накопление результатов :) )&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;# lastcomm -f /var/log/pacct.1 &gt; ~/lastcomm.log&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Вывод будет примерно следующий:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;...&lt;br /&gt;apachectl               root     ??         0.01 secs Tue May  1 18:50&lt;br /&gt;lynx                    root     ??         0.01 secs Tue May  1 18:50&lt;br /&gt;awk                     root     ??         0.01 secs Tue May  1 18:50&lt;br /&gt;lynx                    root     ??         0.00 secs Tue May  1 18:50&lt;br /&gt;cat                     root     ??         0.00 secs Tue May  1 18:50&lt;br /&gt;httpd                   www      ??         0.13 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.12 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.15 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.17 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.25 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.14 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.14 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.25 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         1.56 secs Tue May  1 18:39&lt;br /&gt;httpd                   www      ??         0.13 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.14 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.23 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         1.92 secs Tue May  1 18:39&lt;br /&gt;proftpd                 root     ??         0.01 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.14 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.14 secs Tue May  1 18:49&lt;br /&gt;httpd                   www      ??         0.13 secs Tue May  1 18:48&lt;br /&gt;httpd                   www      ??         0.15 secs Tue May  1 18:48&lt;br /&gt;httpd                   www      ??         1.42 secs Tue May  1 18:39&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;httpd                   www      ??       361.29 secs Tue May  1 18:30&lt;/span&gt;&lt;br /&gt;httpd                   www      ??         0.32 secs Tue May  1 18:45&lt;br /&gt;httpd                   www      ??         0.75 secs Tue May  1 18:45&lt;br /&gt;httpd                   www      ??         0.80 secs Tue May  1 18:45&lt;br /&gt;httpd                   www      ??         0.19 secs Tue May  1 18:47&lt;br /&gt;...&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;Колонки: команда, пользователь, терминал, время выполнения, время старта данной команды (еще могут быть различные флаги, о которых написано в документации)&lt;/span&gt;&lt;br /&gt;Из приведенного выше лога видно, что веб-сервер что-то выполнял 360 секунд (видимо это был какой-то скрипт). Плюс число 360 - это явно какой-то лимит, видимо веб-сервер остановил выполнение скрипта по истечению timeout'а в 360 секунд. Ну а дальше - дело техники - в лог файлах выших сайтов найти что за скрипт был остановлен (и не раз) за то, что повисал.&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.gnu.org/software/acct/manual/html_mono/accounting.html"&gt;Accounting Utilities Manual&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.opennet.ru/tips/info/554.shtml?skip=25"&gt;Как отследить запущенные пользователями программы&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-8626208560261648478?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/8626208560261648478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=8626208560261648478' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8626208560261648478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8626208560261648478'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/05/gnu-accounting-utilities.html' title='The GNU Accounting Utilities - стандартный инструментарий для анализа произошедшего'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-4608125278994374763</id><published>2007-05-03T09:18:00.000+03:00</published><updated>2007-05-03T11:02:38.902+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ftp'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><title type='text'>ProFTPd + LDAP - пользователи и их квоты</title><content type='html'>Беря пример с Microsoft Active Directory, можно интегрировать LDAP-директорию пользователей с FTP-сервисом на основе ProFTPd. Кроме того, что в качестве аутентификационной базы пользователей можно использовать LDAP, в нем можно хранить и дополнительные средства авторизации - такие как данные о лимитах для пользователей (quota). ProFTPd должен быть собран с поддержкой LDAP (В Debian 4.0 Etch с этим всё в порядке). В качестве LDAP-сервиса использовался OpenLDAP 2.3.30 (тоже из Debian-репозитария пакетов).&lt;br /&gt;Первым делом следует добавить описание атрибута ftpQuota в nis-схему (файл /etc/ldap/schema/nis.schema).&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;attributetype ( 1.3.6.1.1.1.1.28 NAME 'ftpQuota'&lt;br /&gt;DESC 'Quota FTP'&lt;br /&gt;EQUALITY caseIgnoreIA5Match&lt;br /&gt;SUBSTR caseIgnoreIA5SubstringsMatch&lt;br /&gt;SYNTAX 1.3.6.1.4.1.1466.115.121.1.26&lt;br /&gt;SINGLE-VALUE )&lt;br /&gt;&lt;br /&gt;objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount'&lt;br /&gt;DESC 'Abstraction of an account with POSIX attributes'&lt;br /&gt;SUP top AUXILIARY&lt;br /&gt;MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;MAY ( userPassword $ loginShell $ gecos $ description $ &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;ftpQuota &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;) )&lt;/span&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;/span&gt;После этого перезапустить LDAP-сервис и удостовериться, что он нормально принял внесенные изменения&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:courier new;"&gt;# /etc/init.d/slapd restart&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Stopping OpenLDAP: slapd.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Starting OpenLDAP: slapd.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Если всё нормально, создать в LDAP-директории пользовательскую запись для ftp-доступа. Как пример:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;dn: cn=ftpuser,ou=Users,o=My Company,c=LT&lt;br /&gt;cn: ftpuser&lt;br /&gt;ipNetworkNumber: 12&lt;br /&gt;uid: ftpuser&lt;br /&gt;objectClass: ipNetwork&lt;br /&gt;objectClass: posixAccount&lt;br /&gt;objectClass: top&lt;br /&gt;userPassword: {MD5}ce4O7AJ89gFcMRd7PVaE7Q==&lt;br /&gt;gidNumber: 65534&lt;br /&gt;uidNumber: 106&lt;br /&gt;homeDirectory: /var/home/ftpuser&lt;br /&gt;ftpQuota: false,hard,10485760,0,0,0,0,0&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Отредактировать основной конфигурационный файл ftp-сервиса - /etc/proftpd/proftpd.conf. Добавить строки&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;LDAPServer      localhost&lt;br /&gt;LDAPDNInfo      "cn=searcher,o=My Company,c=LT" password&lt;br /&gt;LDAPDoAuth      on "ou=Sites,o=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;My Company&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;,c=LT" "(&amp;(uid=%v) (objectclass=posixAccount))"&lt;br /&gt;LDAPDefaultGID 106&lt;br /&gt;LDAPDefaultUID 65534&lt;br /&gt;LDAPForceDefaultGID off&lt;br /&gt;LDAPForceDefaultUID off&lt;br /&gt;LDAPDoQuotaLookups on "ou=Users,o=&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;My Company&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;,c=LT" "(&amp;amp;(uid=%v)(objectclass=posixAccount))"&lt;br /&gt;QuotaLimitTable ldap:&lt;br /&gt;QuotaLock /tmp/quota&lt;br /&gt;QuotaEngine on&lt;br /&gt;QuotaDirectoryTally on&lt;br /&gt;QuotaDisplayUnits Mb&lt;br /&gt;QuotaLog "/var/log/proftpd/quota.log"&lt;br /&gt;QuotaShowQuotas on&lt;br /&gt;QuotaTallyTable file:/var/log/ftpquota.tally&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;LDAPDNInfo - необходим, если у вас закрыт доступ для анонимного пользователя&lt;br /&gt;LDAPDoAuth - аутентификация, база для поиска пользователя (по uid)&lt;br /&gt;LDAPDoQuotaLookups - включить поиск квот, база для поиска&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Перед перезапуском ftp-сервиса, чтобы изменения вступили в силу, необходимо создать файл /var/log/ftpquota.tally, который будет меняться, храня информацию об использовании лимитов ftp-пользователями.&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# ftpquota --create-table --type=tally --units=Mb --table-path=/var/log/ftpquota.tally&lt;br /&gt;# /etc/init.d/proftpd restart&lt;br /&gt;Stopping ftp server: proftpd.&lt;br /&gt;Starting ftp server: proftpd.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;После перезапуска можно проверить&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;# ftp localhost&lt;br /&gt;Connected to localhost.&lt;br /&gt;220 ProFTPD 1.3.0 Server (Debian) [127.0.0.1]&lt;br /&gt;Name (localhost:root): ftpuser&lt;br /&gt;331 Password required for ftpuser.&lt;br /&gt;Password:&lt;br /&gt;230 User ftpuser logged in.&lt;br /&gt;Remote system type is UNIX.&lt;br /&gt;Using binary mode to transfer files.&lt;br /&gt;ftp&gt; quote SITE QUOTA&lt;br /&gt;200-The current quota for this session are [current/limit]:&lt;br /&gt;200-Name: ftpuser&lt;br /&gt;200-Quota Type: User&lt;br /&gt;200-Per Session: False&lt;br /&gt;200-Limit Type: Soft&lt;br /&gt;200-  Uploaded Mb:              4.08/10.00&lt;br /&gt;200-  Downloaded Mb:    unlimited&lt;br /&gt;200-  Transferred Mb:   unlimited&lt;br /&gt;200-  Uploaded files:   unlimited&lt;br /&gt;200-  Downloaded files: unlimited&lt;br /&gt;200-  Transferred files:        unlimited&lt;br /&gt;200 Please contact root@server if these entries are inaccurate&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a class="maintitle" href="http://www.bsdguru.org/dyskusja/viewtopic.php?t=3211"&gt;ProFTPd + OpenLDAP + quota&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.castaglia.org/proftpd/modules/mod_quotatab_ldap.html"&gt;ProFTPD module mod_quotatab_ldap&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.proftpd.org/docs/directives/linked/by-name.html"&gt;ProFTPd - List of Directives&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-4608125278994374763?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/4608125278994374763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=4608125278994374763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4608125278994374763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4608125278994374763'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/05/proftpd-ldap.html' title='ProFTPd + LDAP - пользователи и их квоты'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-8293866990999340402</id><published>2007-04-26T15:34:00.000+02:00</published><updated>2007-05-02T15:34:38.088+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='boot'/><title type='text'>Перенос системы с одного диска на другой</title><content type='html'>1. Скопировать разметку диска с первого (рабочего) на второй (новый), если диски идентичные:&lt;br /&gt;&lt;pre&gt;sfdisk -d /dev/hda | sfdisk /dev/hdb&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;если разные - вручную с помощью утилиты cfdisk разбить второй диск в соответствии с разметкой рабочего&lt;/p&gt;&lt;pre&gt;cfdisk /dev/hdb&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;2. Отформатировать созданные разделы в желаемом формате&lt;/p&gt;&lt;pre&gt;mkfs.ext3 /dev/hdb1&lt;br /&gt;mkswap /dev/hda5&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;3. Перегрузиться в singleuser-режиме, смонтировать требуемые разделы и выполнить клонирование&lt;/p&gt;&lt;pre&gt;mount /dev/hdb1 /mnt&lt;br /&gt;cd /mnt&lt;br /&gt;dump 0af - / | restore xf -&lt;br /&gt;...&lt;br /&gt;set owner/mode for '.'? [yn] y&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;4. Если необходимо, грузиться с нового диска, необходимо переписать mbr (используется grub загрузчик)&lt;/p&gt;&lt;pre&gt;# grub&lt;br /&gt;grub&gt; device (hd0) /dev/hdb&lt;br /&gt;grub&gt; root (hd0,0)&lt;br /&gt;grub&gt; setup (hd0)&lt;br /&gt;grub&gt; quit&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.freebsd.org/doc/ru_RU.KOI8-R/books/faq/book.html#NEW-HUGE-DISK" target="_self"&gt;Часто задаваемые вопросы по FreeBSD 4.X, 5.X и 6.X&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.ssc.lt/roller-ui/authoring/%D0%9F%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81%20FreeBSD%20%D1%81%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B6%D1%91%D1%81%D1%82%D0%BA%D0%BE%D0%B3%D0%BE%20%D0%B4%D0%B8%D1%81%D0%BA%D0%B0%20%D0%BD%D0%B0%20%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B9?" target="_self"&gt;http://www.opennet.ru/base/sys/freebsd_dup.txt.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.linuxjournal.com/article/4622" target="_self"&gt;Boot with GRUB&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-8293866990999340402?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/8293866990999340402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=8293866990999340402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8293866990999340402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8293866990999340402'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/04/blog-post.html' title='Перенос системы с одного диска на другой'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-7315619248957928420</id><published>2007-04-20T15:32:00.000+02:00</published><updated>2007-05-02T15:33:54.846+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='antivirus'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Clamav + Squid</title><content type='html'>Данное описание применимо к Debian 4.0 (Etch). Все сервисы, кроме squidclamav, установлены из доступных в репозитарии, пакетов. Перед началом необходимо убедиться в наличии и рабочем состоянии следующих сервисов (пакетов):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Squid (2.6.5)&lt;/li&gt;&lt;li&gt;Apache (1.3.34)&lt;/li&gt;&lt;li&gt;ClamAv (0.90.1)&lt;/li&gt;&lt;li&gt;libcurl3-dev (7.15.5)&lt;/li&gt;&lt;li&gt;libcurl3 (7.15.5)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Apache и ClamAv не требуют дополнительной настройки после установки через apt-get. Описание &lt;a target="_self" href="http://blogs.ssc.lt/rs/entry/22"&gt;"Установка Debian-маршрутизатора с возможностями прозрачного proxy-сервера"&lt;/a&gt; содержит подборную установку и настройку Squid.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Связующим звеном между Squid и ClamAv является редиректор &lt;span style="font-weight: bold;"&gt;squidclamav &lt;/span&gt;(написан на С, на момент написания этих строк последней версией была версия 3.0). Существует еще один редиректор squidclamav, но он написан на python и мною не тестировался.&lt;/p&gt;&lt;p&gt;Перед тем, как остановить свой выбор на squidclamav, я рассмотрел еще 3 реализации антивирусной проверки на базе Squid + Clamav:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;i-cap - так как хотелось использовать Squid из Debian репозитария, пришлось отбросить данный вариант, так как в дебиановской сборке отсутствует поддержка i-cap, и мне не удалось найти i-cap патча для ручной пересборки.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;squidclam - очень сырой, так и не удалось добиться работоспособности&lt;/li&gt;&lt;li&gt;viralator - требует наличия squidGuard, но заставить работать мне его так и не удалось. Запрашиваемые файлы передаются на обработку этому скрипту, но он только показывает popup, а сам ничего не выполняет. Да и popup - для каждого скачиваемого файла - очень неудобно.&lt;/li&gt;&lt;/ul&gt;Лог действий:&lt;br /&gt;&lt;br /&gt;1. Собрать из исходников данный редиректор&lt;br /&gt;&lt;pre&gt;tar zxf squidclamav-x.x.tar.gz&lt;br /&gt;cd squidclamav&lt;br /&gt;./configure --prefix=/usr/local/squidclamav&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;2. Отредактировать конфигурационный файл, взяв за основу идущий в дистрибутиве&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;cp squidclamav.conf.dist /etc/squidclamav.conf&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Пример рабочего конфигурационного файла (проверяет все файлы c mime-type application и с расширениями .dll):&lt;br /&gt;&lt;/p&gt; &lt;pre&gt;logfile /var/log/squid/squidclamav.log&lt;br /&gt;redirect http://192.168.1.254/cgi-bin/clwarn.cgi&lt;br /&gt;debug 0&lt;br /&gt;force 1&lt;br /&gt;stat 1&lt;br /&gt;clamd_local /var/run/clamav/clamd.ctl&lt;br /&gt;timeout 60&lt;br /&gt;abort ^.*\.php$&lt;br /&gt;abort ^.*\.gz$&lt;br /&gt;abort ^.*\.bz2$&lt;br /&gt;abort ^.*\.pdf$&lt;br /&gt;abort ^.*\.js$&lt;br /&gt;abort ^.*\.html$&lt;br /&gt;abort ^.*\.css$&lt;br /&gt;abort ^.*\.xml$&lt;br /&gt;abort ^.*\.xsl$&lt;br /&gt;abort ^.*\.js$&lt;br /&gt;abort ^.*\.ico$&lt;br /&gt;aborti ^.*\.gif$&lt;br /&gt;aborti ^.*\.png$&lt;br /&gt;aborti ^.*\.jpg$&lt;br /&gt;aborti ^.*\.swf$&lt;br /&gt;content ^.*application\/.*$&lt;br /&gt;regexi  ^.*\.dll$&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;3. Добавить описание редиректора в основной конфигурационный файл Squid'a - /etc/squid/squid.conf&lt;/p&gt;&lt;pre&gt;redirect_program /usr/local/squidclamav/bin/squidclamav&lt;br /&gt;redirect_children 15&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;4. Разместить в cgi-bin директории файл clwarn.cgi, на который будет пересылаться запрос в случае обнаружения вируса&lt;/p&gt;&lt;pre&gt;cp clwarn.cgi /usr/lib/cgi-bin/clwarn.cgi&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;5. Перезапустить Squid, проверить в логах Squid'а запустились ли процессы squidclamav-редиректора. Если всё ок, попробовать скачать файл,  содержащий вирус. Тестовые вирусы можно найти &lt;a target="_self" href="http://www.eicar.org/anti_virus_test_file.htm"&gt;здесь&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.samse.fr/GPL/squidclamav/"&gt;Squidclamav&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.eicar.org/anti_virus_test_file.htm"&gt;eicar THE ANTI-VIRUS OR ANTI-MALWARE TEST FILE&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-7315619248957928420?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/7315619248957928420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=7315619248957928420' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7315619248957928420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7315619248957928420'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/04/clamav-squid.html' title='Clamav + Squid'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2257056366627869844</id><published>2007-04-18T16:18:00.000+02:00</published><updated>2007-05-02T16:19:18.953+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Установка Debian-маршрутизатора с возможностями прозрачного proxy-сервера</title><content type='html'>&lt;p&gt; 1. Установить Debian 4.0 (Etch). Описание тестировалось на netinstall-дистрибутиве, eth0 - локальная сеть 192.168.1.0/24, eth1 - внешний интерфейс. Данная версия Debian содержит Squid 2.6.5, а для этой версии несколько изменились настройки для прозрачного proxy.&lt;/p&gt;&lt;p&gt;2. Создать скрипт /etc/network/if-up.d/00-firewall следущего содержания:&lt;/p&gt;&lt;span style="font-family: Times New Roman,Times,serif;"&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family: Times New Roman,Times,serif;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;PATH=/usr/sbin:/sbin:/bin:/usr/bin&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# удалить все действующие правила&lt;br /&gt;#&lt;br /&gt;iptables -F&lt;br /&gt;iptables -t nat -F&lt;br /&gt;iptables -t mangle -F&lt;br /&gt;iptables -X&lt;br /&gt;&lt;br /&gt;# Всегда принимать трафик на loopback-интерфейсе&lt;br /&gt;iptables -A INPUT -i lo -j ACCEPT&lt;br /&gt;&lt;br /&gt;# Разрешить соединения, которые инициированы изнутри (eth0)&lt;br /&gt;iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;iptables -A INPUT -m state --state NEW -i ! eth1 -j ACCEPT&lt;br /&gt;iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;&lt;br /&gt;# Разрешить доступ из LAN-сети к внешним сетям&lt;br /&gt;iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# Masquerade.&lt;br /&gt;iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE&lt;br /&gt;&lt;br /&gt;# Запретить forward извне во внутреннюю сеть&lt;br /&gt;iptables -A FORWARD -i eth1 -o eth1 -j REJECT&lt;br /&gt;&lt;br /&gt;# Включить forward&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;3. Установить proxy-сервис squid, перед этим удостоверившись, что в файле /etc/hosts указан fqdn-имя для данного сервера, иначе squid будет ругаться.&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;apt-get install squid&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;4. Поправить конфигурационный файл squid'а - /etc/squid/squid.conf&lt;/p&gt;&lt;pre&gt;http_port 127.0.0.1:3128&lt;br /&gt;http_port 192.168.1.254:3128 transparent&lt;br /&gt;cache_mgr admin@example.com&lt;br /&gt;acl office src 192.168.1.0/24&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;5. Добавить в /etc/network/if-up.d/00-firewall строки для того, чтобы была возможность использовать squid прозрачно (transparent) &lt;span style="font-family: Times New Roman,Times,serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128&lt;br /&gt;iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 3128&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;После этого перегрузить для чистоты эксперимента сервер и попробовать обратиться с внутренней сети к какому-нибудь внешнему сайту. Если всё хорошо, то сайт должен открыться как и прежде, а в логах squid (/var/log/squid/access.log) должны появиться соответствующие записи.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.debian-administration.org/articles/23"&gt;Setting up a simple Debian gateway&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.debian-administration.org/articles/71"&gt;Transparent proxies via Squid&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.deckle.co.za/squid-users-guide/Accelerator_Mode"&gt;Accelerator Mode - Squid User's Guide&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2257056366627869844?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2257056366627869844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2257056366627869844' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2257056366627869844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2257056366627869844'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/04/debian-proxy.html' title='Установка Debian-маршрутизатора с возможностями прозрачного proxy-сервера'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2493380585476432746</id><published>2007-04-17T15:18:00.000+02:00</published><updated>2007-05-02T15:19:35.180+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>Настройка разрешения по-умолчанию для терминала SunRay 2</title><content type='html'>По-умолчанию терминал SunRay 2 использует разрешение 1280х1024, что не всегда удобно, так как многие мониторы не поддерживают таких цифр. Решается проблема одной командой, для этого необходимо войти любым пользователем с данного терминала и в консоли набрать&lt;br /&gt;&lt;pre&gt;/opt/SUNWut/bin/utxconfig -r 1024x768&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Теперь на данном терминале будет установлено разрешение по-умолчанию 1024х768. Чтобы изменения вступили в силу, достаточно сделать Log Out.&lt;/p&gt;&lt;p&gt;Остается вопрос - где система сохраняет внесенные изменения?&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2493380585476432746?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2493380585476432746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2493380585476432746' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2493380585476432746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2493380585476432746'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/04/sunray-2.html' title='Настройка разрешения по-умолчанию для терминала SunRay 2'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-4479938180681173610</id><published>2007-04-13T15:24:00.000+02:00</published><updated>2007-05-02T15:25:47.968+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>c:\mysql\share\charsets\?.conf' not found (Errcode: 2)</title><content type='html'>При использовании Windows + MySQL 4.1 (установлен в каталог c:\Program Files\MySQL) + PHP 4.x + Webserver (любой) при обработке php-скриптов наверняка столкнетесь с ошибкой&lt;br /&gt;&lt;pre&gt;File 'c:\mysql\share\charsets\?.conf' not found (Errcode: 2)&lt;br /&gt;Character set '#33' is not a compiled character set and is not specified in the 'c:\mysql\share\charsets\Index' filee&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Появляется она из-за того, что PHP 4 имеет встроенную поддержку MySQL версии только 3.23.49 (а используется 4.1.x). Используемая старая версия не имела Index-файлов для кодировки UTF-8.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Решение:&lt;/p&gt;&lt;p&gt;В my.cnf вместо  default-character-set=utf-8 указать  default-character-set=latin1&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-4479938180681173610?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/4479938180681173610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=4479938180681173610' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4479938180681173610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4479938180681173610'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/04/cmysqlsharecharsetsconf-not-found.html' title='c:\mysql\share\charsets\?.conf&apos; not found (Errcode: 2)'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2543926199958047142</id><published>2007-04-12T15:13:00.000+02:00</published><updated>2007-05-02T15:14:01.137+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dns'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Экспорт/импорт DNS-службы в Windows 2000/2003</title><content type='html'>Dumpdns - отличный скрипт [&lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/dnsdump.cmd"&gt;16Kb&lt;/a&gt;], помогающий выполнить экспорт/импорт существующего DNS-сервиса (всей конфигурации, всех существующих зон, даже тех, что Active Directory-Integrated), функционирующего в Windows 2000/2003. Отлично помогает при переносе сервера на другое железо.&lt;br /&gt;&lt;pre&gt;&lt;span id="intelliTxt"&gt;&lt;span class="TipText"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="intelliTxt"&gt;SYNTAX - DNSdump [IMPORT|EXPORT] [data directory] [optional install root]&lt;br /&gt;&lt;br /&gt; * [IMPORT] imports a previously dumped DNS service configuration&lt;br /&gt; * [EXPORT] exports the current DNS service configuration&lt;br /&gt; * [data directory] is a local, writable directory path&lt;br /&gt; * [install root] is the local absolute path used by the DNS service&lt;br /&gt;&lt;br /&gt; * DNSdump requires -&lt;br /&gt;   - administrative permission&lt;br /&gt;   - local execution on the DNS server&lt;br /&gt;   - Windows 2000 or an uplevel operating system&lt;br /&gt;&lt;br /&gt; * DNSdump provides import and export of -&lt;br /&gt;   - DNS service configuration&lt;br /&gt;   - Active Directory integrated zones&lt;br /&gt;   - standard zone files&lt;br /&gt;&lt;br /&gt; * IMPORTANT NOTES -&lt;br /&gt;   - existing Active Directory zone content will NOT be overwritten during IMPORT&lt;br /&gt;   - DNS service and zone configuration WILL be overwritten during IMPORT&lt;br /&gt;   - zone files WILL be overwritten during IMPORT&lt;br /&gt;   - registry keys are purged prior to IMPORT&lt;br /&gt;&lt;br /&gt;DNSdump - Ready to proceed, configuration as follows -&lt;br /&gt;&lt;br /&gt;  * Security context is "JSIINC\Jerry"&lt;br /&gt;  * Active Directory distinguished name is "DC=JSIINC,DC=COM"&lt;br /&gt;  * Mode of operation is "EXPORT"&lt;br /&gt;  * DNS installation root is "C:\WINDOWS\System32\DNS"&lt;br /&gt;  * Data directory is "d:\dnsdump"&lt;br /&gt;&lt;br /&gt;STATUS - Processing the following tasks ...&lt;br /&gt;&lt;br /&gt;         - exporting registry keys&lt;br /&gt;         - backing up DNS files from "C:\WINDOWS\System32\DNS"&lt;br /&gt;         - exporting Active Directory integrated Zones&lt;br /&gt;         - preparing exported data for future import&lt;/span&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;a target="_self" href="http://www.reskit.net/scripts/"&gt;Homepage&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2543926199958047142?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2543926199958047142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2543926199958047142' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2543926199958047142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2543926199958047142'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/04/dns-windows-20002003.html' title='Экспорт/импорт DNS-службы в Windows 2000/2003'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-8515523275893394852</id><published>2007-04-04T15:08:00.000+02:00</published><updated>2007-05-02T15:09:10.419+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>log4j.properties</title><content type='html'>Пример использования mysql-аппендера для сбора логов в базу&lt;br /&gt;&lt;pre&gt;log4j.logger.edu.internet2.middleware.shibboleth=INFO,idp&lt;br /&gt;log4j.appender.idp=org.apache.log4j.jdbc.JDBCAppender&lt;br /&gt;log4j.appender.idp.driver=com.mysql.jdbc.Driver&lt;br /&gt;log4j.appender.idp.URL=jdbc:mysql://192.168.1.1:3306/log_db?autoReconnect=true&lt;br /&gt;log4j.appender.idp.user=log_user&lt;br /&gt;log4j.appender.idp.password=log_pass&lt;br /&gt;log4j.appender.idp.sql=INSERT INTO logging_event (time, level, class, message) VALUES ('%d', '%p', '%c', '%m')&lt;br /&gt;log4j.appender.idp.layout=org.apache.log4j.PatternLayout&lt;/pre&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://lib.juga.ru/article/articleview/183/1/69"&gt;Гибкое журналирование с помощью log4j&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://logging.apache.org/log4j/docs/manual.html"&gt;Short introduction to log4j&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-8515523275893394852?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/8515523275893394852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=8515523275893394852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8515523275893394852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8515523275893394852'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/04/log4jproperties.html' title='log4j.properties'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-1203489390445712526</id><published>2007-03-26T15:38:00.000+02:00</published><updated>2007-05-02T15:39:00.196+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><title type='text'>Создание локального зеркала debian-репозитария пакетов</title><content type='html'>1. Установить утилиту apt-mirror. В процессе установки будет создан новый пользователь apt-mirror с домашней директорией /var/spool/apt-mirror&lt;br /&gt;&lt;pre&gt;apt-get install apt-mirror&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;2. Сконфигурировать apt-mirror, конфигурационный файл &lt;span class="system"&gt;/etc/apt/mirror.list. Пример конфигурационного файла:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span class="system"&gt;##&lt;br /&gt;## The default configuration options (uncomment and change to override)&lt;br /&gt;##&lt;br /&gt;#&lt;br /&gt;# set base_path    /var/spool/apt-mirror&lt;br /&gt;# set mirror_path  $base_path/mirror&lt;br /&gt;# set skel_path    $base_path/skel&lt;br /&gt;# set var_path     $base_path/var&lt;br /&gt;#&lt;br /&gt;# set defaultarch  &lt;running&gt;&lt;br /&gt;# set nthreads     20&lt;br /&gt;#&lt;br /&gt;set _tilde 0&lt;br /&gt;&lt;br /&gt;###&lt;br /&gt;### sarge's section&lt;br /&gt;###&lt;br /&gt;deb http://ftp.at.debian.org/debian sarge main contrib non-free&lt;br /&gt;deb-src http://ftp.at.debian.org/debian sarge main contrib non-free&lt;br /&gt;&lt;br /&gt;deb http://security.debian.org/debian-security sarge/updates main contrib non-free&lt;br /&gt;deb-src http://security.debian.org/debian-security sarge/updates main contrib non-free&lt;br /&gt;&lt;br /&gt;deb http://ftp.at.debian.org/debian sarge main/debian-installer&lt;br /&gt;&lt;br /&gt;# sarge-proposed-updates's section&lt;br /&gt;deb http://ftp.at.debian.org/debian sarge-proposed-updates main contrib non-free&lt;br /&gt;deb-src http://ftp.at.debian.org/debian sarge-proposed-updates main contrib non-free&lt;br /&gt;&lt;br /&gt;###&lt;br /&gt;### etch&lt;br /&gt;###&lt;br /&gt;deb http://ftp.at.debian.org/debian/ etch main contrib non-free&lt;br /&gt;deb-src http://ftp.at.debian.org/debian/ etch main contrib non-free&lt;br /&gt;&lt;br /&gt;deb http://security.debian.org/debian-security etch/updates main contrib non-free&lt;br /&gt;deb-src http://security.debian.org/debian-security etch/updates main contrib non-free&lt;br /&gt;&lt;br /&gt;deb http://ftp.at.debian.org/debian/ etch main/debian-installer&lt;br /&gt;&lt;br /&gt;# etch-proposed-updates's section&lt;br /&gt;deb http://ftp.at.debian.org/debian sarge-proposed-updates main contrib non-free&lt;br /&gt;deb-src http://ftp.at.debian.org/debian sarge-proposed-updates main contrib non-free&lt;br /&gt;&lt;br /&gt;# sid's section&lt;br /&gt;#deb http://ftp.fi.debian.org/debian sid main contrib non-free&lt;br /&gt;#deb-src http://ftp.fi.debian.org/debian sid main contrib non-free&lt;br /&gt;#deb http://ftp.fi.debian.org/debian sid main/debian-installer&lt;br /&gt;&lt;br /&gt;##&lt;br /&gt;## Cleaner configuration example&lt;br /&gt;##&lt;br /&gt;#&lt;br /&gt;# set cleanscript $var_path/clean.sh&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# Cleaning section&lt;br /&gt;clean http://security.debian.org/&lt;br /&gt;clean http://ftp.at.debian.org/&lt;br /&gt;&lt;br /&gt;skip-clean http://ftp.fi.debian.org/doc/&lt;/span&gt;&lt;span class="system"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;3. Создать локальное зеркало. Операция может занять много времени, всё зависит от того сколько дистрибутивов вы собираетесь "зеркалировать". Например, у меня выбрано sarge и etch - они занимают около 45 Гб. После того как всё будет скачано, операция автоматического обновления зеркала будет проходить в соответствии с файлом /etc/cron.d/apt-mirror. Ежедневные обновления содержат около 100 Мб.&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;su - apt-mirror -c apt-mirror&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;4. Автоматизировать очистку локального зеркала - необходимо регулярно запускать на выполнение /var/spool/apt-mirror/var/clean.sh, можно через cron.&lt;/p&gt;&lt;p&gt;5. Сделать локальный репозитарий доступным для локальных серверов, с помощью уже установленного и настроенного Apache - необходимо только создать символьные ссылки для доступа к репозитарию.&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;ln -s /var/spool/apt-mirror/mirror/security.debian.org/debian /var/www/debian&lt;br /&gt;ln -s /var/spool/apt-mirror/mirror/security.debian.org/debian-security /var/www/debian-security&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;6. После этого локальное зеркало доступно по адресу http://mirrorserver/debian, http://mirrorserver/debian-security. А файл /etc/apt/sources.list для локальных серверов будет выглядеть примерно так:&lt;/p&gt;&lt;pre&gt;deb http://mirrorserver/debian/ etch main&lt;br /&gt;deb-src http://mirrorserver/debian/ etch main&lt;br /&gt;deb http://mirrorserver/debian-security/ etch/updates main&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.howtoforge.com/local_debian_ubuntu_mirror"&gt;How To Create A Local Debian/Ubuntu Mirror With apt-mirror&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-1203489390445712526?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/1203489390445712526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=1203489390445712526' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1203489390445712526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1203489390445712526'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/03/debian.html' title='Создание локального зеркала debian-репозитария пакетов'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-7872201308293023756</id><published>2007-03-16T15:35:00.000+02:00</published><updated>2007-05-02T15:35:59.749+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Как изменить приветствие SSH-сервиса</title><content type='html'>Если сервис был самостоятельно собран из исходников, то достаточно отредактировать файл version.h и пересобрать сервис по-новому.&lt;br /&gt;&lt;br /&gt;Всё немного сложнее, если используется уже кем-то собранный пакет. Например, Debian-система при попытке подсоединения к ней говорит:&lt;br /&gt;&lt;pre&gt;# &lt;span style="font-weight: bold;"&gt;telnet localhost 22&lt;/span&gt;&lt;br /&gt;Trying 127.0.0.1...&lt;br /&gt;Connected to localhost.localdomain.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SSH-2.0-OpenSSH_3.8.1p1 Debian-8.sarge.6&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Злоумышленнику сразу выдаётся масса информации о системе.&lt;/p&gt;&lt;p&gt;Debian позволяет пересобрать пакет по своим потребностям и нуждам.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. Необходимо убедиться, что файл /etc/apt/sources.list содержит хотя бы один deb-src-источник. Если не содержит - добавить. Также установить, если не установлены утилиты для сборки debian-пакетов&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;# cat &gt;&gt; /etc/apt/sourсes.list&lt;br /&gt;deb-src http://ftp.at.debian.org/debian/ stable main&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ctrl + C&lt;br /&gt;&lt;/span&gt;# apt-get update&lt;br /&gt;# apt-get install dpkg-dev debhelper devscripts&lt;br /&gt;...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;2. Скачать и распаковать в текущую директорию debian-исходники пакета ssh&lt;/p&gt;&lt;pre&gt;apt-get source ssh&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;3. Скачать и установить все необходимые для сборки пакеты (будет установлено достаточно большое количество пакетов - около 100)&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;apt-get build-dep ssh&lt;/pre&gt;&lt;p&gt;4. В директории ./openssh-x.x.x/debian будет файл rules, в нем строка&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;SSH_VERSION := $(shell sed -e '/define/!d; s/.*\"\(.*\)\".*/\1/; q' &lt;&lt;span style="font-weight: bold;"&gt;version.h&lt;/span&gt;) ... и т.д.&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Можно отредактировать её по желанию, только не забыть, что она в свою очередь тоже зависит от содержимого файла version.h&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5. Чтобы дальнейшие update'ы пакетов не затерли внесенные изменения, необходимо добавить в ./openssh-x.x.x/debian/changelog описание самостоятельно собранной версии. Номер версии должен отличаться, например вместо 1:3.8.1p1-8.sarge.6 укажите 1:3.8.1p1-8.sarge.6without_banner. Если что-то будет не так в данном файле сборка пакета не начнется.&lt;/p&gt;&lt;p&gt;6. Собрать самостоятельно сконфигурированный пакет&lt;/p&gt;&lt;pre&gt;cd ./openssh-x.x.x&lt;br /&gt;debuild -us -uc&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;7. Если процесс сборки прошёл успешно, установить собранный пакет&lt;/p&gt;&lt;pre&gt;# cd ..&lt;br /&gt;# dpkg -i ssh_x.x.x_i386.deb&lt;br /&gt;(Reading database ... 33306 files and directories currently installed.)&lt;br /&gt;Preparing to replace ssh x.x.x (using ssh_x.x.xwithout_banner_i386.deb) ...&lt;br /&gt;Unpacking replacement ssh ...&lt;br /&gt;Setting up ssh (x.x.xwithout_banner) ...&lt;br /&gt;Restarting OpenBSD Secure Shell server: sshd.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.howtoforge.com/repackage_deb_packages_debian_ubuntu" target="_self"&gt;How to make a small change to a Debian tool and repackage it?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.debian-administration.org/articles/20" target="_self"&gt;Rebuilding Debian packages&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://projects.vanscherpenseel.nl/documents/howto_banners.html" target="_self"&gt;HOWTO: Service banner faking&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-7872201308293023756?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/7872201308293023756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=7872201308293023756' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7872201308293023756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7872201308293023756'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/03/ssh.html' title='Как изменить приветствие SSH-сервиса'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-4425360019334934807</id><published>2007-03-14T15:34:00.000+02:00</published><updated>2007-05-02T15:35:18.368+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Fail2Ban</title><content type='html'>Fail2Ban - простой локальный сервис, который просматривает логи на предмет попытки подоброать пароли к ssh, ftp, http-сервисам. Если такие попытки найдены, fail2ban блокирует ip-адрес источника. Сервис очень гибко настраивается - возможна блокировка через iptables или /etc/hosts.allow (deny), способен оповещать по email, писать лог, сбрасывать блокировку через заданное время и прочее.&lt;br /&gt;В Debian 4.0 Fail2ban доступен в репозитарии пакетов, но и из исходников он просто разворачивается, только требует наличия python 2.4.&lt;br /&gt;&lt;pre&gt;tar xvfj fail2ban-0.6.2.tar.bz2&lt;br /&gt;cd fail2ban-0.6.2&lt;br /&gt;python setup.py install&lt;br /&gt;...&lt;br /&gt;cd config&lt;br /&gt;cp debian-initd /etc/init.d/fail2ban&lt;br /&gt;cd /etc/init.d&lt;br /&gt;chmod +x fail2ban&lt;br /&gt;update-rc.d fail2ban defaults&lt;br /&gt;cp fail2ban.conf.iptables /etc/fail2ban.conf&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Остаётся только подправить файл конфигурации /etc/fail2ban.conf под свои нужды.&lt;br /&gt;&lt;/p&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.fail2ban.org/wiki/index.php/Main_Page"&gt;Fail2Ban Homepage&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-4425360019334934807?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/4425360019334934807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=4425360019334934807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4425360019334934807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/4425360019334934807'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/03/fail2ban.html' title='Fail2Ban'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3015688243527591352</id><published>2007-03-13T16:20:00.000+02:00</published><updated>2007-05-02T16:20:49.004+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>csv -&gt; ldif</title><content type='html'>Что имеется - список адресатов с различными данными (номера телефонов, адреса, email и т.п.) в формате csv. Если есть xls (spreadsheet), его можно сохранить в csv.&lt;br /&gt;&lt;p&gt;Задача - создать адресную LDAP-книгу.&lt;/p&gt;&lt;p&gt;Чтобы занести уже имеющиеся данные в LDAP-диреторию, их необходимо представить в LDIF-формате. Ниже представлен простейший perl-скрипт, позволяющий выполнить данную операцию.&lt;/p&gt;&lt;pre&gt;#!/usr/bin/perl&lt;br /&gt;#&lt;br /&gt;# This is an example of using the Text::ParseWords module to convert&lt;br /&gt;# a comma-delimited file to LDIF. Requires Perl 5.005 or higher. Just&lt;br /&gt;# pipe the CSV file to this script and redirect the output to a file:&lt;br /&gt;#&lt;br /&gt;#     cat FILENAME.csv | csv2ldif.pl &gt; FILENAME.ldif&lt;br /&gt;#&lt;br /&gt;# Anthony Greene &lt;agreene@pobox.com&gt;&lt;br /&gt;#&lt;br /&gt;# Load the required module.&lt;br /&gt;use Text::ParseWords;&lt;br /&gt;&lt;br /&gt;# Set a default objectclass and suffix.&lt;br /&gt;$objectclass = 'inetOrgperson';&lt;br /&gt;$dnsuffix = 'ou=addressbook,o=SSC,c=LT';&lt;br /&gt;&lt;br /&gt;# Read lines from STDIN.&lt;br /&gt;while ($line = &lt;stdin&gt;) {&lt;br /&gt; @fields = &amp;quotewords(',',0,$line);&lt;br /&gt;&lt;br /&gt; # Output the values.&lt;br /&gt; print "dn: cn=$fields[0], $dnsuffix\n";&lt;br /&gt; print "cn: $fields[0]\n";&lt;br /&gt; print "givenname: $fields[1]\n";&lt;br /&gt; print "sn: $fields[2]\n";&lt;br /&gt; print "objectclass: $objectclass\n";&lt;br /&gt; print "objectclass: top\n";&lt;br /&gt; print "mail: $fields[3]\n";&lt;br /&gt; if ($fields[4]) { print "telephonenumber: $fields[4]\n"; }&lt;br /&gt; if ($fields[5]) { print "facsimiletelephonenumber: $fields[5]\n";}&lt;br /&gt; if ($fields[6]) { print "mobile: $fields[6]\n";}&lt;br /&gt; if ($fields[7]) { print "street: $fields[7]\n";}&lt;br /&gt; if ($fields[8]) { print "l: $fields[8]\n";}&lt;br /&gt; if ($fields[9]) { print "postalcode: $fields[9]\n";}&lt;br /&gt; if ($fields[10]) { print "o: $fields[10]\n";}&lt;br /&gt; print "\n";&lt;br /&gt;}&lt;br /&gt;exit;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3015688243527591352?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3015688243527591352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3015688243527591352' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3015688243527591352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3015688243527591352'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/03/csv-ldif.html' title='csv -&gt; ldif'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-996150834034588125</id><published>2007-03-07T16:19:00.000+02:00</published><updated>2007-05-02T16:20:02.492+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Сборка ядра Linux</title><content type='html'>&lt;p&gt;       Статья &lt;a target="_self" href="http://mydebianblog.blogspot.com/2006/12/blog-post_20.html"&gt;"Некоторые замечания о сборке ядер Линукс"&lt;/a&gt; заставила в очередной раз обратить внимание на Linux ядро, его сборку, конфигурирование и для меня, наконец, этот процесс стал более прозрачным и понятным.&lt;/p&gt;&lt;p&gt;Если используется Debian-ориентированная система, то для установки всего необходимого можно воспользоваться менеджером пакетов, он установит все необходимые промежуточные зависимости:&lt;/p&gt;&lt;pre&gt;# apt-get install linux-source-2.x.x libncurses5-dev kernel-package&lt;br /&gt;# cd /usr/src&lt;br /&gt;# tar xfj kernel-source-2.x.x.tar.bz2&lt;br /&gt;# cd kernel-source-2.x.x&lt;br /&gt;# make menuconfig&lt;br /&gt;...&lt;br /&gt;(конфигурирование параметров ядра)&lt;br /&gt;...&lt;br /&gt;# make-kpkg --append-to-version=.cramfsasmodule --revision=1.0&lt;span class="COMMAND"&gt; kernel_image&lt;br /&gt;&lt;/span&gt;dpkg -i kernel-image-(2.x.x)(--append-to-version)_(--revision)_(architecture).deb&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;append-to-version&lt;/span&gt; - опция для указания версии ядра (можно использовать символы '+' и '.', нельзя использовать '_')&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;revision &lt;/span&gt;- опция для указания версии пакета в Debian-репозитарии (можно использовать символы '+' и '.', нельзя использовать '_'). По умолчанию используется "10.00.Custom"&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;kernel_image&lt;/span&gt; - сделать debian-пакет ядра&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Либо всё делать вручную: скачать ядро с сайта www.kernel.org в /usr/src&lt;/p&gt;&lt;pre&gt;# cd /usr/src&lt;br /&gt;# tar xfj kernel-source-2.x.x.tar.bz2&lt;br /&gt;# cd kernel-source-2.x.x&lt;br /&gt;# make clean&lt;br /&gt;# make menuconfig&lt;br /&gt;...&lt;br /&gt;(конфигурирование параметров ядра)&lt;br /&gt;...&lt;br /&gt;# make bzImage modules  # Сборка ядра и модулей&lt;br /&gt;# make modules_install install # установка модулей и ядра&lt;br /&gt;# update-grub   # Обновление меню загрузчика GRUB&lt;/pre&gt;&lt;p&gt;Чтобы установить версию ядра в ручном методе, в файл /usr/src/Makefile необходимо внести поправку:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;EXTRAVERSION = 20070304withusb&lt;/pre&gt;&lt;p&gt;Статья &lt;a target="_self" href="http://www.linuxcenter.ru/lib/articles/system/kernel26_install.phtml"&gt;"Ставим ядро 2.6, или Ядерная физика для домохозяйки"&lt;/a&gt; очень может помочь в процессе выбора необходимых опций на этапе конфигурации. &lt;/p&gt;&lt;p&gt;Чтобы не использовать initrd должны быть монолитно собраны драйвера корневой файловой системы (например ext3) и следущие опции:&lt;/p&gt;&lt;p&gt;Device Drivers -&gt; Block devices&lt;/p&gt;&lt;pre&gt;[*] RAM disk support&lt;br /&gt;[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Также должен присутствовать в виде модуля (или монолитно)&lt;/p&gt;&lt;p&gt;File systems -&gt; Miscellaneous filesystems&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;[*/M] Compressed ROM file system support (cramfs)&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://mydebianblog.blogspot.com/2006/12/blog-post_20.html"&gt;Некоторые замечания о сборке ядер Линукс.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.linuxcenter.ru/lib/articles/system/kernel26_install.phtml"&gt;Ставим ядро 2.6, или Ядерная физика для домохозяйки.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.howtoforge.com/roll_a_kernel_debian_ubuntu_way"&gt;How To Roll A Kernel the Ubuntu/Debian Way&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://newbiedoc.sourceforge.net/system/kernel-pkg.html.en"&gt;Creating custom kernels with Debian's kernel-package system&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-996150834034588125?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/996150834034588125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=996150834034588125' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/996150834034588125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/996150834034588125'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/03/linux.html' title='Сборка ядра Linux'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3476367379127612216</id><published>2007-02-22T15:19:00.000+02:00</published><updated>2007-07-03T10:12:55.903+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='print'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>Печать средствами CUPS в Solaris 10</title><content type='html'>Установить CUPS с blastwave.org&lt;br /&gt;&lt;pre&gt;pkg-get -i cups&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Остановить старые сервисы&lt;/p&gt;&lt;pre&gt;svcadm disable application/print/ipp-listener&lt;br /&gt;svcadm disable application/print/server&lt;br /&gt;svcadm disable application/print/rfc1179&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Заменить утилиты печати версией от CUPS&lt;/p&gt;&lt;pre&gt;mv /usr/bin/lp /usr/bin/lp.solaris&lt;br /&gt;ln -s /opt/csw/bin/lp /usr/bin/lp&lt;br /&gt;mv /usr/bin/lpstat /usr/bin/lpstat.solaris&lt;br /&gt;ln -s /opt/csw/bin/lpstat /usr/bin/lpstat&lt;br /&gt;mv /usr/sbin/lpadmin /usr/sbin/lpadmin.solaris&lt;br /&gt;ln -s /opt/csw/sbin/lpadmin /usr/sbin/ldadmin&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Запустить cups-сервис&lt;/p&gt;&lt;pre&gt;svcadm enable svc:/application/print/cswcups:default&lt;/pre&gt;&lt;p&gt;После успешного запуска cups-службы по адресу http://localhost:631 можно добавить необходимые принтера (потребуется доступ root-пользователя). Сетевой принтер, имеющий свой собственный ip-адрес наверняка будет находиться по адресу socket://ip:9100. PPD-файл для Samsung 2551ML доступен &lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/samsung.ppd"&gt;здесь&lt;/a&gt;.    &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3476367379127612216?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3476367379127612216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3476367379127612216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3476367379127612216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3476367379127612216'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/02/cups-solaris-10.html' title='Печать средствами CUPS в Solaris 10'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-97935828650419142</id><published>2007-02-21T15:14:00.000+02:00</published><updated>2007-05-02T15:15:12.826+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BSD'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><title type='text'>Обновление портов в FreeBSD</title><content type='html'>Прежде чем что-либо делать с портами в FreeBSD их необходимо обновить:&lt;br /&gt;&lt;pre&gt;# cat &gt;&gt; /etc/make.conf&lt;br /&gt;SUP_UPDATE=yes&lt;br /&gt;SUP=/usr/local/bin/cvsup&lt;br /&gt;SUPFLAGS=-g -L 2&lt;br /&gt;SUPHOST=cvsup.uk.FreeBSD.org&lt;br /&gt;SUPFILE=/usr/share/examples/cvsup/standard-supfile&lt;br /&gt;PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile&lt;br /&gt;DOCSUPFILE=/usr/share/examples/cvsup/doc-supfile&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ctrl + C&lt;/span&gt;&lt;br /&gt;# cd /usr/ports&lt;br /&gt;# make update&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Найти в портах (/usr/ports) порт portupgrade (/usr/ports/ports-mgmt/portupgrade), установить его&lt;/p&gt;&lt;pre&gt;cd /usr/ports/ports-mgmt/portupgrade&lt;br /&gt;make &amp;&amp;amp; make install&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;После этого можно с помощью утилиты portupgrade уже возможно обновлять установленные порты (ключ -R говорит о том, что нужно обновить не только порт, но и все его зависимости)&lt;/p&gt;&lt;pre&gt;portupgrade -R имя_порта&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Чтобы узнать список портов, нуждающихся в обновлении, существует команда&lt;/p&gt;&lt;pre&gt;pkg_version -v&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Для наведения порядка (удаление неиспользуемых портов, дубликатов версий) в реестре установленных портов (/var/db/pkg) можно воспользоваться командой&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;pkgdb -F&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;"Системный администратор" (2007.01)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.opennet.ru/base/sys/cleaning_up_ports.txt.html" target="_self"&gt;Очистка портов во FreeBSD&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.lissyara.su/?id=1153" target="_self"&gt;portupgrade - `обновлялка` установленных портов&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;    &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-97935828650419142?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/97935828650419142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=97935828650419142' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/97935828650419142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/97935828650419142'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/02/freebsd.html' title='Обновление портов в FreeBSD'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2737994325593473000</id><published>2007-02-09T15:20:00.000+02:00</published><updated>2007-07-03T12:22:41.295+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>Evince pdf-viewer for Solaris</title><content type='html'>&lt;p&gt; По непонятным причинам GNOME Pdf Viewer при просмотре документов, содержащих национальные символы (проверялось с русскими и литовскими документами), вместо таких символов выводит либо квадратики, либо ничего не выводит. Попробовав добавить в систему ttf-шрифты, я понял, что это не меняет его поведения. Тогда попробовал найти замену и посмотреть, как будет себя вести другой pdf-reader.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;На сайте &lt;a href="http://www.blastwave.org/" target="_self"&gt;Blastwave.org&lt;/a&gt; есть собрана достаточно хорошая база пакетов для Solaris 10, а в качестве замены gpdf - там лежит &lt;a href="http://www.blastwave.org/packages.php/evince" target="_self"&gt;Evince&lt;/a&gt;. На момент написания этих строк версия данной программы - 0.6.1,REV=2006.11.28.&lt;/p&gt;&lt;p&gt;Установка проще некуда, если уже имеется утилита pkg-get (на сайте &lt;a href="http://www.blastwave.org/" target="_self"&gt;Blastwave.org&lt;/a&gt; описан процесс ее установки):&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;/opt/csw/bin/pkg-get -i evince&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;После этого необходимо "научить" GNOME использовать только что установленную апликацию. Чтобы добавить пункт &lt;span style="font-style: italic;"&gt;"Evince PDF Document Viewer"&lt;/span&gt; в стартовое меню:&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;# cd /usr/share/applications&lt;br /&gt;# cat &gt; evince.desktop&lt;br /&gt;[Desktop Entry]&lt;br /&gt;Encoding=UTF-8&lt;br /&gt;Name=Evince PDF Document Viewer&lt;br /&gt;Exec=/opt/csw/bin/evince&lt;br /&gt;Icon=/opt/csw/share/icons/hicolor/48x48/apps/evince.png&lt;br /&gt;Terminal=false&lt;br /&gt;Type=Application&lt;br /&gt;Categories=GNOME;Application;Graphics;VectorGraphics;Viewer;&lt;br /&gt;StartupNotify=true&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ctrl + C&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Чтобы у всех пользователей в меню "&lt;span style="font-style: italic;"&gt;open with&lt;/span&gt;" появился evince, необходимо внести поправки в файл &lt;span style="font-style: italic;"&gt;/usr/share/mime-info/gnome-vfs.keys&lt;/span&gt;. Если хочется вовсе забыть о существовании gpdf (о чем я советую), необходимо в этом файле удалить всякое упоминание о gpdf. Если всё-таки оставить gpdf, то мне не удалось понять каким образом устроена иерархия между указанными апликациями.&lt;/p&gt;&lt;pre&gt;...&lt;br /&gt;short_list_application_ids_for_novice_user_level=acroread,&lt;span style="font-weight: bold;"&gt;evince&lt;/span&gt;,xpdf,gv&lt;br /&gt;short_list_application_ids_for_intermediate_user_level=acroread,&lt;span style="font-weight: bold;"&gt;evince&lt;/span&gt;,xpdf,gv&lt;br /&gt;short_list_application_ids_for_advanced_user_level=acroread,&lt;span style="font-weight: bold;"&gt;evince&lt;/span&gt;,xpdf,gv&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;И создать запить об evince в реестре программ&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;cd /usr/share/application-registry&lt;br /&gt;cp gpdf.applications evince.applications&lt;br /&gt;vi evince.applications&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;evince&lt;/span&gt;&lt;br /&gt;      command=&lt;span style="font-weight: bold;"&gt;/opt/csw/bin/evince&lt;/span&gt;&lt;br /&gt;      name=&lt;span style="font-weight: bold;"&gt;PDF Viewer&lt;/span&gt;&lt;br /&gt;      can_open_multiple_files=true&lt;br /&gt;      startup_notify=true&lt;br /&gt;      expects_uris=false&lt;br /&gt;      requires_terminal=false&lt;br /&gt;      mime_types=application/pdf&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;После этого достаточно перелогиниться и изменения вступят в силу.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Evince прекрасно отображает все национальные симолы и сам по себе более приятен в работе.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.gnome.org/learn/admin-guide/2.6/" target="_self"&gt;GNOME 2.6 System Administration Guide&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2737994325593473000?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2737994325593473000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2737994325593473000' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2737994325593473000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2737994325593473000'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/02/evince-pdf-viewer-for-solaris.html' title='Evince pdf-viewer for Solaris'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2692212265351243657</id><published>2007-02-07T15:52:00.000+02:00</published><updated>2007-05-02T16:29:09.567+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='certificate'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Утилита keytool для управления JAVA-хранилищами сертификатов</title><content type='html'>Keytool - утилита для управления java-хранилищами сертификатов. Данные хранилища (файлы с расширением &lt;span style="font-style: italic;"&gt;jks - "java key storage"&lt;/span&gt;) используются java-апликациями и, как пример, сервером приложений Tomcat. Поэтому, если необходимо настроить использование SSL-соединений в Tomcat, keytool будет использоваться для подготовки необходимого хранилища сертификатов.&lt;br /&gt;&lt;p&gt;Сертификаты в хранилище имеют псевдонимы (alias), благодаря которым ими удобно оперировать. Хранилице может быть защищено паролем, кроме того возможно установить дополнительный пароль на использование любого сертификата из хранилища.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Создание (генерация) пары ключей (приватного и публичного)&lt;/p&gt;&lt;pre&gt;keytool -genkey -alias my_a -keystore server.jks&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Просмотреть содержимое хранилища можно командой&lt;/p&gt;&lt;pre&gt;keytool -list -v -keystore server.jks&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Добавить сертификаты центров сертификации (CA), входящих в цепочку&lt;/p&gt;&lt;pre&gt;keytool -import -trustcacerts -alias ca1 -file ca1.crt -keystore server.jks&lt;br /&gt;keytool -import -trustcacerts -alias ca2 -file ca2.crt -keystore server.jks&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Удалить из хранилища объект (сертификат) с псевдонимом ca2&lt;/p&gt;&lt;pre&gt;keytool -delete -alias ca2 -keystore server.jks&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Сгенерировать csr-запрос на сертификат&lt;/p&gt;&lt;pre&gt;keytool -certreq -alias my_a -keystore server.jks&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Если истек срок действия сертификата, необходимо сгенерировать новый csr-запрос. Отправить его на обработку в CA. Когда будет получен новый сертификат, обновить истекший сертификат новым&lt;/p&gt;&lt;pre&gt;keytool -import -alias my_a -file my_a.crt -keystore server.jks&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html" target="_self"&gt;keytool - Key and Certificate Management Tool&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2692212265351243657?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2692212265351243657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2692212265351243657' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2692212265351243657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2692212265351243657'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/02/keytool-java.html' title='Утилита keytool для управления JAVA-хранилищами сертификатов'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6420987282744547981</id><published>2007-02-05T15:36:00.000+02:00</published><updated>2007-05-02T15:36:41.418+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Full Firewall Control для Smoothwall Express 2.0</title><content type='html'>&lt;p&gt;Full Firewall Control - расширение к Smoothwall Express добавляющее web-интерфейс для управления правилами фильтрации. На данный момент самая последняя версия данного расширения - 1.2.1.&lt;/p&gt;&lt;p&gt;Последняя версия доступна на &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=114890&amp;package_id=132134" target="_self"&gt;SourceForge&lt;/a&gt;, там же лежит &lt;a href="http://sourceforge.net/project/shownotes.php?release_id=305375" target="_self"&gt;README&lt;/a&gt;, отвечающий на разные вопросы в том числе и установки. Отдельно существует &lt;a href="http://community.smoothwall.org/forum/viewtopic.php?t=9593&amp;amp;postdays=0&amp;postorder=asc&amp;amp;start=0" target="_self"&gt;тема&lt;/a&gt; в Smoothwall-форуме.&lt;/p&gt;&lt;p&gt;Если необходимо на внешнем (RED) интерфейсе поднять несколько ip-адресов (алиасов), в файл /etc/rc.d/rc.firewall.up, в конец, добавить описания алиасов по примеру:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;ifconfig eth1:106 212.48.64.6 broadcast 212.48.64.255 netmask 255.255.255.0&lt;br /&gt;ifconfig eth1:105 212.48.64.5 broadcast 212.48.64.255 netmask 255.255.255.0&lt;br /&gt;&lt;br /&gt;iptables -t nat -I POSTROUTING -o $RED_DEV -s 192.168.1.106 -j SNAT --to-source 212.48.64.6&lt;br /&gt;iptables -t nat -I POSTROUTING -o $RED_DEV -s 192.168.1.105 -j SNAT --to-source 212.48.64.5&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Последние две строчки необходимы для построутинга.&lt;/p&gt;&lt;p&gt;После этого с помощью, например, scp загрузить дистрибутив Full Firewall Control на Ваш smoothwall-роутер и выполнить установку&lt;/p&gt;&lt;pre&gt;tar zxvf ./Full-Firewall-Control-1.x.x.tgz -C /&lt;br /&gt;sh /tmp/install.sh&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;После перезагрузки роутера в web-интерфейсе в меня &lt;span style="font-style: italic;"&gt;networking &lt;/span&gt;появится меню &lt;span style="font-style: italic;"&gt;firewall control&lt;/span&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6420987282744547981?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6420987282744547981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6420987282744547981' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6420987282744547981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6420987282744547981'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/02/full-firewall-control-smoothwall.html' title='Full Firewall Control для Smoothwall Express 2.0'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3940553399006780129</id><published>2007-02-02T15:36:00.001+02:00</published><updated>2008-05-09T15:54:00.615+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='bacula'/><title type='text'>Bacula - система резервного копирования и восстановления</title><content type='html'>&lt;p&gt; Перед началом установки сервисов необходимо ознакомиться со структурой и функционированием составных частей системы Bacula. В этом может помочь небольшая статья  [1] и исчерпывающая документация (более 700 стр.), доступная на официальном сайте. Установка сервисов - это всего лишь начало, впереди стоят более важные задачи по грамотной конфигурации сервисов и тестированию процессов резервирования и восстановления.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;В приведенном описании в качестве Director и Storage сервисов используется FreeBSD 5.4, в качестве клиента (File Daemon) опробованы следующие системы: Debian 3.1 (Bacula 1.36.2), 4.0 (Bacula 1.38.11), FreeBSD 5.4 (Bacula 2.0.1), Slackware 10.1 (Bacula 2.0.2). В качестве рабочей консоли использовался Windows XP SP2 (Bacula 2.0.1).&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Установка Director и Storage сервисов&lt;/h3&gt;&lt;p&gt;1. Установка производится из портов&lt;/p&gt;&lt;pre&gt;# cd /usr/ports/sysutils/bacula-server&lt;br /&gt;# make&lt;br /&gt;[X] MYSQL       Use MySQL database instead of SqLite&lt;br /&gt;[X] NLS         Native Language Support via gettext utilities&lt;br /&gt;[X] OPENSSL     Enable OpenSSL for encrypted communication&lt;br /&gt;...&lt;br /&gt;# make install&lt;/pre&gt;&lt;p&gt;2. Для работы Bacula Director необходима база данных для накопления и оперирования всевозможными данными о собранных резервных копиях. Такая база называется Каталог (Catalog). Таких каталогов может быть несколько, в зависимости от потребностей. Перед запуском, необходимо подготовить хотя бы один Каталог:&lt;/p&gt;&lt;pre&gt;mysql -u &lt;span style="font-weight: bold;"&gt;root &lt;/span&gt;-p&lt;span style="font-weight: bold;"&gt;password&lt;br /&gt;&lt;/span&gt;CREATE DATABASE `&lt;span style="font-weight: bold;"&gt;bacula_db&lt;/span&gt;` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;&lt;br /&gt;GRANT USAGE ON *.* TO '&lt;span style="font-weight: bold;"&gt;baculauser&lt;/span&gt;'@'&lt;span style="font-weight: bold;"&gt;localhost&lt;/span&gt;' IDENTIFIED BY '&lt;span style="font-weight: bold;"&gt;baculauser_password&lt;/span&gt;';&lt;br /&gt;GRANT ALL PRIVILEGES ON `&lt;span style="font-weight: bold;"&gt;bacula_db&lt;/span&gt;`.* TO '&lt;span style="font-weight: bold;"&gt;baculauser&lt;/span&gt;'@'&lt;span style="font-weight: bold;"&gt;localhost&lt;/span&gt;';&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;Для заполнения подготовленной базы необходимыми таблицами есть скрипт /usr/local/share/bacula/make_mysql_tables. Единственное, в нем по умолчанию используется база данных с именем bacula. В данном примере используется имя bacula_db, поэтому перед запуском скрипт необходимо внести соответствующую поправку.&lt;/p&gt;&lt;pre&gt;# /usr/local/share/bacula/make_mysql_tables -u &lt;span style="font-weight: bold;"&gt;baculauser&lt;/span&gt; -p&lt;span style="font-weight: bold;"&gt;baculauser_password&lt;br /&gt;&lt;/span&gt;Creation of Bacula MySQL tables succeeded.&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Перед запуском сервисов необходимо создать конфигурационные файлы на основе доступных шаблонов и сконфигурировать их в соответствии с желаемой конфигурацией.&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;# cd /usr/local/etc&lt;br /&gt;# cp bacula-dir.conf.sample bacula-dir.conf&lt;br /&gt;# cp bacula-sd.conf.sample bacula-sd.conf&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Для автоматического запуска Director и Storage сервисов при загрузке сервера в &lt;span style="font-style: italic;"&gt;/etc/rc.conf&lt;/span&gt; добавить строчки&lt;/p&gt;&lt;pre&gt;bacula_dir_enable="YES"&lt;br /&gt;bacula_sd_enable="YES"&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Документацию и клиент-сервис (file daemon) можно установить отдельно&lt;/p&gt;&lt;pre&gt;# cd /usr/ports/sysutils/bacula-docs&lt;br /&gt;# make &amp;amp;&amp;amp; make install&lt;br /&gt;# cd /usr/ports/sysutils/bacula-client&lt;br /&gt;# make &amp;amp;&amp;amp; make install&lt;br /&gt;&lt;/pre&gt;Запуск сервисов&lt;br /&gt;&lt;pre&gt;# /usr/local/etc/rc.d/bacula-dir.sh start&lt;br /&gt;# /usr/local/etc/rc.d/bacula-sd.sh start&lt;br /&gt;&lt;/pre&gt;&lt;h3&gt;Установка клиента (File Daemon)&lt;br /&gt;&lt;/h3&gt;&lt;pre&gt;# &lt;span style="font-weight: bold;"&gt;apt-get install bacula-fd&lt;/span&gt;&lt;br /&gt;Reading package lists... Done&lt;br /&gt;Building dependency tree... Done&lt;br /&gt;The following extra packages will be installed:&lt;br /&gt; bacula-common&lt;br /&gt;Suggested packages:&lt;br /&gt; bacula-doc bacula-traymonitor&lt;br /&gt;The following NEW packages will be installed&lt;br /&gt; bacula-common bacula-fd&lt;br /&gt;0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.&lt;br /&gt;Need to get 528kB of archives.&lt;br /&gt;After unpacking 1167kB of additional disk space will be used.&lt;br /&gt;Do you want to continue [Y/n]? &lt;span style="font-weight: bold;"&gt;y&lt;/span&gt;&lt;br /&gt;Get: 1 http://ftp.at.debian.org etch/main bacula-common 1.38.11-7 [348kB]&lt;br /&gt;Get: 2 http://ftp.at.debian.org etch/main bacula-fd 1.38.11-7 [180kB]&lt;br /&gt;Fetched 528kB in 2s (264kB/s)&lt;br /&gt;Selecting previously deselected package bacula-common.&lt;br /&gt;(Reading database ... 44221 files and directories currently installed.)&lt;br /&gt;Unpacking bacula-common (from .../bacula-common_1.38.11-7_all.deb) ...&lt;br /&gt;Adding user 'bacula'... Ok.&lt;br /&gt;Selecting previously deselected package bacula-fd.&lt;br /&gt;Unpacking bacula-fd (from .../bacula-fd_1.38.11-7_i386.deb) ...&lt;br /&gt;Setting up bacula-common (1.38.11-7) ...&lt;br /&gt;&lt;br /&gt;Setting up bacula-fd (1.38.11-7) ...&lt;br /&gt;Starting Bacula File daemon: bacula-fd.&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;В конфигурационном файле &lt;span style="font-style: italic;font-family:Times New Roman,Times,serif;" &gt;/etc/bacula/hostname-fd.conf&lt;/span&gt; поправить описание Director (имя, адрес, пароль), закомментировать второй Director (с опцией Monitor), в описании Messages поправить имя используемого director'а. Перезапустить fd-сервис с новыми параметрами:&lt;/p&gt;&lt;pre&gt;# /etc/init.d/bacula-fd restart&lt;br /&gt;Restarting Bacula File daemon: bacula-fd.&lt;br /&gt;&lt;/pre&gt;&lt;h3&gt;Установка клиента из исходников (sources)&lt;/h3&gt;&lt;pre&gt;# tar zxf bacula-2.0.x.tar.gz&lt;br /&gt;# cd bacula-2.0.x&lt;br /&gt;./configure --with-mysql --with-openssl --enable-client-only --localstatedir=/var --sysconfdir=/etc \&lt;br /&gt;--with-job-email=roma@mycompany.com --with-dump-email=roma@mycompany.com&lt;br /&gt;# make&lt;br /&gt;# make install&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;В конфигурационном файле &lt;span style="font-style: italic;"&gt;/etc/bacula/bacula-fd.conf&lt;/span&gt; поправить описание Director (имя, адрес, пароль), закомментировать второй Director (с опцией Monitor), в описании Messages поправить имя используемого director'а. Скрипт управления bacula-сервисами - &lt;span style="font-style: italic;"&gt;/etc/bacula/bacula&lt;/span&gt;, его необходимо переложить, в соответствии с Вашей системой, в папку с другими скриптами и проделать необходимые манипуляции для автоматического запуска fd-сервиса в момент загрузки системы. Запустить fd-сервис с новыми параметрами:&lt;/p&gt;&lt;pre&gt;# /etc/bacula/bacula start&lt;br /&gt;Starting the Bacula File daemon&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.freebsddiary.org/bacula.php" target="_self"&gt;Bacula: Cross-Platform Client-Server Backups&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bacula.org/?page=documentation" target="_self"&gt;Bacula, the Network Backup Tool for Linux, Unix, Mac and Windows&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.opennet.ru/prog/info/1977.shtml" target="_self"&gt;Перевод документации от Bacula v.1.38 на русский язык&lt;/a&gt; (частично)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3940553399006780129?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3940553399006780129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3940553399006780129' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3940553399006780129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3940553399006780129'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/02/bacula.html' title='Bacula - система резервного копирования и восстановления'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-310103630846833221</id><published>2007-01-23T16:20:00.000+02:00</published><updated>2007-06-06T12:44:37.288+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groupware'/><title type='text'>Инструмент совместной работы NetOffice</title><content type='html'>Следуя инструкции docs/install.txt:&lt;br /&gt;&lt;p&gt;1. Распаковать архив netoffice в отдельную директорию, например /var/www/netoffice&lt;/p&gt;&lt;p&gt;2. Создать из шаблона файл конфигурации: &lt;/p&gt;&lt;pre&gt;cd /var/www/netoffice/includes&lt;br /&gt;cp settings_blank.php settings.php&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;3. Расставить необходимые права доступа для пользователя от имени которого работает web-сервер (например www)&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;chown -R www:www /var/www/netoffice&lt;br /&gt;cd /var/www/netoffice&lt;br /&gt;chmod 664 includes/settings.php&lt;br /&gt;chmod 775 files&lt;br /&gt;chmod 775 logos_clients&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;4. Подручными средствами (например, phpmyadmin) создать MySQL-базу и пользователя для работы с ней.&lt;/p&gt;&lt;p&gt;5. Продолжить установку в броузере по адресу http://localhost/netoffice/installation/setup.php&lt;/p&gt;&lt;p&gt;6. После успешной установки не забыть удалить директорию /var/www/netoffice/installation. Рабочая система совместной работы находится по адресу http://localhost/netoffice.&lt;br /&gt;&lt;/p&gt;Кое-что необходимо доделать вручную:&lt;br /&gt;&lt;p&gt;7. Для того, чтобы иметь возможность использовать русский, литовские и другие языки в работе с проектами, необходимо указать кодировку UTF-8 в настройках административного доступа. Залогинившись администратором:&lt;/p&gt;&lt;p&gt;Administration -&gt;Edit settings -&gt;Advanced -&gt; MySQL client charset : utf8&lt;/p&gt;&lt;p&gt;8. По непонятной причине английский интерфейс по умолчанию не использует UTF-8 кодировку, поэтому, например, извещения по e-mail с использованием русских символов начинают хромать. Но и это поправимо - в файле /var/www/netoffice/languages/lang_en.php поправить значение:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;$setCharset = 'UTF-8';&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;9. Для использования уже существующей LDAP-базы пользователей, мне не подходит предлагаемая реализация данной функции, поэтому я переписал ее под свои нужды.&lt;/p&gt;&lt;pre&gt;# cd /var/www/netoffice/includes&lt;br /&gt;# diff library_orig.php library.php&lt;br /&gt;535,543c535,544&lt;br /&gt;&lt;         $sr = ldap_search($conn, $configLDAP['searchroot'], 'uid=' . $formUsername); &lt;         $info = ldap_get_entries($conn, $sr); &lt;         $user_dn = $info[0]['dn']; &lt; &lt; bind =" ldap_bind($conn,"&gt;       $ldap_dn = "uid=".$formUsername.", ".$configLDAP['searchroot'];&lt;br /&gt;&gt;       $ldap_response = @ldap_bind($conn, $ldap_dn, $formPassword);&lt;br /&gt;&gt;&lt;br /&gt;&gt;       if ($ldap_response) {&lt;br /&gt;&gt;           return(true);&lt;br /&gt;&gt;           }&lt;br /&gt;&gt;       else {&lt;br /&gt;&gt;           return(false);&lt;br /&gt;&gt;           }&lt;br /&gt;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;В файле конфигурации /var/www/netoffice/includes/settings.php необходимо установить значения:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;$useLDAP = 'true';&lt;br /&gt;$configLDAP['ldapserver'] = 'ldapserver';&lt;br /&gt;$configLDAP['searchroot'] = 'ou=People, o=My company, c=ru';&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Теперь администратору достаточно добавить новых пользователей в системе NetOffice, username'ы которых будут совпадать с uid пользователей в указанной LDAP-директории, и можно начинать совместную работу над проектами!&lt;/p&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://netoffice.sourceforge.net/modules/news/"&gt;NetOffice - free web based project-management environment&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-310103630846833221?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/310103630846833221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=310103630846833221' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/310103630846833221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/310103630846833221'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/01/netoffice.html' title='Инструмент совместной работы NetOffice'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-9137915549814290190</id><published>2007-01-23T15:37:00.000+02:00</published><updated>2007-05-02T15:38:19.499+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Security Standarts</title><content type='html'>Данный список включает в себя принятые стандарты по информационной безопасности, которые могут пригодиться при планировании и реализации информационной безопасности на предприятии.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ISO:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ISO/IEC 15408-1:2005 Information technology — Security techniques — Evaluation criteria for IT security - Part 1: Introduction and general model [&lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/ISO_IEC_15408-1_2005%28E%29.pdf"&gt;1,2Mb&lt;/a&gt;]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ISO/IEC 15408-2:2005 Information technology — Security techniques — Evaluation criteria for IT security - Part 2: Security functional requirements [&lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/ISO_IEC_15408-2_2005%28E%29.pdf"&gt;1,3Mb&lt;/a&gt;]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ISO/IEC 15408-3:2005 Information technology — Security techniques — Evaluation criteria for IT security - Part 3: Security assurance requirements [&lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/ISO_IEC_15408-3_2005%28E%29.pdf"&gt;0,8Mb&lt;/a&gt;]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ISO/IEC 17799:2005 Information technology - Security techniques - Code of practice for information security management [&lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/ISO_IEC_17799_2005.pdf"&gt;2,5Mb&lt;/a&gt;]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ISO/IEC 27001:2005 Information technology - Security techniques - Information security management systems - Fundamentals and vocabulary [&lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/ISO_IEC_27001_2005.pdf"&gt;0,5Mb&lt;/a&gt;]&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Российские:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;ГОСТ Р ИСО/МЭК 15408-1-2002 Критерии оценки безопасности информационных технологий - Часть 1: Введение и общая модель (перевод &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;15408-1&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;) [&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/GOST_15408-1-2002.pdf"&gt;1,1Mb&lt;/a&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;]&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;ГОСТ Р ИСО/МЭК 15408-2-2002&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt; Критерии оценки безопасности информационных технологий - Часть 2: Функциональные требования безопасности &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;(перевод &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;15408-2&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt; [&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/GOST_15408-2-2002.pdf"&gt;2,1Mb&lt;/a&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;]&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;ГОСТ Р ИСО/МЭК 15408-3-2002&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt; Критерии оценки безопасности информационных технологий - Часть 3: Требования доверия к безопасности &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;(перевод &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;15408-&lt;span style="font-family: Times New Roman,Times,serif;"&gt;3&lt;/span&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt; [&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/GOST_15408-3-2002.pdf"&gt;1,9Mb&lt;/a&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#332e2d;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: Times New Roman,Times,serif; color: rgb(0, 0, 0);"&gt;ГОСТ Р ИСО/МЭК 17799-2005 Практические правила управления информационной безопасностью (перевод 17799:2005) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;[&lt;a target="_self" href="http://blogs.ssc.lt/rs/resource/GOST_17799-2005.doc"&gt;0,55Mb&lt;/a&gt;]&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-9137915549814290190?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/9137915549814290190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=9137915549814290190' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/9137915549814290190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/9137915549814290190'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/01/security-standarts.html' title='Security Standarts'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-8307373324778812897</id><published>2007-01-19T16:21:00.000+02:00</published><updated>2007-05-02T16:22:14.827+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groupware'/><title type='text'>Обзор groupware/collaboration систем</title><content type='html'>Потратив немало времени на поиск и ознакомление с различными collaboration-средствами, у меня сформировался список &lt;span style="font-weight: bold;"&gt;обязательных требований&lt;/span&gt;, которым должно удовлетворять groupware-решение:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;хранение и оперирование данными в кодировке UTF-8&lt;/li&gt;&lt;li&gt;удобность и простота в использовании (usability)&lt;/li&gt;&lt;li&gt;наличие календарей (личного и публичных)&lt;/li&gt;&lt;li&gt;наличие графиков динамики действующих&lt;/li&gt;&lt;li&gt;проект должен активно развиваться, чтобы обнаруженные ошибки исправлялись и появлялись новые возможности&lt;/li&gt;&lt;li&gt;оповещение по e-mail в процессе работы с проектом&lt;/li&gt;&lt;/ul&gt;В приведенной ниже таблице упомянуты только те продукты, которые я самолично опробовал. Все продукты open source.&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;Продукт&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;Версия&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; Платформа&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; Usability&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;UTF-8 &lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;Динамика&lt;br /&gt;развития&lt;br /&gt;проекта&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; Наличие диаграмм&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; Наличие календарей&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; Примечания&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; moregroupware&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 0.7.4&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; Apache/PHP/MySQL&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 3&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; -&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; низкая&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; -&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; phprojekt&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 5.1&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; Apache/PHP/MySQL&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 2&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; -&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; активно&lt;br /&gt;развивается&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;+ &lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; phpgroupware&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 0.9.16&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; Apache/PHP/MySQL&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 3&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; -&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;  средняя&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;+&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; conflux lite&lt;br /&gt;&lt;/span&gt; &lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 1.3&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; Apache/Python/PgSQL&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 5&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; средняя&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;+&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;слишком мало функций в бесплатной версии&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; activeCollab&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 0.7.1&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; Apache/PHP/MySQL&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 5&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;проект достаточно молодой&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; -&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;- &lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; egroupware&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 1.2-105&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; Apache/PHP/MySQL&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 4&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; активно&lt;br /&gt;развивается&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;неудобен в работе&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; hipergate&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 2.1&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; Tomcat/Java&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 2&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; низкая&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; -&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; -&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; NetOffice&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 2.6.0b2&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; Apache/PHP/MySQL&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; 5&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; активно&lt;br /&gt;развивается&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt; +&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt; мой выбор!&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Еще можно кратко упоминуть о:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Achievo &lt;/span&gt;- нет поддержки UTF-8, ужасный интерфейс&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Covide &lt;/span&gt;- никакого usability&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Double Choco Latte&lt;/span&gt; - нет поддержки UTF-8&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Ivata &lt;/span&gt;- совсем сырой&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Lucane &lt;/span&gt;- Java-приложение, каждое действие открывает новое окно. Крайне неудобно.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Open-Xchange&lt;/span&gt; - монстр. Даже имея полное описание установки, мне не хочется садиться за него (требует Tomcat, PostgreSQL, LDAP). &lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;SugarCRM &lt;/span&gt;- слишком много всего лишнего. Наличие коммерческой версии наводит на мысль, что чего-то будет не хватать в свободной версии.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;vtiger &lt;/span&gt;- слишком много всего лишнего. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-8307373324778812897?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/8307373324778812897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=8307373324778812897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8307373324778812897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8307373324778812897'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/01/groupwarecollaboration.html' title='Обзор groupware/collaboration систем'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6307305098589832910</id><published>2007-01-18T16:22:00.000+02:00</published><updated>2007-05-02T16:23:00.740+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>WebClient для SVN</title><content type='html'>Отличная реализация web-клиента для svn - Polarion svnwebclient.&lt;br /&gt;Клиент написан на Java, поэтому для своей работы требует наличия соответствующей платформы: J2RE/J2SDK 1.4 (и выше) + Tomcat 4 (и выше). Это именно клиент - работает через WebDAV-протокол, поэтому для доступа к репозитарию необходимо предоставить аутентификационные данные (логин, пароль).&lt;br /&gt;&lt;br /&gt;Особенности:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;возможность добавлять директории и новые файлы (upload) в репозитарий прямо из броузера&lt;/li&gt;&lt;li&gt;наглядное сравнение двух ревизий одного файла (diff)&lt;/li&gt;&lt;li&gt;возможность забирать (download) директории из репозитария в виде zip-архива&lt;/li&gt;&lt;li&gt;возможность задавать требуемый репозитарий&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Инсталляция очень проста - достаточно взять текущий shapshot и развернуть war-файл с помощью Tomcat (положить в директорию webapps). Файл WEB-INF/web.xml доступен для изменений - например, чтобы иметь возможность задавать требуемый репозитарий, необходимо изменить параметр RepositoryUrl на ParentRepositoryDirectory и задать соответствующий корень.&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.polarion.org/index.php?page=overview&amp;amp;project=svnwebclient"&gt;WebClient for SVN&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6307305098589832910?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6307305098589832910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6307305098589832910' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6307305098589832910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6307305098589832910'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/01/webclient-svn.html' title='WebClient для SVN'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6129332422993466174</id><published>2007-01-15T15:53:00.000+02:00</published><updated>2007-05-02T16:29:43.960+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><title type='text'>StartTLS - безопасный LDAP</title><content type='html'>&lt;p&gt; TLS 1.0 (Transport Layer Security) - это протокол безопасной передачи данных, основанный на SSL 3.0 (Secure Socket Layer), отличается от него незначительно, поэтому термины SSL и TLS можно использовать как синонимы.&lt;/p&gt;&lt;p&gt;StartTLS - это механизм установления безопасного соединения на основе TLS-протокола. Данный механизм использует уже существующее соединение - для LDAP-соединения это 389-й порт (ldap://). Иногда его называют TLS upgrade по той же самой причине - испольузется уже установленное TCP-соединение.&lt;/p&gt;LDAPS (ldaps://) - это тоже безопасное соединение, но оно инициируется на альтернативном порту (636).&lt;br /&gt;&lt;p&gt;После того как инициализация безопасного соединения прошла успешна, разницы между StartTLS и LDAPS нет.&lt;br /&gt;&lt;/p&gt;Для того, чтобы LDAP-сервер умел формировать безопасное соединение, необходимо иметь SSL-сертификат для используемого сервера, подписанный Центром Сертификации (CA), сертификат которого в свою очередь находится в root-списке (ca-bundle.crt). В основной файл конфигурации как минимум должны быть добавлены следущие строки:&lt;br /&gt;&lt;pre&gt;TLSCertificateFile /etc/ssl/public/server.crt  # сертификат ldap-сервера&lt;br /&gt;TLSCertificateKeyFile /etc/ssl/private/server.key # ключ ldap-сервера&lt;br /&gt;TLSCACertificateFile /etc/ssl/public/ca-bundle.crt # root-список&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;После перезапуска ldap-сервиса, StartTLS механизм  можно проверить с помощью команды:&lt;/p&gt;&lt;pre&gt;# ldapsearch -x -b "&lt;span style="font-weight: bold;"&gt;c=ru&lt;/span&gt;" -h &lt;span style="font-weight: bold;"&gt;slave_ldap.example.com &lt;/span&gt;-D "&lt;span style="font-weight: bold;"&gt;cn=admin,c=ru&lt;/span&gt;" -w &lt;span style="font-weight: bold;"&gt;password&lt;/span&gt; -d 1 -ZZ&lt;br /&gt;...&lt;br /&gt;TLS trace: SSL_connect:before/connect initialization&lt;br /&gt;TLS trace: SSL_connect:SSLv2/v3 write client hello A&lt;br /&gt;TLS trace: SSL_connect:SSLv3 read server hello A&lt;br /&gt;TLS certificate verification: depth: 3, err: 0, subject: /O=EuroPKI/CN=EuroPKI Root Certification Authority, issuer: /O=EuroPKI/CN=EuroPKI Root Certification Authority&lt;br /&gt;TLS certificate verification: depth: 2, err: 0, subject: /C=LT/O=EuroPKI/CN=EuroPKI Lithuanian Certification Authority, issuer: /O=EuroPKI/CN=EuroPKI Root Certification Authority&lt;br /&gt;TLS certificate verification: depth: 1, err: 0, subject: /C=LT/O=Skaitmeninio Sertifikavimo Centras/CN=SSC Class 2 CA/serialNumber=3, issuer: /C=LT/O=EuroPKI/CN=EuroPKI Lithuanian Certification Authority&lt;br /&gt;TLS certificate verification: depth: 0, err: 0, subject: /C=LT/O=UAB Skaitmeninio sertifikavimo centras/OU=Duomen\xC5\xB3 centras/CN=slave_ldap.example.com/serialNumber=33, issuer: /C=LT/O=Skaitmeninio Sertifikavimo Centras/CN=SSC Class 2 CA/serialNumber=3&lt;br /&gt;TLS trace: SSL_connect:SSLv3 read server certificate A&lt;br /&gt;TLS trace: SSL_connect:SSLv3 read server done A&lt;br /&gt;TLS trace: SSL_connect:SSLv3 write client key exchange A&lt;br /&gt;TLS trace: SSL_connect:SSLv3 write change cipher spec A&lt;br /&gt;TLS trace: SSL_connect:SSLv3 write finished A&lt;br /&gt;TLS trace: SSL_connect:SSLv3 flush data&lt;br /&gt;TLS trace: SSL_connect:SSLv3 read finished A&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Для безопасной (с использованием TLS) репликации данных на другой сервер предпочтительно использовать механизм StartTLS, без использования дополнительного ldaps-порта (636). Всё, что нужно поправить в этом случае в конфигурационном файле /etc/slapd.conf - добавить строку starttls=yes в настройку необходимой реплики (replica). Например:&lt;/p&gt;&lt;pre&gt;...&lt;br /&gt;replica         uri=ldap://slave_ldap.example.com&lt;br /&gt;               &lt;span style="font-weight: bold;"&gt;starttls=critical&lt;/span&gt;&lt;br /&gt;               binddn="cn=admin,c=lt"&lt;br /&gt;               bindmethod=simple&lt;br /&gt;               credentials=password&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;Параметр starttls может принимать значение "yes", в этом случае, если в момент инициализации TLS-соединения возникли ошибки, соединение будет установлено без использования TLS. Рекомендуется - critical.&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.openldap.org/faq/data/cache/185.html"&gt;OpenLDAP Faq-O-Matic: How do I use TLS/SSL?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://rfc.net/rfc2830.html"&gt;RFC2830 - Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://rfc.net/rfc4513.html"&gt;RFC4513 - Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.openldap.org/software/man.cgi?query=slapd.conf&amp;apropos=0&amp;amp;sektion=0&amp;manpath=OpenLDAP+2.3-Release&amp;amp;format=html"&gt;SLAPD.CONF(5)&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6129332422993466174?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6129332422993466174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6129332422993466174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6129332422993466174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6129332422993466174'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/01/starttls-ldap.html' title='StartTLS - безопасный LDAP'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2125905736501273853</id><published>2007-01-15T14:51:00.000+02:00</published><updated>2007-05-02T15:03:48.593+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='boot'/><title type='text'>Как затереть Linux-загрузчик на системе с установленной ОС Windows</title><content type='html'>&lt;p&gt;С Windows 9x всё ясно и понятно - достаточно загрузиться в ДОС с загрузочной дискеты и попросить:&lt;/p&gt;&lt;pre&gt;fdisk /mbr&lt;/pre&gt;&lt;p&gt;С Windows XP как оказалось тоже всё элементарно:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;загрузиться с установочного (загрузочного) компакта&lt;/li&gt;&lt;li&gt;выбрать Repair (r)&lt;/li&gt;&lt;li&gt;указать пароль администратора &lt;/li&gt;&lt;li&gt;командой &lt;span style="font-weight: bold;"&gt;fixmbr &lt;/span&gt;поправить загрузочную область диска&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2125905736501273853?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2125905736501273853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2125905736501273853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2125905736501273853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2125905736501273853'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/05/linux-windows.html' title='Как затереть Linux-загрузчик на системе с установленной ОС Windows'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-5401047328145770043</id><published>2007-01-12T16:14:00.000+02:00</published><updated>2007-05-02T16:15:38.442+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><title type='text'>OpenLDAP: установка, конфигурация репликации</title><content type='html'>&lt;p&gt;Данное описание включает в себя описание установки и последующей настройки репликации LDAP-серверов OpenLDAP 2.2.23 на базе Debian Sarge 3.1.&lt;/p&gt;&lt;h3&gt;Установка и первоначальная конфигурация&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;  1. Установить OpenLDAP и необходимые утилиты: &lt;/p&gt;&lt;pre&gt;# &lt;span style="font-weight: bold;"&gt;apt-get install slapd ldap-utils&lt;/span&gt;&lt;br /&gt;Reading Package Lists... Done&lt;br /&gt;Building Dependency Tree... Done&lt;br /&gt;The following extra packages will be installed:&lt;br /&gt;  libiodbc2 libperl5.8 libslp1&lt;br /&gt;Suggested packages:&lt;br /&gt;  slpd openslp-doc ldap-utils&lt;br /&gt;Recommended packages:&lt;br /&gt;  db4.2-util&lt;br /&gt;The following NEW packages will be installed:&lt;br /&gt;  libiodbc2 libperl5.8 libslp1 slapd&lt;br /&gt;0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.&lt;br /&gt;Need to get 1509kB of archives.&lt;br /&gt;After unpacking 3998kB of additional disk space will be used.&lt;br /&gt;Do you want to continue? [Y/n] &lt;span style="font-weight: bold;"&gt;y&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Configuring slapd&lt;br /&gt;The DNS domain name is used to construct the base DN of your LDAP directory.&lt;br /&gt;Entering foo.bar.org will give you the base DN dc=foo, dc=bar, dc=org&lt;br /&gt;DNS domain name:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;example.com&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Whatever you enter here will be stored as the name of your organization in the base DN of your LDAP directory.&lt;br /&gt;Name of your organization:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Company&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please enter the password for the admin entry in your LDAP directory&lt;br /&gt;Admin password:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;password&lt;/span&gt;&lt;br /&gt;Confirm password:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;password&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The slapd daemon now disables the old LDAPv2 protocol by default.&lt;br /&gt;Programs and users are generally expected to be upgraded to LDAPv3.&lt;br /&gt;If you have old programs which have not been moved to use LDAPv3 and&lt;br /&gt;you still need LDAPv2 support then select this option and 'allow bind_v2'&lt;br /&gt;will be added to your slapd.conf to tell slapd to accept LDAPv2 connections.&lt;br /&gt;Allow LDAPv2 protocol?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;No&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Setting up slapd (2.2.23-8) ...&lt;br /&gt;  Creating initial slapd configuration... done.&lt;br /&gt;  Creating initial LDAP directory... done.&lt;br /&gt;Starting OpenLDAP: (db4.2_recover not found),  slapd.&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Дополнительную информацию об установленном пакете можно почерпнуть из документа /usr/share/doc/slapd/README.Debian&lt;/p&gt;&lt;p&gt;2. Теперь необходимо сконфигурировать LDAP-директорию на основании своих требований. Первым делом следует остановить сервис:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;# /etc/init.d/slapd stop&lt;br /&gt;Stopping OpenLDAP: slapd.&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Если не устраивает структура директории, построенная по принципу доменных имен (dc=example, dc=com) и хочется использовать географическую структуру (o=My Company, c=LT), прежде необходимо удалить текущую базу LDAP. БД находится в /var/lib/ldap, файл DB_CONFIG является просто конфигурационным файлом и его пока не следует трогать.&lt;/p&gt;&lt;p&gt;Если структура по принципу доменных имен устраивает, то можно сразу "перенашнуть" на шаг №6.&lt;/p&gt;&lt;p&gt;3. Теперь следует поправить основной конфигурационный файл &lt;span style="font-style: italic;"&gt;/etc/ldap/slapd.conf&lt;/span&gt;. Необходимо изменить &lt;span style="font-style: italic;"&gt;suffix &lt;/span&gt;(например, на c=lt) и &lt;span style="font-style: italic;"&gt;dn администратора&lt;/span&gt; в описании доступа (cn=admin,c=lt).&lt;/p&gt;&lt;p&gt;4. Перед запуском LDAP-директории, чтобы избежать проблемы "яйца и курицы", необходимо "наполнить" её минимальным содержанием - сформировать корень и добавить информацию о первом пользователе (cn=admin,lt). Для этого необходимо сформировать LDIF-файл, описывающий данные корень и первого пользователя. Пример содержания:&lt;/p&gt;&lt;pre&gt;# cat ldap.ldif&lt;br /&gt;# Entry 1: c=LT&lt;br /&gt;dn: c=LT&lt;br /&gt;c: LT&lt;br /&gt;objectClass: country&lt;br /&gt;objectClass: top&lt;br /&gt;&lt;br /&gt;# Entry 2: cn=admin,c=LT&lt;br /&gt;dn: cn=admin,c=lt&lt;br /&gt;objectClass: simpleSecurityObject&lt;br /&gt;objectClass: organizationalRole&lt;br /&gt;cn: admin&lt;br /&gt;description: LDAP administrator&lt;br /&gt;userPassword: {crypt}IvuNBMeSU9OzA&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Для генерации crypt-хэша будущего пароля администратора можно воспользоваться утилитой makepassword:&lt;/p&gt;&lt;pre&gt;# echo "password" | makepasswd --clearfrom=- --crypt&lt;br /&gt;password IvuNBMeSU9OzA&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;С помощью утилиты slapadd наполняем первоначальным содержимым директорию:&lt;/p&gt;&lt;pre&gt;# slapadd -l ldap.ldif&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;5. Запустить ldap-сервис и проверить работоспособность заново сконфигурированной директории&lt;/p&gt;&lt;pre&gt;# &lt;span style="font-weight: bold;"&gt;/etc/init.d/slapd start&lt;/span&gt;&lt;br /&gt;Starting OpenLDAP: (db4.2_recover not found),  slapd.&lt;br /&gt;# &lt;span style="font-weight: bold;"&gt;ldapsearch -x -b "c=lt" -D "cn=admin,c=LT" -w password -h localhost&lt;/span&gt;&lt;br /&gt;# extended LDIF&lt;br /&gt;#&lt;br /&gt;# LDAPv3&lt;br /&gt;# base &lt;c=lt&gt; with scope sub&lt;br /&gt;# filter: (objectclass=*)&lt;br /&gt;# requesting: ALL&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# LT&lt;br /&gt;dn: c=LT&lt;br /&gt;c: LT&lt;br /&gt;objectClass: country&lt;br /&gt;objectClass: top&lt;br /&gt;&lt;br /&gt;# admin, lt&lt;br /&gt;dn: cn=admin,c=lt&lt;br /&gt;objectClass: simpleSecurityObject&lt;br /&gt;objectClass: organizationalRole&lt;br /&gt;cn: admin&lt;br /&gt;description: LDAP administrator&lt;br /&gt;userPassword:: e2NyeXB0fUl2dU5CTWVTVTlPekE=&lt;br /&gt;&lt;br /&gt;# search result&lt;br /&gt;search: 2&lt;br /&gt;result: 0 Success&lt;br /&gt;&lt;br /&gt;# numResponses: 3&lt;br /&gt;# numEntries: 2&lt;br /&gt;&lt;br /&gt;# &lt;span style="font-weight: bold;"&gt;ldapsearch -x -b "c=lt" -h localhost&lt;/span&gt;&lt;br /&gt;# extended LDIF&lt;br /&gt;#&lt;br /&gt;# LDAPv3&lt;br /&gt;# base &lt;c=lt&gt; with scope sub&lt;br /&gt;# filter: (objectclass=*)&lt;br /&gt;# requesting: ALL&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# LT&lt;br /&gt;dn: c=LT&lt;br /&gt;c: LT&lt;br /&gt;objectClass: country&lt;br /&gt;objectClass: top&lt;br /&gt;&lt;br /&gt;# admin, lt&lt;br /&gt;dn: cn=admin,c=lt&lt;br /&gt;objectClass: simpleSecurityObject&lt;br /&gt;objectClass: organizationalRole&lt;br /&gt;cn: admin&lt;br /&gt;description: LDAP administrator&lt;br /&gt;&lt;br /&gt;# search result&lt;br /&gt;search: 2&lt;br /&gt;result: 0 Success&lt;br /&gt;&lt;br /&gt;# numResponses: 3&lt;br /&gt;# numEntries: 2&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Из вывода видно, что в первом случае при аутентификации использовался пользователь cn=admin,c=lt, имеющий доступ к паролям, во втором - анонимный пользователь, имеющий ограниченный круг прав.&lt;/p&gt;&lt;p&gt;6. На данном этапе можно наполнить содержимым только что созданную директорию и начать с ней полноценную работу. Для работы с содержимым ldap-директории существует масса различных программ-клиентов, приведу только те, что использую сам:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a target="_self" href="http://phpldapadmin.sourceforge.net/"&gt;phpLDAPadmin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.jxplorer.org/"&gt;JXplorer&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.ldapadministrator.com/"&gt;LDAP Browser&lt;/a&gt; (только для просмотра содержимого)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;h3&gt;Репликация&lt;br /&gt;&lt;/h3&gt;&lt;p style="text-align: left;"&gt;Для простоты реализации репликации рассматривается 2 ldap-сервера, являющиеся зеркальными копиями друг друга, сконфигурированные по вышеприведенному описанию.&lt;/p&gt;&lt;p style="text-align: left;"&gt;1. Остановить на обоих серверах slapd сервис.&lt;/p&gt;&lt;p style="text-align: left;"&gt;2. На master-сервере в /etc/ldap/slapd.conf добавить описание реплики (slave-сервера):&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;replica  host=slave_ldap.example.com&lt;br /&gt;  "binddn=cn=admin,c=lt"&lt;br /&gt;  bindmethod=simple&lt;br /&gt;  credentials=password&lt;br /&gt;replogfile      /var/lib/ldap/replog&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;host - адрес slave-сервера&lt;/li&gt;&lt;li&gt;binddn - пользователь, который будет использоваться master-сервером, при передачи обновленных данных на slave-сервер. Он должен иметь соответствующий доступ на slave-сервере.&lt;/li&gt;&lt;li&gt;bindmethod - метод аутентификации. simple - всё передается в чистом виде, очень ненадежно с точки зрения информационной безопасности, но для тестовых целей или изолированной сети вполне подходит.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;credentials - пароль пользователя binddn&lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;3. На slave-сервере в /etc/ldap/slapd.conf добавить строки:&lt;/p&gt;&lt;pre&gt;updatedn        "cn=admin,c=lt"&lt;br /&gt;updateref       "ldap://master_ldap.example.com"&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;updatedn - пользователь, которому разрешено проводить репликацию&lt;/li&gt;&lt;li&gt;updateref - ссылка на сервер, которая передается клиенту, если клиент пытается внести изменения на slave-сервере&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;4. Запустить slapd-сервисы на обоих серверах и проверить работоспособность репликации. В случае если изменения происходят на master-сервере, они почти моментально будут переданы на slave-сервер. Если же изменения клиент старается внести непосредственног на slave-сервере, ему будет возвращен адрес master-сервера:&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre&gt;# &lt;span style="font-weight: bold;"&gt;ldapmodify -f ldap.ldif -x -h slave_ldap.example.com -D "uid=user3,ou=people,c=lt" -w password&lt;/span&gt;&lt;br /&gt;modifying entry "uid=user3,ou=people,c=lt"&lt;br /&gt;ldap_modify: Referral (10)&lt;br /&gt;        referrals:&lt;br /&gt;                ldap://master_ldap.example.com/uid=user3,ou=People,c=lt&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.openldap.org/doc/admin23/"&gt;OpenLDAP Software 2.3 Administrator's Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.openldap.org/software/man.cgi?query=ldapmodify&amp;sektion=1&amp;amp;apropos=0&amp;manpath=OpenLDAP+2.3-Release"&gt;LDAPMODIFY(1)&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-5401047328145770043?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/5401047328145770043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=5401047328145770043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5401047328145770043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5401047328145770043'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/01/openldap.html' title='OpenLDAP: установка, конфигурация репликации'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3372353342349566981</id><published>2007-01-12T15:09:00.000+02:00</published><updated>2007-05-02T15:09:52.181+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Как получить crypt/md5-хэши паролей</title><content type='html'>&lt;p&gt;CRYPT:&lt;/p&gt;&lt;pre&gt;$ echo "SECRET" | makepasswd --clearfrom=- --crypt&lt;br /&gt;$ perl -e "printf \"%s\n\", crypt ("SECRET", join ('', ('.', '/', 0..9, 'A'.. 'Z', 'a'..'z')[rand (64), rand (64)]))"&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;  MD5:&lt;/p&gt;&lt;pre&gt;$ echo "SECRET" | makepasswd --clearfrom=- --crypt-md5&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3372353342349566981?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3372353342349566981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3372353342349566981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3372353342349566981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3372353342349566981'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/01/cryptmd5.html' title='Как получить crypt/md5-хэши паролей'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2871911008198360099</id><published>2007-01-03T16:15:00.000+02:00</published><updated>2007-05-02T16:16:20.040+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><title type='text'>Установка Cacti 0.8.6i на Debian Etch 4.0</title><content type='html'>Установить с помощью менеджера пакетов apt:&lt;br /&gt;&lt;pre&gt;apt-get install cacti&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Перед установкой будет запущена программа автоматической конфигурации cacti. Если mysql-сервис находится не на этом же сервере, то от автоматической конфигурации следует отказаться. &lt;/p&gt;&lt;pre&gt;Configure database for cacti with dbconfig-common? &lt;span style="font-weight: bold;"&gt;No&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;А в момент установки, будет выдана ошибка о невозможности присоединиться к mysql-серверу&lt;/p&gt;&lt;pre&gt;Error installing database for cacti.  Retry? &lt;span style="font-weight: bold;"&gt;Ignore&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;Вся необходимая документация находиться в /usr/share/doc/cacti.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Создать вручную рабочую базу данных &lt;span style="font-weight: bold;"&gt;cacti_db&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;mysql -h &lt;span style="font-weight: bold;"&gt;host &lt;/span&gt;-u &lt;span style="font-weight: bold;"&gt;root &lt;/span&gt;-p&lt;br /&gt;CREATE DATABASE `&lt;span style="font-weight: bold;"&gt;cacti_db&lt;/span&gt;` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;&lt;br /&gt;GRANT USAGE ON *.* TO '&lt;span style="font-family: mon;"&gt;&lt;span style="font-weight: bold;"&gt;cacti_user&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;'@'&lt;span style="font-weight: bold;"&gt;host&lt;/span&gt;' IDENTIFIED BY '&lt;span style="font-weight: bold;"&gt;password&lt;/span&gt;';&lt;br /&gt;GRANT ALL PRIVILEGES ON `&lt;span style="font-weight: bold;"&gt;&lt;span style="font-family: monospace;"&gt;cacti_db&lt;/span&gt;&lt;/span&gt;`.* TO '&lt;span style="font-weight: bold;"&gt;cacti_user&lt;/span&gt;'@'&lt;span style="font-weight: bold;"&gt;host&lt;/span&gt;';&lt;br /&gt;exit&lt;br /&gt;zcat /usr/share/doc/cacti/cacti.sql.gz | mysql -u &lt;span style="font-weight: bold;"&gt;cacti_user&lt;/span&gt; -h &lt;span style="font-weight: bold;"&gt;host &lt;/span&gt;-p &lt;span style="font-weight: bold;"&gt;cacti_db&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;В /etc/cacti/debian.php поправить значения для доступа к базе данных&lt;/p&gt;Продолжить установку в броузере http://server/cacti/, все предложенные значения принять по умолчанию и, если всё успешно, войти под пользователем admin с паролем admin. При первом входе, cacti попросит сменить пароль администратора (admin).&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Дополнение:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Если cacti присматривает за большим числом серверов, имеет смысл поменять скрипт, который занимается сбором данных c cmd.php на cactid, который намного быстрее работает в многопоточном режиме.&lt;/p&gt;&lt;pre&gt;apt-get install cacti-cactid&lt;/pre&gt;&lt;p&gt;Поправить значения для подключения в файле /etc/cacti/cactid.conf&lt;/p&gt;Зайти в cacti под администратором и установиьт значение &lt;span class="textEditTitle"&gt;Poller Type:&lt;br /&gt;&lt;/span&gt;Settings-&gt;Poller-&gt;&lt;span class="textEditTitle"&gt;Poller Type-&gt;cactid&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.cacti.net/"&gt;Cacti: The Complete RRDTool-based Graphing Solution&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2871911008198360099?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2871911008198360099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2871911008198360099' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2871911008198360099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2871911008198360099'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/01/cacti-086i-debian-etch-40.html' title='Установка Cacti 0.8.6i на Debian Etch 4.0'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-7259870780784008252</id><published>2007-01-02T15:49:00.000+02:00</published><updated>2007-05-02T16:27:07.689+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><title type='text'>Sender Policy Framework (SPF)</title><content type='html'>Sender Policy Framework - очень интересное решение для борьбы с подделкой адреса отправителя. На данный момент все общедоступные сервисы Microsoft (hotmail.com, msn.com) используют его, поэтому, если Ваша система не настроена необходимым образом, велика вероятность блокировки Вашего почтового трафика серверами Microsoft.&lt;br /&gt;Пример блокировки:&lt;br /&gt;&lt;pre&gt;SMTP error from remote mailer after MAIL FROM:&lt;a href="mailto:rs@ssc.lt" class="moz-txt-link-rfc2396E"&gt;&lt;vasia@ssc.lt&gt;&lt;/a&gt; SIZE=1566:&lt;br /&gt;   host mx1.hotmail.com [65.54.245.8]: 550 Command rejected for policy reasons. For troubleshooting information, go to &lt;a href="http://postmaster.msn.com/" class="moz-txt-link-freetext"&gt;http://postmaster.msn.com&lt;/a&gt;&lt;/pre&gt;&lt;p&gt;Схема функционирования данного решения приведена в статье &lt;a target="_self" href="http://www.ccc.ru/magazine/depot/06_10/read.html?0503.htm"&gt;"Аутентификация отправителей e-mail и борьба со спамом"&lt;/a&gt;. Всё, что необходимо сделать на своей стороне - добавить TXT-запись определенного формата в DNS для каждого Вашего почтового домена. В приведенном списке ссылок есть 2 ссылки на wizard'ы (одна от Microsoft, другая от OpenSPF), которые позволяют сформировать необходимую запись, опираясь на заданные Вами требования. &lt;/p&gt;Так как "Sender ID" до октября 2006 не был свободно распространяемым решением, в открытых MTA (Exim, Postfix) нет поддержки данного решения. Хочется надеяться, что это временно.&lt;br /&gt;&lt;br /&gt;Примеры spf-записей в DNS:&lt;br /&gt;Все сервера, указанные в качестве принимающих (mx-записи), могут отправлять почту от имени пользователей указанного домена&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;v=spf1 mx ~all&lt;/span&gt;&lt;br /&gt;Почту от имени пользователей указанного домена могут отправлять 2 сервера (с ip-адресами 212.122.82.203 и 212.122.82.207):&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;v=spf1 ip4:212.122.82.203 ip4:212.122.82.207 ~all&lt;br /&gt;&lt;/span&gt;Почту от имени пользователей указанного домена могут отправлять все сервера из данного домена, которые имеют в DNS ptr-записи:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;v=spf1 ptr ~all&lt;br /&gt;&lt;/span&gt;&lt;a target="_self" href="http://www.openspf.org/SPF_Record_Syntax"&gt;Здесь&lt;/a&gt; приведено полное описание всевозможного синтаксиса spf-записей.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.ccc.ru/magazine/depot/06_10/read.html?0503.htm"&gt;Аутентификация отправителей e-mail и борьба со спамом&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.openspf.org/"&gt;Sender Policy Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/"&gt;Sender ID Framework SPF Record Wizard&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://en.wikipedia.org/wiki/Sender_ID"&gt;Sender ID - Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.ietf.org/rfc/rfc4406.txt"&gt;Sender ID: Authenticating E-Mail (RFC 4406)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.internet-technologies.ru/articles/article_348.html"&gt;Спам — проблема века&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.habrahabr.ru/article/1231/"&gt;Microsoft отказывается от копирайта на Sender ID&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-7259870780784008252?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/7259870780784008252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=7259870780784008252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7259870780784008252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7259870780784008252'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/01/sender-policy-framework-spf.html' title='Sender Policy Framework (SPF)'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6608380240107657440</id><published>2006-12-15T15:21:00.000+02:00</published><updated>2007-05-02T15:21:54.855+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>SAMP (Solaris, Apache 2, MySQL 4, and PHP 5) Setup for Solaris 10</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Apache 2.0.55&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;В дистрибутиве Solaris 10 (Entire или Developer) уже установлены Apache 1 и Apache 2, остается только сконфигурировать и запустить предпочтительный вариант. Сервисом Apache 2 в отличие от Apache 1 можно управлять из SMF, поэтому рассмотренный пример касается настройки именно Apache 2.&lt;br /&gt;&lt;p&gt;1. Скопировать конфигурационный файл с примерного файла конфигурации&lt;/p&gt;&lt;pre&gt;# cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;2. Поправить, что необходимо в файле конфигурации руками&lt;/p&gt;&lt;pre&gt;# vi /etc/apache2/httpd.conf&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;3. Включить сервис Apache 2 с помощью SMF&lt;/p&gt;&lt;pre&gt;# svcadm enable apache2&lt;br /&gt;# svcs -p apache2&lt;br /&gt;STATE          STIME    FMRI&lt;br /&gt;online         11:19:59 svc:/network/http:apache2&lt;br /&gt;              11:19:59     2927 httpd&lt;br /&gt;              11:20:00     2928 httpd&lt;br /&gt;              11:20:00     2929 httpd&lt;br /&gt;              11:20:00     2930 httpd&lt;br /&gt;              11:20:00     2931 httpd&lt;br /&gt;              11:20:00     2932 httpd&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;MySQL 4.1.22&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;1. В дистрибутиве Solaris 10 (Entire или Developer) уже установлены все необходимые пакеты  для развертывания MySQL-сервиса версии 4.0.24. Версия достаточно устарела, поэтому рекомендуется ее удалить.&lt;/p&gt;&lt;pre&gt;pkgrm SUNWmysqlt SUNWmysqlr SUNWmysqlr&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;2. Для установки новой версии MySQL необходимо воспользоваться системой пакетов Blastwave для Solaris OS. О том, как начать пользоваться этой системой можно прочесть на соответствующем &lt;a target="_self" href="http://www.blastwave.org/howto.html"&gt;HowTo&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;На данный момент самая последняя версия MySQL 4.1.22 сборка 2006.11.28. В процессе установки будут установлены пакеты, для устранения зависимостей (berkleydb, perl, openssl и т.д.). Также будут заданы вопросы касающиеся конфликтных ситуаций и использования прав суперпользователя (root) -  инсталлятор натыкается на уже существующие папки и видит в этом возможный конфликт, а root необходим для создания новых пользователей и других системных операций. На самом деле ничего серьезного в эти сообщениях нет.&lt;/p&gt;&lt;pre&gt;# /opt/csw/bin/pkg-get -i mysql4 mysql4client mysql4devel mysql4rt&lt;br /&gt;# /opt/csw/bin/pkg-get -i mysql4test&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;3. Скопировать необходимый файл конфигурации&lt;/p&gt;&lt;pre&gt;# cd /opt/csw/mysql4/share/mysql/&lt;br /&gt;# cp my-small.cnf /opt/csw/mysql4/my.cnf&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;4. Поправить, что необходимо в файле конфигурации руками&lt;/p&gt;&lt;pre&gt;# vi /opt/csw/mysql4/my.cnf&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;5. Инициализировать MySQL БД и поправить необходимые права доступа к директории /opt/csw/mysql4/var&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;# cd /opt/csw/mysql4/&lt;br /&gt;# ./bin/mysql_install_db&lt;br /&gt;Installing all prepared tables&lt;br /&gt;Fill help tables&lt;br /&gt;...&lt;br /&gt;# chown -R mysql:mysql ./var&lt;/pre&gt;&lt;p&gt;6. Включить MySQL-сервис с помощью SMF&lt;/p&gt;&lt;pre&gt;# svcs -a | grep mysql&lt;br /&gt;disabled       12:22:58 svc:/network/cswmysql4:default&lt;br /&gt;# svcadm enable svc:/network/cswmysql4:default&lt;br /&gt;# svcs -a | grep mysql&lt;br /&gt;online         12:26:22 svc:/network/cswmysql4:default&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;7. Задать пароли для суперпользователя&lt;/p&gt;&lt;pre&gt;# /opt/csw/mysql4/bin/mysqladmin -u root password '&lt;span style="font-weight: bold;"&gt;your_password&lt;/span&gt;'&lt;br /&gt;# /opt/csw/mysql4/bin/mysqladmin -u root -h &lt;span style="font-weight: bold;"&gt;your_hostname&lt;/span&gt; password '&lt;span style="font-weight: bold;"&gt;your_password&lt;/span&gt;'&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;PHP 5.2.0&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;1. Установить системную переменную PATH&lt;/p&gt;&lt;pre&gt;# export PATH=/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/openwin/bin:/usr/dt/bin:/usr/ccs/bin&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;2. Для сборки PHP понадобятся утилиты из проекта GNU. &lt;/p&gt;&lt;pre&gt;# pkg-get -i autoconf&lt;br /&gt;...&lt;br /&gt;# which autoconf &amp;&amp;amp; autoconf --version | head -2&lt;br /&gt;/opt/csw/bin/autoconf&lt;br /&gt;autoconf (GNU Autoconf) 2.59&lt;br /&gt;Written by David J. MacKenzie and Akim Demaille.&lt;br /&gt;&lt;br /&gt;# pkg-get -i automake&lt;br /&gt;...&lt;br /&gt;# which automake &amp;&amp;amp; automake --version | head -2&lt;br /&gt;/opt/csw/bin/automake&lt;br /&gt;automake (GNU automake) 1.9.6&lt;br /&gt;Written by Tom Tromey &lt;tromey@redhat.com&gt;.&lt;br /&gt;&lt;br /&gt;# pkg-get -i gsed&lt;br /&gt;...&lt;br /&gt;# which gsed &amp;&amp;amp; gsed --version | head -2&lt;br /&gt;/opt/csw/bin/gsed&lt;br /&gt;GNU sed version 4.1.4&lt;br /&gt;Copyright (C) 2003 Free Software Foundation, Inc.&lt;br /&gt;&lt;br /&gt;# which gcc &amp;&amp;amp; gcc --version | head -2&lt;br /&gt;/usr/sfw/bin/gcc&lt;br /&gt;gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)&lt;br /&gt;Copyright (C) 2004 Free Software Foundation, Inc.&lt;br /&gt;# which gmake &amp;&amp;amp; gmake --version | head -2&lt;br /&gt;/usr/sfw/bin/gmake&lt;br /&gt;GNU Make 3.80&lt;br /&gt;Copyright (C) 2002  Free Software Foundation, Inc.&lt;br /&gt;&lt;br /&gt;# which flex &amp;&amp;amp; flex --version | head -2&lt;br /&gt;/usr/sfw/bin/flex&lt;br /&gt;flex version 2.5.4&lt;br /&gt;&lt;br /&gt;# which bison &amp;&amp;amp; bison --version | head -2&lt;br /&gt;/usr/sfw/bin/bison&lt;br /&gt;bison (GNU Bison) 1.875&lt;br /&gt;Written by Robert Corbett and Richard Stallman.&lt;br /&gt;&lt;br /&gt;# which gm4 &amp;&amp;amp; gm4 --version | head -2&lt;br /&gt;/opt/csw/bin/gm4&lt;br /&gt;GNU M4 1.4.5&lt;br /&gt;Written by Rene' Seindal.&lt;br /&gt;&lt;br /&gt;# which perl &amp;&amp;amp; perl -v | head -2&lt;br /&gt;/opt/csw/bin/perl&lt;br /&gt;&lt;br /&gt;This is perl, v5.8.8 built for i86pc-solaris-thread-multi&lt;br /&gt;&lt;br /&gt;# which gunzip &amp;&amp;amp; gunzip -V | head -2&lt;br /&gt;/usr/bin/gunzip&lt;br /&gt;gunzip 1.3.3-patch.1&lt;br /&gt;(2002-03-08)&lt;br /&gt;&lt;br /&gt;# which gtar &amp;&amp;amp; gtar --version | head -2&lt;br /&gt;/usr/sfw/bin/gtar&lt;br /&gt;tar (GNU tar) 1.14&lt;br /&gt;Copyright (C) 2004 Free Software Foundation, Inc.&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;3. Собрать и установиьт библиотеку libxml&lt;/p&gt;&lt;pre&gt;# mkdir /var/spool/src&lt;br /&gt;# chmod 777 /var/spool/src&lt;br /&gt;# cd 777 /var/spool/src&lt;br /&gt;# wget ftp://fr.rpmfind.net/pub/libxml/libxml2-2.6.27.tar.gz&lt;br /&gt;...&lt;br /&gt;# gunzip -cd libxml2-2.6.27.tar.gz | gtar xvpf -&lt;br /&gt;# cd libxml2-2.6.27&lt;br /&gt;# ./configure&lt;br /&gt;...&lt;br /&gt;# gmake&lt;br /&gt;...&lt;br /&gt;# gmake install&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;4. Собрать из полученных исходников PHP 5.2.0&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;# cd /var/spool/src&lt;br /&gt;# wget http://lt.php.net/get/php-5.2.0.tar.gz/from/this/mirror&lt;br /&gt;# gunzip -cd php-5.2.0.tar.gz | gtar xvpf -&lt;br /&gt;# cd php-5.2.0&lt;br /&gt;# ./configure --with-apxs2=/usr/apache2/bin/apxs --enable-dbase \&lt;br /&gt;--with-libxml-dir=/usr/local --with-config-file-path=/etc/apache2 \&lt;br /&gt;--with-mysql=shared,/opt/csw/mysql4 \&lt;br /&gt;--with-mysqli=shared,/opt/csw/mysql4/bin/mysql_config \&lt;br /&gt;--with-xpm-dir=/usr --with-gd --with-tiff-dir=/usr --with-bz2=/usr/lib \&lt;br /&gt;--with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib --enable-mbstring \&lt;br /&gt;--enable-calendar--enable-bcmath --enable-ftp --enable-exif&lt;br /&gt;# gmake&lt;br /&gt;...&lt;br /&gt;# gmake install&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;5. Скопировать конфигурационный файл с примерного файла конфигурации&lt;/p&gt;&lt;pre&gt;cp php.ini-dist /etc/apache2/php.ini&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;6. Внести необходимые изменения в конфигурационный файл PHP. Установить переменную extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613 и добавить mysql-расширение (extension=mysql.so)&lt;br /&gt;&lt;/p&gt; &lt;pre&gt;# ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20060613&lt;br /&gt;total 1072&lt;br /&gt;-rwxr-xr-x   1 root     root      422864 Dec 15 14:13 mysqli.so&lt;br /&gt;-rwxr-xr-x   1 root     root      102748 Dec 15 14:13 mysql.so&lt;br /&gt;# vi /etc/apache2/php.ini&lt;br /&gt;...&lt;br /&gt;extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613&lt;br /&gt;extension=mysql.so&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;7. Внести необходимые изменения в конфигурационный файл Apache. Строка "LoadModule php5_module libexec/libphp5.so" уже должна присутствовать.&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class="small"&gt;# vi /etc/apache2/httpd.conf&lt;br /&gt;...&lt;br /&gt;AddType application/x-httpd-php .php&lt;br /&gt;AddType application/x-httpd-php-source .phps&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;code class="small"&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;8. Перезапустить Apache&lt;/p&gt;&lt;pre&gt;&lt;code class="small"&gt;svcadm restart svc:/network/http:apache2&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;9. Проверить работоспособность открыв http://localhost/pi.php&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;# cd /var/apache2/htdocs&lt;br /&gt;# cat &gt; pi.php&lt;br /&gt;&lt;? phpinfo(); ?&gt;&lt;br /&gt;^C&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Ссылки:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://meljr.com/%7Emeljr/AMPSolaris10.html"&gt;AMPS (Apache MySQL PHP SSL) for Solaris 10&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.sun.com/bigadmin/features/articles/open_source_stack.jsp?feed=RSS"&gt;Deployment Guide for an Open Source Stack on the Solaris 10 OS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.sun.com/bigadmin/features/articles/samp_setup.html"&gt;SAMP (Solaris, Apache 2, MySQL 5, and PHP 5) Setup for Solaris 10 OS and Solaris Express&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6608380240107657440?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6608380240107657440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6608380240107657440' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6608380240107657440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6608380240107657440'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/12/samp-solaris-apache-2-mysql-4-and-php-5.html' title='SAMP (Solaris, Apache 2, MySQL 4, and PHP 5) Setup for Solaris 10'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-5426278865718800110</id><published>2006-12-15T14:59:00.000+02:00</published><updated>2007-05-02T15:05:38.637+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Как завершить все процессы для конкретного пользователя</title><content type='html'>Для Linux/FreeBSD/Solaris:&lt;br /&gt;&lt;pre&gt;kill -9 `ps -U &lt;span style="font-weight: bold;"&gt;username &lt;/span&gt;-o pid | grep [0-9] | xargs`&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-5426278865718800110?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/5426278865718800110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=5426278865718800110' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5426278865718800110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5426278865718800110'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/05/blog-post.html' title='Как завершить все процессы для конкретного пользователя'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2244636851371942748</id><published>2006-12-11T15:17:00.000+02:00</published><updated>2007-05-02T15:24:43.983+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>Установка Sun Ray Server Software 3.1 на Solaris 10 (x86)</title><content type='html'>&lt;p&gt;  1. Распаковать полученный архив с Sun Ray Server Software.&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="font-family:monospace;"&gt;unzip srss_3.1.zip&lt;br /&gt;&lt;/span&gt;cd srss_3.1.zip&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;p&gt;2. Запустить скрипт установки. Ответить на все возникаемые в ходе вопросы на основе требований к будущей системе. Java находится в каталоге /usr/j2se (по-умолчанию).&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;./utinstall&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt;3. Перегрузить систему после успешной установки всех пакетов&lt;/p&gt;&lt;pre&gt;sync;sync;init 6&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;4. Сконфигурировать Sun Ray сервис. В приведенном ниже примере  используются настройки, идущие по-умолчанию. DHCP сервис не запущен потому, как в сети уже есть действующий DHCP-сервис. Чтобы Saun Ray-терминалы знали, где искать Sun Ray Server, на уже работающем DHCP-сервере необходимо добавить еще одну опцию для выдачи клиентам - X Window System Display Manager Option (49).&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;cd /opt/SUNWut/sbin&lt;br /&gt;./utadm -A 192.168.1.0&lt;br /&gt;### Configuring /etc/nsswitch.conf&lt;br /&gt;### Configuring Service information for Sun Ray&lt;br /&gt;### Disabling Routing&lt;br /&gt;Selected values for subnetwork "192.168.1.0"&lt;br /&gt;  net mask:           255.255.255.0&lt;br /&gt;  no IP addresses offered&lt;br /&gt;  auth server list:   192.168.1.1&lt;br /&gt;  firmware server:    192.168.1.1&lt;br /&gt;Accept as is? ([Y]/N):&lt;br /&gt;### Configuring firmware version for Sun Ray&lt;br /&gt;### Successfully enabled tftp for firmware downloads&lt;br /&gt;      All the units served by "sun" on the 192.168.1.0&lt;br /&gt;      network interface, running firmware other than version&lt;br /&gt;      "3.1_32,REV=2005.08.24.08.55" will be upgraded at their next power-on.&lt;br /&gt;&lt;br /&gt;### Configuring Sun Ray Logging Functions&lt;br /&gt;### Turning on Sun Ray LAN connection&lt;br /&gt;&lt;br /&gt;NOTE: utrestart must be run before LAN connections will be allowed&lt;br /&gt;&lt;br /&gt;DHCP is not currently running, should I start it? ([Y]/N): n&lt;br /&gt;&lt;br /&gt;#### DHCP daemon not started.  You will need to manually start one&lt;br /&gt;using "/etc/init.d/dhcp start".&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;5. Перезапустить сервис с новыми настройками&lt;/p&gt;&lt;pre&gt;# ./utrestart -c&lt;br /&gt;A cold restart has been initiated... messages will be logged to /var/opt/SUNWut/log/messages.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.sun-rays.org/srss.html" target="_self"&gt;Sun Ray Server Software&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.sun.com/app/docs/coll/1230.4?q=sun+ray+server" target="_self"&gt;docs.sun.com: Sun Ray Software 4 Collection&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sun.com/software/sunray" target="_self"&gt;Sun Ray Software&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.faqs.org/rfcs/rfc2132.html" target="_self"&gt;RFC 2132 - DHCP Options and BOOTP Vendor Extensions&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2244636851371942748?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2244636851371942748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2244636851371942748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2244636851371942748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2244636851371942748'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/12/sun-ray-server-software-31-solaris-10.html' title='Установка Sun Ray Server Software 3.1 на Solaris 10 (x86)'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3148974975618108346</id><published>2006-12-11T15:16:00.000+02:00</published><updated>2007-06-15T12:10:11.450+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>Solaris 10: "доведение до ума"</title><content type='html'>Если в процессе установки Вы выбрали Name Service: None, значит после установки необходимо будет вручную создать файл /etc/resolv.conf со списком используемых DNS-серверов, иначе разрешение dns-имен в ip-адреса будет недоступно. А в файле nsswitch.conf поправить строку:&lt;br /&gt;&lt;pre&gt;hosts: files dns&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; Подключение монитора, не поддерживающего список разрешений и частот, задаваемых X-сервером, может стать причиной НЕзапуска X-сервера в Solaris 10. Я сам долго удивлялся, пока не попробовал другой монитор. Вот что можно найти в /var/log/X.org.log в случае возникновения подобной ошибки:&lt;/p&gt;&lt;pre&gt;(EE) Screen(s) found, but none have a usable configuration.&lt;br /&gt;&lt;br /&gt;Fatal server error:&lt;br /&gt;no screens found&lt;br /&gt;&lt;br /&gt;Please refer to your Operating System Vendor support pages&lt;br /&gt;at http://sunsolve.sun.com/ for support on this crash.&lt;br /&gt;Please also check the log file at "/var/log/Xorg.0.log" for additional information.&lt;br /&gt;&lt;br /&gt;XIO:  fatal IO error 146 (Connection refused) on X server ":0.0"&lt;br /&gt;    after 0 requests (0 known processed) with 0 events remaining.&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3148974975618108346?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3148974975618108346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3148974975618108346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3148974975618108346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3148974975618108346'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/12/solaris-10.html' title='Solaris 10: &quot;доведение до ума&quot;'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-1013967131579853106</id><published>2006-12-07T15:21:00.000+02:00</published><updated>2007-05-02T15:23:17.947+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='error'/><category scheme='http://www.blogger.com/atom/ns#' term='print'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>lpsched - Stopping because process dumped core</title><content type='html'>&lt;p&gt; Только я разобрался с вводом русского/литовского языков (стал использовать en_US.UTF-8) в Solaris 10, как появилась проблема с печатью. &lt;/p&gt;&lt;p&gt; Картина следующая: имеется сетевой принтер Samsung 2550, отлично работающий с Windows-машинами. С помощью Printer Manager добавляю сетевой принтер (в списке даже есть указанная модель), указываю его "принтером по умолчанию", даю доступ к нему для всех (all). Всё хорошо до тех пор, пока не отправишь что-нибудь на &lt;span class="highlight"&gt;печать&lt;/span&gt;.&lt;/p&gt;&lt;p&gt; После того как что-то появляется в очереди на &lt;span class="highlight"&gt;печать&lt;/span&gt;, сервис печати (lpsched) начинает останавливаться и перезапускаться. И так происходит, пока не очистишь очередь.&lt;/p&gt;&lt;p&gt; То, что сервис перезапускается видно по значку звёздочки (*)&lt;/p&gt; &lt;pre&gt;obs1:/var/spool/lp/logs# svcs -a|grep print&lt;br /&gt;online 12:31:10 svc:/application/print/rfc1179:default&lt;br /&gt;online 9:16:08 svc:/application/print/cleanup:default&lt;br /&gt;online* 12:35:06 svc:/application/print/server:default&lt;br /&gt;obs1:/var/adm# lpstat -a&lt;br /&gt;UX:lpstat: ERROR: Can't send message to the LP print service.&lt;br /&gt;TO FIX: The LP print service apparently has been&lt;br /&gt;stopped. Get help from your system&lt;br /&gt;administrator.&lt;br /&gt;obs1:/# svcs -p svc:/application/print/server:default&lt;br /&gt;STATE STIME FMRI&lt;br /&gt;online* 15:47:14 svc:/application/print/server:default&lt;br /&gt;15:47:14 13665 lpsched&lt;br /&gt;obs1:/# svcs -p svc:/application/print/server:default&lt;br /&gt;STATE STIME FMRI&lt;br /&gt;online* 15:47:20 svc:/application/print/server:default&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; А вот что в логе:&lt;/p&gt;&lt;pre&gt;# tail -20 /var/svc/log/application-print-server:default.log&lt;br /&gt;Print services started.&lt;br /&gt;[ Nov 18 11:47:19 Method "start" exited with status 0 ]&lt;br /&gt;[ Nov 18 11:47:19 Stopping because process dumped core. ]&lt;br /&gt;[ Nov 18 11:47:19 Executing stop method ("/lib/svc/method/print-svc stop") ]&lt;br /&gt;Print services stopped.&lt;br /&gt;[ Nov 18 11:47:19 Method "stop" exited with status 0 ]&lt;br /&gt;[ Nov 18 11:47:22 Executing start method ("/lib/svc/method/print-svc start") ]&lt;br /&gt;Print services started.&lt;br /&gt;[ Nov 18 11:47:22 Method "start" exited with status 0 ]&lt;br /&gt;[ Nov 18 11:47:23 Stopping because process dumped core. ]&lt;br /&gt;[ Nov 18 11:47:23 Executing stop method ("/lib/svc/method/print-svc stop") ]&lt;br /&gt;Print services stopped.&lt;br /&gt;[ Nov 18 11:47:23 Method "stop" exited with status 0 ]&lt;br /&gt;[ Nov 18 11:47:25 Executing start method ("/lib/svc/method/print-svc start") ]&lt;br /&gt;Print services started.&lt;br /&gt;[ Nov 18 11:47:26 Method "start" exited with status 0 ]&lt;br /&gt;[ Nov 18 11:47:26 Stopping because process dumped core. ]&lt;br /&gt;[ Nov 18 11:47:26 Executing stop method ("/lib/svc/method/print-svc stop") ]&lt;br /&gt;Print services stopped.&lt;br /&gt;[ Nov 18 11:47:26 Method "stop" exited with status 0 ]&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; Как видно из лога, сервис останавливается по причине &lt;b&gt;Stopping because process dumped core&lt;/b&gt;, но, порывшись день, я ничего вразумительного не наловил, кроме двух ссылок, где встречается та же самая ошибка:&lt;/p&gt; &lt;a target="_blank" href="http://forum.sun.com/jive/thread.jspa?messageID=385983"&gt;http://forum.sun.com/jive/thread.jspa?messageID=385983&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://forum.sun.com/jive/thread.jspa?threadID=75385"&gt;http://forum.sun.com/jive/thread.jspa?threadID=75385&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Проблема решается установкой параметра protocol=bsd, вместо tcp.&lt;br /&gt;С protocol=tcp всё падает без слов.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-1013967131579853106?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/1013967131579853106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=1013967131579853106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1013967131579853106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1013967131579853106'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/12/lpsched-stopping-because-process-dumped.html' title='lpsched - Stopping because process dumped core'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-1782185230268857675</id><published>2006-11-30T15:23:00.002+02:00</published><updated>2008-03-27T07:50:46.287+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='X'/><title type='text'>Xming - X Server для Windows</title><content type='html'>Чтобы использовать windows-машину в качестве X-терминала, на ней самой необходимо иметь запущенный локальный X-Server. Отличным выбором для таких целей будет Xming.&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;Варианты использования:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.&lt;/span&gt; У Вас есть удаленный сервер, на котором запущена какая-то графическая оболочка (диспетчер окон). Вам необходимо запустить какое-то приложение, которое имеет графический интерфейс.&lt;br /&gt;&lt;p&gt;Решение:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Запустить Xming на вашей Windows-машине&lt;/li&gt;&lt;li&gt;Залогиниться с помощью консольного клиента (putty) на Ваш удаленный сервер.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;С помощью команды DISPLAY=ip_адрес_windows_машины:0.0 указать, куда будет передано изображение&lt;/li&gt;&lt;li&gt;Запустить приложение, требующее графической среды (например gnome-calc)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2.&lt;/span&gt; У Вас есть локальный сервер, с которым вы хотите работать в терминальном режиме - подсоединяться с компьютера-терминала, логиниться и работать с удаленным рабочим столом.&lt;br /&gt;&lt;p&gt;Решение:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Запустить Xming на вашей Windows-машине с помощью XLaunch-wizard с следующей конфигурацией: Display Settings - One Window/Full Screen; Session Type - Open Session via XDMCP.&lt;/li&gt;&lt;li&gt;Логиниться в полученном графическом терминале и работать в своё удовольствие.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://ru.wikipedia.org/wiki/X_Window_System"&gt;Википедия - X Window System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://solaris.reys.net/2006/04/x11_forwarding"&gt;HOW-TO: X11 forwarding с ssh, putty и Xming&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://freedesktop.org/wiki/Xming"&gt;Xming&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.linuxdevcenter.com/lpt/a/6109"&gt;What Is the X Window System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://itc.ua/article.phtml?ID=8934"&gt;X Window - восполняя пробелы. Часть 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://itc.ua/article.phtml?ID=9003"&gt;X Window - восполняя пробелы. Часть 2&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://itc.ua/article.phtml?ID=9078"&gt;X Window - восполняя пробелы. Часть 3&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-1782185230268857675?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/1782185230268857675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=1782185230268857675' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1782185230268857675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1782185230268857675'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/11/xming-x-server-windows.html' title='Xming - X Server для Windows'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-5850944344839289232</id><published>2006-11-21T15:54:00.000+02:00</published><updated>2007-05-03T09:04:21.887+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='certificate'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>OpenTSA</title><content type='html'>&lt;p&gt; Данное описание затрагивает процесс установки  "time stamping" сервиса на базе патча к openssl и модуля mod_tsa к http-серверу Apache. Проект открытый, назван OpenTSA и достаточно активно развивается. Итак:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. Выбранная версия openssl и соответствующий этой версии tsa-патч ставятся полностью по &lt;a target="_self" href="http://www.opentsa.org/#download"&gt;инструкции&lt;/a&gt;. Если в процессе сборки не возникло критических ошибок, на warning-сообщения можно не обращать внимания.&lt;/p&gt;&lt;p&gt;2. Apache2 должен быть собран на только что установленном openssl (в данном случае это /usr/local/openssl-0.9.8c):&lt;/p&gt;&lt;pre&gt;./configure --prefix=/usr/local/apache2 --enable-ssl --with-ssl=/usr/local/openssl-0.9.8c&lt;br /&gt;make &amp;&amp;amp; make install&lt;/pre&gt;&lt;p&gt;3. Собрать модуль mod_tsa с помощью apxs из только что установленного Apache:&lt;/p&gt;&lt;pre&gt;tar zxf  mod_tsa-xxxxxxxx.tgz&lt;br /&gt;cd mod_tsa&lt;br /&gt;make OPENSSL=/usr/local/openssl-0.9.8c APXS=/opt/apache2/bin/apxs APACHECTL=/opt/apache2/bin/apachectl&lt;br /&gt;make install OPENSSL=/usr/local/openssl-0.9.8c APXS=/opt/apache2/bin/apxs APACHECTL=/opt/apache2/bin/apachectl&lt;/pre&gt;&lt;p&gt;4. Подготовить базу данных для хранения timestamp-ответов, создать пользователя, который будет иметь неограниченный доступ и создать в готовой базе рабочую таблицу &lt;span style="font-style: italic;"&gt;token&lt;/span&gt;:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;CREATE TABLE `token` (&lt;br /&gt;  `token_id` varchar(40) collate utf8_unicode_ci NOT NULL default '',&lt;br /&gt;  `token_date` datetime NOT NULL default '0000-00-00 00:00:00',&lt;br /&gt;  `token_pkcs7` blob NOT NULL,&lt;br /&gt;  PRIMARY KEY  (`token_id`)&lt;br /&gt;) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;&lt;/pre&gt;&lt;p&gt;5. Сгенерировать приватный ключ и сертификат на только что собранном openssl, так как он имеет необходимое расширение для сертификатов - Time Stamping.&lt;/p&gt;&lt;pre&gt;/usr/local/openssl-0.9.8c/bin&lt;br /&gt;./openssl genrsa -out server.key 2048&lt;br /&gt;./openssl req -key server.key &gt; server.csr&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Отдать сгенерированный csr-файл своему CA, получить в ответ сертификат с timestamp-расширением, необходимый для функционирования модуля mod_tsa.&lt;/p&gt;&lt;p&gt;6. Добавить в конфигурацию Apache описание модуля и запустить Apache:&lt;/p&gt;&lt;pre&gt;LoadModule tsa_module         modules/mod_tsa.so&lt;br /&gt;&lt;ifmodule&gt;&lt;br /&gt;&lt;location&gt;&lt;br /&gt;   SetHandler tsa&lt;br /&gt;   Order allow,deny&lt;br /&gt;   Allow from all&lt;br /&gt;&lt;/location&gt;&lt;br /&gt;TSASerialFile conf/tsaserial&lt;br /&gt;TSACertificate /usr/local/apache2/conf/server.crt&lt;br /&gt;TSACertificateChain /usr/local/apache2/conf/ca-bundle.crt&lt;br /&gt;TSAKey /usr/local/apache2/conf/server.key&lt;br /&gt;TSADBModule MySQL&lt;br /&gt;TSAMySQLHost localhost&lt;br /&gt;TSAMySQLUser tsa_user&lt;br /&gt;TSAMySQLDatabase tsa_db&lt;br /&gt;# лучше открыть доступ без пароля, иначе при каждом новом старте&lt;br /&gt;# Apache будет спрашивать пароль к БД&lt;br /&gt;TSAMySQLPassPhrase Off&lt;br /&gt;&lt;br /&gt;TSAKeyPassPhrase off&lt;br /&gt;TSADefaultPolicy 1.1.2&lt;br /&gt;TSAPolicies 1.1.3 1.1.4&lt;br /&gt;TSAMessageDigests sha1 md5&lt;br /&gt;TSAAccuracy 60 0 0&lt;br /&gt;TSAClockPrecisionDigits 0&lt;br /&gt;TSAOrdering On&lt;br /&gt;TSAIncludeName On&lt;br /&gt;TSAESSCertIdChain On&lt;br /&gt;&lt;/ifmodule&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Полное описание всех используемых директив есть на домашней странице модуля. Также данный модуль ведет достаточно подробный лог, что может быть полезным при исправлении встречающихся ошибок. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-5850944344839289232?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/5850944344839289232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=5850944344839289232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5850944344839289232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5850944344839289232'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/11/opentsa.html' title='OpenTSA'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6478505894684236066</id><published>2006-11-17T15:49:00.000+02:00</published><updated>2007-05-02T15:58:34.758+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='certificate'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>modXLdapAuth</title><content type='html'>Для того, чтобы аутентифицировать пользователя по сертификату в Apache достаточно добавить соответствующую директиву (SSLVerifyClient). Но в таком случае очень неудобно строить политику доступа - нет ни базы сертификатов, с которой бы можно было оперировать, ни возможностей по разграничению доступа (авторизации). На помощь приходит модуль modXLdapAuth (&lt;a href="http://www.urec.cnrs.fr/Distributions/modXLdapAuth/" target="_self"&gt;homepage&lt;/a&gt;), который использует LDAP как хранилище пользовательских данных, взятых из сертификатов и предоставляющий дополнительные средства для реализации политики доступа к закрытым ресурсам. Единственное ограничение с которым я столкнулся - модуль работает только с Apache 2.0.x (ветки 1.3 и 2.2 не поддерживаются).&lt;br /&gt;&lt;br /&gt;Прежде чем начинать сборку модуля необходимо подготовить LDAP сервер - необходимо включить в конфигурацию сервиса дополнительную схему (schema) modXLDAPAuth [&lt;a href="http://blogs.ssc.lt/roller-ui/resources/rs/modXLDAPAuth.schema" target="_self"&gt;1Kb&lt;/a&gt;]. В OpenLDAP это делается добавлением строки&lt;br /&gt;&lt;pre&gt;include         /etc/ldap/schema/modXLDAPAuth.schema&lt;/pre&gt;&lt;p&gt;в основной файл конфигурации slapd.conf.&lt;/p&gt;&lt;p&gt;После того как дополнительная схема загружена, можно создать запись о будущем пользователе, дополнительно указав атрибуты, взятые из сертификата пользователя:&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;CertificateClientCN&lt;/span&gt; - обычно имя, на которое выдан сертификат&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CertificateIssuer &lt;/span&gt;- CA, выдавший сертификат&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CertificateSerialNumber &lt;/span&gt;- серийный номер сертификата&lt;/p&gt;&lt;p&gt;По данным атрибутам будет осуществляться аутентификация с использованием сертификата.&lt;br /&gt;Получившаяся запись о пользователе будет иметь вид:&lt;/p&gt;&lt;pre&gt;dn: uid=ivpetr,ou=People,o=company,c=ru&lt;br /&gt;objectClass: inetOrgPerson&lt;br /&gt;objectClass: organizationalPerson&lt;br /&gt;objectClass: person&lt;br /&gt;objectClass: top&lt;br /&gt;objectClass: Certmap&lt;br /&gt;uid: ivpetr&lt;br /&gt;structuralObjectClass: inetOrgPerson&lt;br /&gt;CertificateClientCN:: Petrov Ivan&lt;br /&gt;CertificateIssuer: Office CA&lt;br /&gt;CertificateSerialNumber: 0D&lt;br /&gt;cn: Ivan&lt;br /&gt;mail: petrov@company.com&lt;br /&gt;telephoneNumber: +790234567&lt;br /&gt;userPassword:: e3NoYX0vbitrQTZZTzc3NnJTQ29Wczc4TGFQdCs1eTQ9&lt;/pre&gt;&lt;p&gt;После этого можно начинать сборку модуля:&lt;/p&gt;&lt;pre&gt;./configure --with-apxs=/usr/local/apache2/bin/apxs --with-ldap-dir=/usr --with-openssl=/usr&lt;br /&gt;make &amp;&amp;amp; make installl&lt;/pre&gt;&lt;p&gt;Пример конфигурации успешно собранного модуля&lt;/p&gt;&lt;pre&gt;&lt;location&gt;&lt;br /&gt;   SSLRequireSSL&lt;br /&gt;   SSLVerifyClient require&lt;br /&gt;   SSLVerifyDepth 5&lt;br /&gt;   SSLOptions +FakeBasicAuth +StrictRequire +StdEnvVars +ExportCertData &lt;br /&gt;   Order allow,deny&lt;br /&gt;   Allow from all&lt;br /&gt;   AllowOverride AuthConfig   &lt;br /&gt;   XLDAPAuthoritative on&lt;br /&gt;   XLDAPAuthServer localhost&lt;br /&gt;   XLDAPAuthBindDN "cn=manager,o=company,c=ru"&lt;br /&gt;   XLDAPAuthBindPw "mamamia"&lt;br /&gt;   XLDAPAuthSuffix "ou=People,o=company,c=ru"&lt;br /&gt;   XLDAPAuthFilter "(&amp;amp;(CertificateIssuer=%{SSL_CLIENT_I_DN_CN})(CertificateSerialNumber=%{SSL_CLIENT_M_SERIAL})(CertificateClientCN=%{SSL_CLIENT_S_DN_CN}))"&lt;br /&gt;   XLDAPAuthLogLevel info&lt;br /&gt;   XLDAPAuthRemoteUserAttr uid&lt;br /&gt;&lt;/location&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;На основании приведенной выше конфигурации Apache будет вести себя следующим образом:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;для аутентификации будет требоваться сертификат пользователя (глубина проверки 5)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;для поиска по LDAP серверу будет использоваться пользователь"cn=manager,o=company,c=ru" с паролем mamamia&lt;/li&gt;&lt;li&gt;поиск по LDAP директории будет осуществляться по фильтру - на основании атрибутов CertificateClientCN, CertificateIssuer, CertificateSerialNumber&lt;/li&gt;&lt;li&gt;переменная REMOTE_USER будет выставлена в данные, взятые из атрибута uid (в нашем случае, если пользователь Ivan Petrov пройдет аутентификацию, эта переменная будет выставлена в значение ivpetr)&lt;/li&gt;&lt;/ul&gt;Модуль успешно работает с пользовательскими данными на русском и литовском языках.&lt;br /&gt;Достаточно подробное описание работы и конфигурации модуля есть на его &lt;a href="http://www.urec.cnrs.fr/Distributions/modXLdapAuth/" target="_self"&gt;домашней странице&lt;/a&gt;. Единственное, что пока не понятно - почему до сих пор не существует серьезных разработок в области аутентификационных модулей на основе сертификатов, потому как в описанном модуле остаются недоработки и ошибки.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6478505894684236066?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6478505894684236066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6478505894684236066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6478505894684236066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6478505894684236066'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/05/modxldapauth.html' title='modXLdapAuth'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-344636135373321180</id><published>2006-11-16T15:59:00.000+02:00</published><updated>2007-05-02T16:32:39.475+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='webservice'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>jUDDI</title><content type='html'>jUDDI - это JAVA-реализация UDDI (Universal Description, Discovery, and Integration) сервиса для обслуживания вебслужб. Установку можно произодить по &lt;a href="http://wiki.apache.org/ws/Deploy_jUDDI_on_Tomcat_and_MySQL" target="_self"&gt;описанию&lt;/a&gt;, но оно достаточно сильно устарело и несколько отличается от текущего момента. Данная заметка описывает установку jUDDI 0.9rc4 на Apache Tomcat 5.5.15.&lt;br /&gt;&lt;p&gt;1. Базу данных (juddi_db) лучше подготовить своими средствами (phpmysqladmin), создать пользователя и дать ему необходимые права для работы с базой. Скрипт &lt;span style="font-style: italic;"&gt;juddi/sql/mysql/create_database.sql&lt;/span&gt; (удалить начальные строки про создание базы и добавление привилегий) можно использовать для создания каркаса будущей базы. Скрипт &lt;span style="font-style: italic;"&gt;insert_publishers.sql&lt;/span&gt; позволяет добавить первого пользователя для публикации веб-сервисов.&lt;/p&gt;&lt;p&gt;2. Распаковать &lt;span style="font-style: italic;"&gt;juddi.war&lt;/span&gt; в &lt;span style="font-style: italic;"&gt;$TOMCAT_HOME/webapps/juddi&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. В файл &lt;span style="font-style: italic;"&gt;$TOMCAT_HOME/webapps/juddi/WEB-INF/juddi-users.xml&lt;/span&gt; вставить пользователя, который был только что добавлен в базу скриптом insert_publishers.sql.&lt;/p&gt;&lt;p&gt;4. Файл &lt;span style="font-style: italic;"&gt;$TOMCAT_HOME/webapps/juddi/WEB-INF/juddi.properties&lt;/span&gt; привести в соответствие Вашим требованиям - задать переменные &lt;span style="font-style: italic;"&gt;juddi.operatorName, juddi.discoveryURL, juddi.operatorEmailAddress&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;5. Добавить в основной файл конфигурации &lt;span style="font-style: italic;"&gt;$TOMCAT_HOME/conf/server.xml&lt;/span&gt; описание контекста&lt;/p&gt;&lt;pre&gt;&lt;context path="/juddi" docbase="juddi" debug="5" reloadable="true" crosscontext="true"&gt;&lt;br /&gt; &lt;logger classname="org.apache.catalina.logger.FileLogger" prefix="localhost_juddiDB_log" suffix=".txt" timestamp="true" verbosity="4"&gt;&lt;br /&gt; &lt;Resource name="jdbc/juddiDB" auth="Container" type="javax.sql.DataSource"&lt;br /&gt;                driverClassName="com.mysql.jdbc.Driver"&lt;br /&gt;                url="jdbc:mysql://localhost:3306/juddi_db?autoReconnect=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=utf-8&amp;amp;mysqlEncoding=utf8"&lt;br /&gt;  username="username"&lt;br /&gt;                password="password"&lt;br /&gt;                maxActive="20"&lt;br /&gt;                maxIdle="3"&lt;br /&gt;                removeAbandoned="true"&lt;br /&gt;                maxWait="3000" /&gt;&lt;br /&gt;&lt;/context&gt;&lt;/pre&gt;&lt;p&gt;6. Протестировать всё ли в порядке по адресу http://localhost:8080/juddi/happyjuddi.jsp. Наверняка придется вручную устранять кое-какие зависимости, но это не так то сложно - найти jar-файл и положить его в &lt;span style="font-style: italic;"&gt;$TOMCAT_HOME/common/lib&lt;/span&gt;.&lt;/p&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://ws.apache.org/juddi" target="_self"&gt;jUDDI project&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-344636135373321180?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/344636135373321180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=344636135373321180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/344636135373321180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/344636135373321180'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/11/juddi.html' title='jUDDI'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-7102166976112551741</id><published>2006-11-14T16:16:00.000+02:00</published><updated>2007-05-02T16:17:33.562+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>Сборка mod_jk под Apache2</title><content type='html'>Иногда необходимо объединить усилия Apache и Tomcat - например аутентификацию пользователя проводить средствами Apache, и если аутентификация пройдена, показывать контент средствами Tomcat. Такую схему можно реализовать с помощью модуля mod_jk для Apache. &lt;a href="http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/" target="_self"&gt;Отсюда&lt;/a&gt; можно взять последнюю версию исходников модуля.&lt;pre&gt;wget tomcat-connectors-1.2.x-src.tar.gz&lt;br /&gt;tar zxf tomcat-connectors-1.2.x-src.tar.gz&lt;br /&gt;cd tomcat-connectors-1.2.x-src/native&lt;br /&gt;./configure --with-apxs=/usr/local/apache2/bin/apxs&lt;br /&gt;make &amp;&amp;amp; make install&lt;/pre&gt;&lt;p&gt;Модуль mod_jk.so появился в директории /usr/local/apache2/modules/&lt;/p&gt;&lt;p&gt;Необходимо его прописать в httpd.conf:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;LoadModule jk_module    modules/mod_jk.so&lt;/pre&gt;&lt;p&gt;Добавить описание модуля (mod_jk.conf):&lt;/p&gt;&lt;pre&gt;# The location where mod_jk will find the workers definitions&lt;br /&gt;JkWorkersFile   /usr/local/apache2/conf/workers.properties&lt;br /&gt;# The location where mod_jk is going to place its log file&lt;br /&gt;JkLogFile       /usr/local/apache2/logs/mod_jk.log&lt;br /&gt;JkLogLevel      info&lt;br /&gt;JkMount /pathtotomcat/* ajp13_worker&lt;/pre&gt;&lt;p&gt;В папке /tomcat-connectors-1.2.19-src/conf можно найти пример файла worker.properties.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-7102166976112551741?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/7102166976112551741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=7102166976112551741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7102166976112551741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7102166976112551741'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/11/modjk-apache2.html' title='Сборка mod_jk под Apache2'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-5320473718703396768</id><published>2006-11-13T16:17:00.000+02:00</published><updated>2007-05-02T16:18:25.421+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='snort'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><title type='text'>Smoothwall Express 2.0 + Snort (with MySQL)</title><content type='html'>Чтобы включить систему обнаружения атак (IDS) Snort в Smoothwall достаточно установить соответствующую галочку в web-интерфейсе, но такой путь не предоставит всех возможностей для работы с IDS Snort. Данное описание охватывает обновление версии Snort, добавление возможности вести события (alerts) в базе (mysql) и установку инструментария для работы с накопленной базой событий.&lt;br /&gt;&lt;br /&gt;Поэтому первым дело необходимо установить обновленную версию Snort для Smoothwall Express  2.0. Последнюю версию данного расширения можно взять &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=114890&amp;package_id=143454" target="_self"&gt;тут&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;1. Поместить скаченное расширение на Smoothwall Express можно с помощью scp:&lt;/p&gt;&lt;pre&gt;scp user@hostname:~/Snort-Update-2.x.x-MySQL.tgz /tmp&lt;/pre&gt;&lt;p&gt;2. Разархивируем содержимое архива и все станет на свои места&lt;/p&gt;&lt;pre&gt;&lt;span class="gensmall"&gt;tar zxvf ./Snort-Update-2.x.x&lt;/span&gt;-MySQL&lt;span class="gensmall"&gt;.tgz -C /&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;3. Переписать файл файл /usr/local/bin/snort новым файлом snort-mysql&lt;/p&gt;&lt;pre&gt;cp /usr/local/bin/snort-mysql /usr/local/bin/snort&lt;br /&gt;cp: overwrite `/usr/local/bin/snort'? y&lt;/pre&gt;&lt;p&gt;4. Подготовить базу данных Snort, для этого в &lt;a href="http://www.snort.org/dl/old/" target="_self"&gt;дистрибутиве&lt;/a&gt; Snort в директории schemas имеются скрипты для различных СУБД - для MySQL - create_mysql. Необходимо создать 2 базы данных - snort_db и snort_archive_db - первая непосредственно для отслеживания событий, вторая для архивирования старых событий (понадобится для работы с BASE).&lt;/p&gt;&lt;p&gt;5. Отредактировать /etc/snort.conf&lt;/p&gt;Закомментировать&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;# include /etc/snort/vars&lt;/span&gt;&lt;br /&gt;Задать переменные&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;var HOME_NET [192.168.1.0/24,212.122.83.100]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;var EXTERNAL_NET !$HOME_NET&lt;/span&gt;&lt;br /&gt;В препроцессор sfportscan можно добавить список хостов для игнорирования событий о сканировании портов сканерами домашней сети (HOME_NET)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ignore_scanners { 192.168.1.0/24 }&lt;/span&gt;&lt;br /&gt;Добавить output-описания:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;output alert_full: alert # Snort будет продолжать писать в /var/log/snort/alert&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;output database: log, mysql, user=user password=pass dbname=snort_db host=192.168.1.1 # и в БД&lt;/span&gt;&lt;br /&gt;&lt;p&gt;6. Проверить работоспособность новой версии Snort можно, запустив комманду:&lt;/p&gt;&lt;pre&gt;/usr/local/bin/snort -c /etc/snort.conf -D -u snort -g snort -d -e -z -i eth1&lt;/pre&gt;&lt;br /&gt;Если все в порядке в списке процессов (ps ax) одним из последних будет Snort.&lt;br /&gt;&lt;br /&gt;Скрипт &lt;span style="font-weight: bold;"&gt;/usr/local/bin/restartsnort&lt;/span&gt; не подходит для использования, поэтому его необходимо заменить на рабочий вариант.&lt;br /&gt;&lt;pre&gt;# cat &gt; /usr/local/bin/stopsnort&lt;br /&gt;#!/bin/bash&lt;br /&gt;kill -9 `cat /var/run/snort*.pid`&lt;br /&gt;[Ctrl + C]&lt;br /&gt;# cat &gt; /usr/local/bin/startsnort&lt;br /&gt;#!/bin/bash&lt;br /&gt;/usr/local/bin/snort -c /etc/snort.conf -D -u snort -g snort -d -e -z -i eth1&lt;br /&gt;[Ctrl + C]&lt;br /&gt;# cat &gt; /usr/local/bin/restartsnort&lt;br /&gt;#!/bin/bash&lt;br /&gt;/usr/local/bin/stopsnort; sleep 3; /usr/local/bin/startsnort&lt;br /&gt;[Ctrl + C]&lt;br /&gt;# chmod 755 /usr/local/bin/stopsnort&lt;br /&gt;# chmod 755 /usr/local/bin/startsnort&lt;br /&gt;# chmod 755 /usr/local/bin/restartsnort&lt;/pre&gt;&lt;p&gt;Если в конфигурационном файле snort.conf включен препроцессор perfmonitor, то необходимо добавить в ротацию журналов файл /var/log/snort/snort.stats - он достаточно быстро растет. Препроцессор rpc_decode можно выключить (закомментировать), если не используются RPC-службы.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Для удобной работы с накопленной базой событий существует система BASE (Basic Analysis and Security Engine). Это "реинкарнация" старой ACID-системы, которая в данный момент больше не развивается. BASE активно разрабатывается и всегда &lt;a href="http://sourceforge.net/projects/secureideas/" target="_self"&gt;доступен&lt;/a&gt; на SourceForge. Для работы с BASE нужно иметь несколько дополнительных средств:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;ADODB&lt;/li&gt;&lt;li&gt;GD&lt;/li&gt;&lt;li&gt;PEAR&lt;/li&gt;&lt;li&gt;Image_Graph &lt;/li&gt;&lt;/ul&gt;Если есть pear, ставится элементарно:&lt;br /&gt;&lt;pre&gt;pear install Image_Color&lt;br /&gt;pear install Image_Canvas-alpha&lt;br /&gt;pear install Image_Graph-alpha&lt;/pre&gt;&lt;p&gt;Если с pear сложности, достаточно скачать все эти пакеты с http://pear.php.net/, распаковать в одну директрию, например Image и эту директорию положить в такое место, куда по умолчанию заглядывает php.&lt;/p&gt;&lt;p&gt;Установка BASE проста&lt;/p&gt;&lt;pre&gt;# tar -xvzf base-x.x.x.tar.gz&lt;br /&gt;# cd base-x.x.x&lt;br /&gt;# cp base_conf.php.dist base_conf.php&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Редактируем base_conf.php:&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;$BASE_urlpath = “/base”;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$DBlib_path = "Путь до adodb";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$DBtype = "mysql";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$alert_dbname = "snort_db";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$alert_host = "localhost";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$alert_port = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$alert_user = "snort";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$alert_password = "new_password";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$archive_dbname = "snort_archive_db";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$archive_host = "localhost";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$archive_port = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$archive_user = "snort";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$archive_password = "new_password ";&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Аналогична установка для /base_archive:&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;$BASE_urlpath = “/base_archive”;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$DBlib_path = "Путь до adodb";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$DBtype = "mysql";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$alert_dbname = "snort_archive_db";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$alert_host = "localhost";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$alert_port = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$alert_user = "snort";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$alert_password = "new_password";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$archive_dbname = "snort_archive_db";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$archive_host = "localhost";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$archive_port = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$archive_user = "snort";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$archive_password = "new_password ";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь Base доступен по адресу http://hostname/base (архив http://hostname/base_archive).&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://community.smoothwall.org/forum/viewtopic.php?t=7138" target="_self"&gt;Snort 2.x.x (Plain, MySQL, PostgreSQL, ODBC, All)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.snort.org/docs/setup_guides/intl/russian/snort_base_suse92-ru.pdf" target="_self"&gt;Snort, Apache, PHP, MySQL, and BASE on SuSe Setup Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.samag.ru/art/10.2003/10.2003_04.pdf" target="_self"&gt;Detection of the Telecommunication Attacks: Theory and Practice, Snort&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.samag.ru/art/03.2004/03.2004_08.pdf" target="_self"&gt;The Three Snort Pigs. Snort Sensor Tuning Using SnortCenter&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.samag.ru/art/11.2003/11.2003_08.pdf" target="_self"&gt;More Suitable, Faster, Better: Snort + MySQL&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-5320473718703396768?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/5320473718703396768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=5320473718703396768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5320473718703396768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5320473718703396768'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/11/smoothwall-express-20-snort-with-mysql.html' title='Smoothwall Express 2.0 + Snort (with MySQL)'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-1089546882613899288</id><published>2006-11-08T16:00:00.000+02:00</published><updated>2007-05-02T16:33:18.506+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Отправка HTML-форматированного письма (с картинками)</title><content type='html'>Очень удобно сгенерированные HTML-отчеты (с картинками) читать из почтового клиента, но как оказалось, не так-то просто это сделать - одной командой тут не обойтись. На помощь приходит perl реализация - пакет &lt;a href="http://search.cpan.org/dist/MIME-Lite-HTML/" target="_self"&gt;MIME-Lite-HTML&lt;/a&gt; (&lt;a href="http://cpan.uwinnipeg.ca/htdocs/MIME-Lite-HTML/" target="_self"&gt;документация&lt;/a&gt;). Не беда, если в системе пакетов (например Debian) не существует такого пакета - достаточно взять tar.gz-архив с сайта разработчиков, распаковать его и поместить файл HTML.pm в директорию с остальными perl-библиотеками (для Debian директория будет /usr/share/perl5/MIME/Lite).&lt;br /&gt;&lt;br /&gt;Зависимости для MIME::Lite::HTML :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MIME::Lite&lt;/li&gt;&lt;li&gt;LWP::UserAgent&lt;/li&gt;&lt;li&gt;HTML::LinkExtor&lt;/li&gt;&lt;li&gt;URI::URL&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;Для устранения зависимостей в Debian необходимо установить пакеты libmime-lite-perl, libwww-perl и все их зависимости.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Как это работает:&lt;br /&gt;1. Программа-анализатор генерирует html-отчет с картинками в локальную (закрытую) директорию на сервере (например /var/stats).&lt;br /&gt;2. Приведенный ниже perl-скрипт генерирует на основе созданного htlm-отчета html-форматированное письмо, с сохранением всего содержимого (картинки), и отсылает готовое письмо по указанному адресу.&lt;br /&gt;&lt;br /&gt;Пример perl-скрипта:&lt;br /&gt;&lt;pre&gt;#!/usr/bin/perl -w&lt;br /&gt;use MIME::Lite::HTML;&lt;br /&gt;my $mailHTML = new MIME::Lite::HTML (&lt;br /&gt;From     =&gt; 'Charlie Root',&lt;br /&gt;To       =&gt; 'myemail@home.net',&lt;br /&gt;IncludeType =&gt; 'cid',&lt;br /&gt;Subject =&gt; 'Daily activity report',&lt;br /&gt;);&lt;br /&gt;$MIMEmail = $mailHTML-&gt;parse('file:///var/stats/index.htm');&lt;br /&gt;$MIMEmail-&gt;send;&lt;/pre&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-1089546882613899288?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/1089546882613899288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=1089546882613899288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1089546882613899288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/1089546882613899288'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/11/html.html' title='Отправка HTML-форматированного письма (с картинками)'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-7881622920611593761</id><published>2006-11-08T15:09:00.000+02:00</published><updated>2007-05-02T15:11:12.492+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><title type='text'>Как послать письмо с прикрепленным файлом из командной строки</title><content type='html'>Linux:&lt;br /&gt;&lt;pre&gt;metasend -b -s "$SUBJECT" -f $TXTFILE -m text/plain -n -f $ATTFILE -m image/png -t $MAILTO&lt;br /&gt;mpack -s "$SUBJECT" -c application/octet-stream $ATTFILE $MAILTO&lt;br /&gt;mutt -a $ATTFILE -s "$SUBJECT" $MAILTO &lt; $TXTFILE&lt;/pre&gt;&lt;p&gt;Подсмотрено &lt;a target="_self" href="http://www.opennet.ru/tips/sml/80.shtml"&gt;тут&lt;/a&gt;, опробовано самолично.&lt;/p&gt;&lt;p&gt;Ссылки:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.shelldorado.com/articles/mailattachments.html"&gt;Sending files as mail attachments&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-7881622920611593761?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/7881622920611593761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=7881622920611593761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7881622920611593761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7881622920611593761'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/11/blog-post.html' title='Как послать письмо с прикрепленным файлом из командной строки'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-2438761277267702979</id><published>2006-11-03T16:01:00.000+02:00</published><updated>2007-05-02T16:34:53.149+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><title type='text'>RdiffWeb</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;"&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;a target="_self" href="http://www.rdiffweb.org/" style="font-style: italic; font-weight: bold;"&gt;rdiffWeb&lt;/a&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;is a web interface for browsing and restoring from &lt;/span&gt;&lt;a rel="nofollow" title="http://www.nongnu.org/rdiff-backup/" class="external text" href="http://www.nongnu.org/rdiff-backup/" style="font-style: italic;"&gt;rdiff-backup&lt;/a&gt;&lt;span style="font-style: italic;"&gt; repositories"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;Отличная вещь для web-доступа к резервным копиям, сделанным утилитой rdiff-backup.&lt;/p&gt;&lt;p&gt;Зависимости:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Python&lt;/li&gt;&lt;li&gt;CherryPy v2.1&lt;/li&gt;&lt;li&gt;librsync&lt;/li&gt;&lt;li&gt;rdiff-backup&lt;/li&gt;&lt;li&gt;MySQLdb&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Инсталляция очень проста:&lt;/p&gt;&lt;pre&gt;tar zxf rdiffWeb-0.3.5.tar.gz&lt;br /&gt;$ cd rdiffWeb-0.3.5&lt;br /&gt;$ python setup.py build&lt;br /&gt;$ python setup.py install&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;После этого необходимо сконфигурировать и запустить сервис&lt;/p&gt;&lt;pre&gt;$ rdiff-web-config&lt;br /&gt;$ /etc/init.d/rdiff-web start&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;В процессе конфигурации необходимо выбрать хранилище настроек (file или mysql-база). Рекомендую mysql-базу, так как в таком случае кроме удобства появляется возможность автоматически просматривать директории от указанного корня, вместо того, чтобы вбивать их вручную. Запущенная служба по умолчанию работает на порту 8080.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-2438761277267702979?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/2438761277267702979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=2438761277267702979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2438761277267702979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/2438761277267702979'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/11/rdiffweb.html' title='RdiffWeb'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6962124474588339288</id><published>2006-10-31T16:02:00.000+02:00</published><updated>2007-05-02T16:35:30.813+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='error'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>ErrorDocument</title><content type='html'>Для того, чтобы обрабатывать все запросы на несуществующие страницы Apache имеет директиву &lt;span style="font-weight: bold;"&gt;ErrorDocument&lt;/span&gt;. Синтаксис прост:&lt;br /&gt;&lt;pre&gt;ErrorDocument 404 /page404.php&lt;/pre&gt;&lt;p&gt;Файл page404.php показывает возможные варианты применения данной функции&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;?&lt;br /&gt;echo "REDIRECT_ERROR_NOTES=".$REDIRECT_ERROR_NOTES."&lt;br /&gt;";&lt;br /&gt;echo "REDIRECT_QUERY_STRING=".$REDIRECT_QUERY_STRING."&lt;br /&gt;";&lt;br /&gt;echo "REDIRECT_REQUEST_METHOD=".$REDIRECT_REQUEST_METHOD."&lt;br /&gt;";&lt;br /&gt;echo "REDIRECT_STATUS=".$REDIRECT_STATUS."&lt;br /&gt;";&lt;br /&gt;echo "REDIRECT_UNIQUE_ID=".$REDIRECT_UNIQUE_ID."&lt;br /&gt;";&lt;br /&gt;echo "REDIRECT_URL=".$REDIRECT_URL."&lt;br /&gt;";&lt;br /&gt;?&gt;&lt;/pre&gt;&lt;p&gt;Для того, чтобы директива срабатывала для MSIE,  вывод  page404.php  должен быть не меньше 512 байт, иначе MSIE игнорирует сообщения, генерируемые сервером.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6962124474588339288?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6962124474588339288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6962124474588339288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6962124474588339288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6962124474588339288'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/10/errordocument.html' title='ErrorDocument'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-8182006090311248923</id><published>2006-10-24T15:12:00.000+02:00</published><updated>2007-05-02T15:13:03.621+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Создание резервной копии базы данных mysql</title><content type='html'>Если размер mysql-базы настолько велик, что сделать копию web-средствами не представляется возможным, то можно применить консольную утилиту mysqldump&lt;br /&gt;&lt;pre&gt;mysqldump -u &lt;span style="font-weight: bold;"&gt;username &lt;/span&gt;-&lt;span style="font-weight: bold;"&gt;ppassword database &lt;/span&gt;&gt; &lt;span style="font-weight: bold;"&gt;database.sql&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-8182006090311248923?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/8182006090311248923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=8182006090311248923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8182006090311248923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/8182006090311248923'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/10/mysql.html' title='Создание резервной копии базы данных mysql'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-5041781018722913822</id><published>2006-10-16T16:03:00.000+02:00</published><updated>2007-05-02T16:03:53.583+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><title type='text'>Spamassassin + MySQL</title><content type='html'>Система фильтрации нежелательной корреспонденции Spamassassin умеет хранить пользовательские настройки, а также динамические базы, применяемые в работе (auto-whitelist, bayes filter) в SQL-базе данных. Ниже приведена настройка Spamassassin 3.0.3 для работы в связке с MTA Exim 4.50 (Debian Sarge) на примере СУБД MySQL.&lt;br /&gt;&lt;br /&gt;1. Подготовить MySQL-базу&lt;br /&gt;&lt;br /&gt;mysql -u root -p&lt;br /&gt;Enter password:&lt;br /&gt;&lt;br /&gt;Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;Type 'help;' or '\h' for help. Type '\c' to clear the buffer.&lt;br /&gt;&lt;br /&gt;mysql&gt; CREATE DATABASE `spamassassin_db`;&lt;br /&gt;Query OK, 1 row affected (0.09 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'pasword';&lt;br /&gt;Query OK, 0 rows affected (0.07 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; GRANT ALL PRIVILEGES ON `spamassassin_db`.* TO 'username'@'localhost';&lt;br /&gt;Query OK, 0 rows affected (0.07 sec)&lt;br /&gt;&lt;br /&gt;2. Подготовить необходимые таблицы (схемы таблиц находятся в /usr/share/doc/spamassassin/sql)&lt;br /&gt;&lt;br /&gt;cd /usr/share/doc/spamassassin/sql&lt;br /&gt;# mysql -u username -p spamassassin_db &lt; userpref_mysql.sql&lt;br /&gt;# mysql -u username -p spamassassin_db &lt; bayes_mysql.sql&lt;br /&gt;# mysql -u username -p spamassassin_db &lt; awl_mysql.sql&lt;br /&gt;&lt;br /&gt;3. Осуществить импорт накопленных bayes-токенов&lt;br /&gt;&lt;br /&gt;su -m -c "sa-learn -D --backup &gt; /tmp/backup.txt" Debian-exim&lt;br /&gt;su -m -c "sa-learn --restore /tmp/backup.txt" Debian-exim&lt;br /&gt;&lt;br /&gt;4. Осуществить импорт awl-базы (понадобится скрипт convert_awl_dbm_to_sql из набора spamassassin tools)&lt;br /&gt;&lt;br /&gt;cd /usr/local/bin&lt;br /&gt;wget http://spamassassin.apache.org/full/3.0.x/dist/tools/convert_awl_dbm_to_sql&lt;br /&gt;chmod +x convert_awl_dbm_to_sql&lt;br /&gt;su -m -c "/usr/local/bin/convert_awl_dbm_to_sql --username Debian-exim --dsn DBI:mysql:spamassassin_db:localhost --dbautowhitelist /var/spool/exim4/.spamassassin/auto-whitelist --sqlusername username --sqlpassword password --ok" Debian-exim&lt;br /&gt;&lt;br /&gt;5. Добавить конфигурационный файл, описывающий необходимость использования mysql-базы для хранения пользовательских настроек (userpref), данных автоматического whitelist'а (awl) байесовского фильтра.&lt;br /&gt;&lt;br /&gt;cat &gt; /etc/mail/spamassassin/sql.cf&lt;br /&gt;&lt;br /&gt;user_scores_dsn DBI:mysql:spamassassin_db:localhost:3306&lt;br /&gt;user_scores_sql_username username&lt;br /&gt;user_scores_sql_password password&lt;br /&gt;auto_whitelist_factory          Mail::SpamAssassin::SQLBasedAddrList&lt;br /&gt;user_awl_dsn DBI:mysql:spamassassin_db:localhost:3306&lt;br /&gt;user_awl_sql_username username&lt;br /&gt;user_awl_sql_password password&lt;br /&gt;bayes_store_module              Mail::SpamAssassin::BayesStore::SQL&lt;br /&gt;bayes_sql_dsn DBI:mysql:spamassassin_db:localhost:3306&lt;br /&gt;bayes_sql_username username&lt;br /&gt;bayes_sql_password password&lt;br /&gt;&lt;br /&gt;6. Добавить в запускной скрипт опцию -q, при наличии которой spamassassin будет пытаться использовать sql-базы, описанные в конфигурационных файлах (на время тестирования можно добавить опцию -D (debug)).&lt;br /&gt;&lt;br /&gt;7. Перезапустить Spamassassin&lt;br /&gt;&lt;br /&gt;/etc/init.d/spamassassin restart&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;br /&gt;   1. Migrating our Debian Anti-Spam Anti-Virus Gateway Email Server's Bayes database to MySQL&lt;br /&gt;   2. Loading SpamAssassin User Preferences From An SQL Database&lt;br /&gt;   3. Spamassassin Wiki - UsingSQL&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-5041781018722913822?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/5041781018722913822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=5041781018722913822' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5041781018722913822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/5041781018722913822'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/10/spamassassin-mysql.html' title='Spamassassin + MySQL'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-297618855415897783</id><published>2006-10-11T15:01:00.000+02:00</published><updated>2007-05-02T15:06:08.858+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Как скачать сайт целиком из коммандной строки?</title><content type='html'>Наверное во всех современных дистрибутивах *nix имеется команда wget. С ее помощью прямо из коммандной строки возможно "утянуть" сайт со всем его содержимым.&lt;br /&gt;&lt;pre&gt;wget -r -k -p -N -l 1 &lt;a class="moz-txt-link-freetext" href="http://www.site.com/"&gt;http://www.site.com/&lt;/a&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;-r&lt;/span&gt; рекурсия&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;-k&lt;/span&gt; конвертация ссылок на полученных страницах&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;-p&lt;/span&gt; включать все содержимое страниц (картнки и т.п.)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;-N&lt;/span&gt; включить time-stamping. Понадобится, если потом нужно будет скачать только обновившиеся ресурсы&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;-l&lt;/span&gt; глубина ссылок(по умолчанию 5)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-297618855415897783?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/297618855415897783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=297618855415897783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/297618855415897783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/297618855415897783'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/05/blog-post_02.html' title='Как скачать сайт целиком из коммандной строки?'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6282454431020452572</id><published>2006-10-10T16:04:00.000+02:00</published><updated>2007-05-02T16:36:38.626+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>Roller Blog - Planet aggregator</title><content type='html'>Planet aggregator позволяет добавлять общую rss-ленту на сайте блогов, с возможностью подписки внешних ресурсов. Чтобы добавить Planet-таб на установленный Roller Blog, необходимо внести в основной конфигурационный файл roller.properties следующие изменения:&lt;br /&gt;&lt;pre&gt;planet.aggregator.enabled=true&lt;br /&gt;# обновлять список локальных блогов каждый день&lt;br /&gt;tasks.daily=\&lt;br /&gt;org.apache.roller.presentation.planet.SyncWebsitesTask&lt;br /&gt;# обновления ленты каждый час&lt;br /&gt;tasks.hourly=\&lt;br /&gt;org.apache.roller.presentation.planet.RefreshEntriesTask&lt;br /&gt;# tomcat-пользователь должен иметь права на запись в данную директорию&lt;br /&gt;planet.aggregator.cache.dir=/directory_of_aggregator_cache&lt;/pre&gt;&lt;p&gt;После внесенных изменений необходимо перегрузить tomcat&lt;/p&gt;&lt;pre&gt;/etc/init.d/tomcat restart&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6282454431020452572?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6282454431020452572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6282454431020452572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6282454431020452572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6282454431020452572'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/10/roller-blog-planet-aggregator.html' title='Roller Blog - Planet aggregator'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3728326077505181073</id><published>2006-10-09T16:04:00.000+02:00</published><updated>2007-05-02T16:37:06.433+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><title type='text'>Использование smarthost'а</title><content type='html'>Чтобы вся исходящая корреспонденция шла с одного сервера (smarthost) в настройку локальных MTA необходимо добавить:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Sendmail&lt;/span&gt;&lt;br /&gt;1. В /mail/sendmail.cf&lt;br /&gt;&lt;pre&gt;# "Smart" relay host (may be null)&lt;br /&gt;DSmy.smarthost.server&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Если вместо dns-имени сервера используется ip-адрес, его необходимо брать в квадратные скобки, например DS[10.10.10.1]&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. Перезапустить sendmail&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;/etc/rc.d/rc.sendmail restart&lt;/pre&gt;&lt;p&gt;1. Если используется mc-файл для конфигурирования sendmail'а, в /mail/sendmail.mc&lt;/p&gt;&lt;pre&gt;define(`SMART_HOST',`my.smarthost.server')&lt;br /&gt;m4 /etc/mail/sendmail.mc &gt; /etc/mail/sendmail.cf&lt;/pre&gt;&lt;p&gt;2. Перезапустить sendmail&lt;/p&gt;&lt;pre&gt;/etc/rc.d/rc.sendmail restart&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Exim (Debian)&lt;/span&gt;&lt;br /&gt;&lt;p&gt;1. В /etc/exim4/update-exim4.conf&lt;/p&gt;&lt;pre&gt;dc_smarthost='my.smarthost.server'&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;2. Перегенерировать конфигурацию&lt;/p&gt;&lt;pre&gt;update-exim4.conf&lt;/pre&gt;&lt;p&gt;3. Перезапустить exim&lt;/p&gt;&lt;pre&gt;/etc/init.d/exim4 restart&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3728326077505181073?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3728326077505181073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3728326077505181073' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3728326077505181073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3728326077505181073'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2007/10/smarthost.html' title='Использование smarthost&apos;а'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3918267744778568668</id><published>2006-10-09T15:25:00.000+02:00</published><updated>2007-05-02T15:26:35.267+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><title type='text'>spamassassin out of memory</title><content type='html'>При использовании Spamassassin 3.0.3 возможны проблемы с утечкой памяти - порождаемый процесс spamd может потребовать от системы столько памяти, сколько в наличии нет. А если spamd запущен с правами суперпользователя (по-умолчанию), система может начать завершать выполняющиеся приложения. Множество решений данной проблемы предлагает &lt;a target="_self" href="http://wiki.apache.org/spamassassin/OutOfMemoryProblems"&gt;Spamassassin Wiki - Out of memory problems&lt;/a&gt;.&lt;br /&gt;Большинство советов логичны и используются многими администраторами при первоначальной конфигурации сервиса spamd. Стоит обратить внимание на 2 &lt;span style="font-style: italic;"&gt;особенно важных&lt;/span&gt; совета:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Необходимо следить за базой auto-whitelist, потому как ее размер может серьезно вырасти за короткое время и это может в свою очередь влиять на использование ресурсов памяти процессом spamd. С помощью вспомогательного скрипта [&lt;a target="_self" href="http://blogs.ssc.lt/roller-ui/resources/rs/check_whitelist.pl"&gt;2.8Кб&lt;/a&gt;] можно своевременно просматривать и очищать нежелательное содержимое базы. &lt;/li&gt;&lt;li&gt;В запускном скрипте демона spamd должна присутствовать опция --max-conn-per-child=N, которая ограничивает "время жизни" порожденных (child) процессов.&lt;/li&gt;&lt;/ul&gt;В дополнение:&lt;br /&gt;По &lt;a target="_self" href="http://spamassassin.apache.org/full/3.0.x/dist/tools/"&gt;данному&lt;/a&gt; адресу  расположены скрипты-утилиты, помогающие при работе с spamassassin'ом. Например, sa-stats.pl[&lt;a target="_self" href="http://blogs.ssc.lt/roller-ui/resources/rs/sa-stats.pl"&gt;33Кб&lt;/a&gt;] - вывод статистики по работе демона spamd на основании данных maillog.&lt;br /&gt;&lt;br /&gt;Главное при использовании spamassassin'а при сканировании почтового трафика - не давать на проверку больших писем (&gt;300Kb). Если это условие выполнено, то с большой уверенностью можно сказать, что утечки памяти не случится.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3918267744778568668?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3918267744778568668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3918267744778568668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3918267744778568668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3918267744778568668'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/10/spamassassin-out-of-memory.html' title='spamassassin out of memory'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-3266292449782753351</id><published>2006-10-06T16:13:00.000+02:00</published><updated>2007-05-02T16:42:33.218+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='groupware'/><title type='text'>jLibrary</title><content type='html'>jLibrary - еще одна открытая система управления документами (dms), которая заслуживает внимания. Имеет клиентскую и серверную реализацию, причем базу документов можно хранить как на удаленном сервере, так и на рабочем компьютере (в этом случае серверная часть не нужна).&lt;br /&gt;Интерфейс для работы с репозитариями основан на eclipse, поэтому неважно какая операционная система используется, главное - наличие JavaRunTime (jlibrary целиком написана на Java)&lt;br /&gt;&lt;br /&gt;Установка серверной части плохо документирована, но всё же:&lt;br /&gt;1. Если есть работающий Tomcat, скачать WAR-архив, иначе можно взять jlibrary с уже подготовленным и настроенным Tomcat'ом. (данное описание охватывает процесс установки jlibrary из WAR-архива). Tomcat по-умолчанию автоматически разворачивает (deploy) war-архивы, помещенные в webapps-каталог. После того, как архив резвернут (в директорию webapps/jlibrary), лучше остановить Tomcat.&lt;br /&gt;&lt;br /&gt;2. Внести необходимые изменения в конфигурационные файлы&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;%TOMCAT_HOME%/webapps/jlibrary/WEB-INF/web.xml&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;init-param&gt;&lt;br /&gt;           &lt;param-name&gt;repository-home&lt;/param-name&gt;&lt;br /&gt;           &lt;param-value&gt;/var/jlibrary&lt;/param-value&gt;&lt;br /&gt;           &lt;!--директория будущего репозитария--&gt;&lt;br /&gt;&lt;/init-param&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span style="font-style: italic;"&gt;%TOMCAT_HOME%/webapps/jlibrary/server-config.wsdd&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;parameter name="attachments.Directory" value="/var/jlibrary/attachments"&gt;&lt;/pre&gt;&lt;p&gt;Создать файл &lt;span style="font-style: italic;"&gt;%TOMCAT_HOME%/conf/jaas.config&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;Jackrabbit {&lt;br /&gt;org.apache.jackrabbit.core.security.SimpleLoginModule required anonymousId="anonymous";&lt;br /&gt;};&lt;/pre&gt;&lt;p&gt;В запускной скрипт Tomcat добавить опции&lt;/p&gt;&lt;pre&gt;JAVA_OPTS="-Xms128m -Xmx512m -Djava.security.auth.login.config=%TOMCAT_HOME%/conf/jaas.config"&lt;/pre&gt;&lt;br /&gt;3. Запустить(перезапустить) Tomcat.&lt;br /&gt;&lt;br /&gt;Если не возникло критических ошибок при запуске серверной части, можно подсоединяться к серверу по адресу jlibrary://hostname:8080/jlibrary. (admin:changeme)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-3266292449782753351?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/3266292449782753351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=3266292449782753351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3266292449782753351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/3266292449782753351'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/10/jlibrary.html' title='jLibrary'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-7673384931933792126</id><published>2006-09-29T16:05:00.000+02:00</published><updated>2007-05-02T16:37:39.703+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firewall'/><title type='text'>Bering-uClibc LEAF (Linux Embedded Appliance Firewall)</title><content type='html'>Bering-uClibc LEAF отлично подходит в качестве бездискового роутера, всё необходимое ему для работы может уместиться на одной дискете.&lt;br /&gt;&lt;br /&gt;Лог:&lt;br /&gt;1. Подготовить загрузочную дискету, прежде отформатировав ее на 1.6Мб&lt;br /&gt;&lt;pre&gt;wget http://blogs.ssc.lt/resources/rs/Bering-uClibc_3.0-beta1_img_bering-uclibc-1680.bin&lt;br /&gt;fdformat /dev/fd0u1680&lt;br /&gt;dd if=Bering-uClibc_3.0-beta1_img_bering-uclibc-1680.bin of=/dev/fd0u1680&lt;br /&gt;mount -t msdos /dev/fd0u1680 /mnt (для просмотра содержимого полученной загрузочной дискеты)&lt;/pre&gt;&lt;p&gt;2. Включить необходимые модули для работы установленных устройств (например, ethernet-интерфейс). Bearing-uClibc хорошо укомплектован набором модулей [&lt;a target="_self" href="http://blogs.ssc.lt/roller-ui/resources/rs/Bering-uClibc_modules_2.4.33.tar.gz"&gt;8Мб&lt;/a&gt;], которые можно включать в загрузочную дискету поместив желаемый модуль в /lib/modules и прописав его впоследствие в /etc/modules. Все модули по умолчанию закомментированы. Если необходимо, например, заставить работать ethernet-интерфейс rtl8139d, то в файле /etc/modules нужно расскомментировать строки:&lt;/p&gt;&lt;pre&gt;crc&lt;br /&gt;mil&lt;br /&gt;8139too&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;3.  После успешной установки модулей устройств можно переходить к установке дополнительных/удалению ненужных пакетов. Например, пакет Dnsmasq полностью заменяет  пакет dchpdc, а если не нужен доступ к будущему маршрутизатору через ssh, то можно смело удалять dropbear. Чтобы удалить/добавить пакет необходимо удалить/добавить на дискету файл пакета и удалить/добавить имя пакета в основной файл загрузки - leaf.cfg. Если не хватает места на одной дискете (например, для установки snmp-сервиса[&lt;a target="_self" href="http://blogs.ssc.lt/roller-ui/resources/rs/snmp.zip"&gt;695Кб&lt;/a&gt;]), можно воспользоваться вторым дисководом и второй дискетой. В итоге может получиться следующий leaf.cfg файл:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;LRP="root config etc modules iptables shorwall ulogd dnsmasq libm libsnmp netsnmpd snmpmibs"&lt;br /&gt;PKGPATH="/dev/fd0u1680:msdos /dev/fd1u1440:msdos"&lt;br /&gt;syst_size=6M&lt;br /&gt;log_size=2M&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;4. Командой lrcfg можно внести изменения в настройки сети и подготовить конфигурационные файлы для работы всех требуемых пакетов. После внесения изменений их необходимо зафиксировать в основном меню lrcfg - команды s,m.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-7673384931933792126?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/7673384931933792126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=7673384931933792126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7673384931933792126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/7673384931933792126'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/09/bering-uclibc-leaf-linux-embedded.html' title='Bering-uClibc LEAF (Linux Embedded Appliance Firewall)'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-6365762057125511412</id><published>2006-09-21T16:07:00.000+03:00</published><updated>2007-05-02T16:38:12.121+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Subversion authorization</title><content type='html'>Настройка авторизации доступа в svn очень проста - достаточно указать директивой AuthzSVNAccessFile путь до файла конфигурации доступа.&lt;br /&gt;&lt;pre&gt;&lt;location&gt;&lt;br /&gt; DAV svn&lt;br /&gt; # Путь до репозитария&lt;br /&gt; SVNPath /var/lib/svn&lt;br /&gt; # Включение обычной аутентификации&lt;br /&gt; AuthType Basic&lt;br /&gt; AuthName "Subversion Repository"&lt;br /&gt; AuthUserFile /etc/apache2/dav_svn.passwd&lt;br /&gt; &lt;span style="font-weight: bold;"&gt;AuthzSVNAccessFile /etc/apache2/dav_svn.authz&lt;/span&gt;&lt;br /&gt; # Если раскомментировать строки Limit, то анонимные пользователи&lt;br /&gt; # получат доступ на чтение к репозитарию, иначе только&lt;br /&gt; # аутентифицированные пользователи имеют доступ&lt;br /&gt; #&lt;limitexcept&gt;&lt;br /&gt;   Require valid-user&lt;br /&gt; #&lt;/limitexcept&gt;&lt;br /&gt;&lt;/location&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Сам файл dav_svn.authz имеет интуитивно понятный формат:&lt;/p&gt;&lt;pre&gt;[groups]&lt;br /&gt;harry_and_sally = harry,sally&lt;br /&gt;&lt;br /&gt;[/]&lt;br /&gt;harry = rw&lt;br /&gt;* =&lt;br /&gt;&lt;br /&gt;[/baz/fuz]&lt;br /&gt;@harry_and_sally = rw&lt;br /&gt;* = r&lt;br /&gt;&lt;br /&gt;[/bar/fox]&lt;br /&gt;molly = rw&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Доступ к подпапкам наследуется, поэтому доступ к директории /bar/fox имеет не только molly, но и harry. Если не указано никакого права доступа (ни r, ни rw), значит доступ к директории закрыт указанным пользователям. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-6365762057125511412?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/6365762057125511412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=6365762057125511412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6365762057125511412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/6365762057125511412'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/09/subversion-authorization.html' title='Subversion authorization'/><author><name>Roman Sozinov</name><uri>http://www.blogger.com/profile/12173634909193235913</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-774920690559205587.post-788105140001544472</id><published>2006-09-20T15:54:00.000+03:00</published><updated>2007-05-02T16:30:50.642+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>SYN flood</title><content type='html'>&lt;span style="font-style: italic;"&gt;Очень популярная DoS атака заключается в посылке большого числа SYN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;пакетов на ваш сервер. При этом установка TCP связи не доводится до&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;конца. Очередь полуоткрытых запросов соединений быстро заполняется,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;что мешает установке нормальных соединений. Так как соединение не&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;должно быть обязательно завершено, такая атака не требует больших&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ресурсов от атакующей машины, поэтому её легко реализовать и&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;контролировать.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Если параметр tcp_syncookies установлен (доступен только когда ядро&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;собрано с CONFIG_SYNCOOKIES), тогда ядро обрабатывает SYN пакеты TCP в&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;обычном режиме до тех пор, пока очередь не заполнится. После&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;заполнения очереди включается механизм SYN cookies.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SYN cookies вообще не использует очередь SYN. Вместо этого ядро&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;отвечает на каждый SYN пакет, как обычно SYN|ACK, но туда будет&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;включено специально сгенерированное число на основе IP адресов и&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;портов источника и получателя, а также времени посылки пакета.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Атакующий никогда не получит эти пакеты, а поэтому и не ответит на&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;них. При нормальном соединении, будет послан третий пакет, содержащий&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;число, а сервер проверит был ли это ответ на SYN cookie и, если да, то&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;разрешит соединение даже в том случае, если в очереди SYN нет&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;соответствующей записи.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Включение механизма SYN cookies является очень простым способом борьбы&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;против атаки SYN флудом. При этом немного больше загружается процессор&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;из-за необходимости создавать и сверять cookie. Так как альтернативным&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;решением является отклонять все запросы на соединение, SYN cookies&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;являются хорошим выбором. &lt;/span&gt;&lt;br /&gt;(скопировано с&lt;br /&gt;&lt;br /&gt;Защита - включить tcp_syncookies&lt;br /&gt;&lt;pre&gt;echo "1" &gt; /proc/sys/net/ipv4/tcp_syncookies&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Ядро 2.2 не имеет данной возможности, поэтому единственный выход - переходить на 2.4 или выше.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Литература:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a target="_self" href="http://www.opennet.ru/base/sec/security_proc.txt.html"&gt;Обзор файлов /proc имеющих отношение к работе Firewall в Linux&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://cr.yp.to/syncookies.html"&gt;SYN cookies&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.redhat.com/archives/fedora-devel-list/2005-January/msg00447.html"&gt;Enable tcp_syncookies by default&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_self" href="http://www.cert.org/advisories/CA-1996-21.html"&gt;CERT® Advisory CA-1996-21 TCP SYN Flooding and IP Spoofing Attacks&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/774920690559205587-788105140001544472?l=blog.sozinov.eu' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sozinov.eu/feeds/788105140001544472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=774920690559205587&amp;postID=788105140001544472' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/788105140001544472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/774920690559205587/posts/default/788105140001544472'/><link rel='alternate' type='text/html' href='http://blog.sozinov.eu/2006/09/syn-flood.html' title='SYN flood'/><author><name>Roman Sozi
