среда, 29 октября 2008 г.

Установка openoffice 3.0 rc1

Установка опен оффис 3
скачиваем архив
Установка
распаковать архив
в терминале
Код:
cd /папка с дебками/
в моем случае
cd /home/michael/install/OOO300_m9_native_packed-1_ru.9358/DEBS
см. скриншот в начале темы
sudo dpkg -i *
Пакет из папки desktop-integration интегрирует значки
Перед установкой удалить старую версию, иначе desktop-integration выдает ошибку

вторник, 28 октября 2008 г.

Установка DokuWiki

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

Сайт системы: www.dokuwiki.org

Последовательность установки:

  1. Скачиваем архив с системой на странице http://www.splitbrain.org/projects/dokuwiki в разделе «Download» (на начало сентября 2008 последняя версия: dokuwiki-2008-05-05.tgz)
  2. распаковываем архив у себя на компьютере
  3. подключаемся к своему сайта по FTP и закачиваем содержимое архива на сайт
  4. заходим по урлу: www.ваш_сайт.ru/install.php, выбираем в правом верхнем углу язык сайта (если основная версия сайта будет на русском - то «ru»), вводим название сайта, логин, пароль, e-mail, выбираем тип доступа и нажимаем кнопку
  5. удаляем по FTP файл install.php с сервера
  6. добавили файл robots.txt для поисковых машин, в нем запретили индексацию сайта (что бы потом не заниматься удалением страниц тестового сайта из индекса), содержание robots.txt:
User-Agent: *
Disallow: *

Установка завершена.

Более подробное описание установки на русском языке: http://www.dokuwiki.org/ru:install (там же есть описание и на других языках). Важная страница «Безопасность» - http://www.dokuwiki.org/ru:security.

Настройка DokuWiki:

  1. Заходим в админскую панель по кнопке «управление»
  2. Для начала в разделе «Настройки Вики» внесем нужные нам данные и поставим необходимые галочки
  3. Так как, в нашем случае в параметре «Транслитерация в именах страниц» мы указали «полная транслитерация», а в параметре «Удобочитаемые адреса (URL)» значение » .htaccess », то нам нужно залить на сервер исправленный файл ».htaccess»
  4. теперь установим нужные нам плагины (расширения, дополнения) в админском разделе «Управление плагинами»:
    • contact - форма отправки сообщенеия с сайта
    • gallery - для создание галереи рисунков и картин
    • discussion - организация дисскуссий на страницах сайта (мы решили отказаться от отзывов, гостевой книги и тому подобного - что бы не отнимало время на модерацию)
  5. в админском разделе «Настройки Вики» указали параметры для плагинов
  6. настроили доступ для пользователей в разделе «Управление списками контроля доступа» - группе » @ALL » поставили права только на чтение

На этом настройку закончили.

Прикручиваем дизайн

Пошли по наиболее простому пути: взять стандартный дизайн и перерисовать главную картинку. Для этого:

  1. Выбрали дизайн на странице: http://www.dokuwiki.org/Template
  2. скачали архив, распаковали и залили в папку /lib/tpl/
  3. Нарисовали верхнюю картинку, иконку и заменил их на сервере (немного еще пришлось поправить main.php)

Структура сайта

Структуру для информационную части почти полностью срисовали со старого сайта. Получились разделы:

  • Рисунки
  • Тексты
  • Об авторе
  • Контакты

Заполнение информацией

В разделы «Рисунки» и «тексты» перенесли информацию со старого сайта.

Раздел «Контакты» - заполнинили: e-mail, ICQ, тел. и форма отправки сообщиния с сайта

С первой страницей пока непонятно что делать, по-этому просто бросили две картинки и содержание сайта

источник

Установка LAMP (Linux, Apache, MySQL и PHP)

Как видно из названия, сегодня я буду ставить LAMP (Linux, Apache, MySQL и PHP) на моей Kubuntu системе. Первый из списка, т.е. сам Linux, уже есть. Остались три последних. Кстати, есть специальный вариант Ubuntu LAMP Server, с помощью которого все это устанавливается само. Но мне этот вариант не подходит. У меня есть обычный диск и я хочу на домашний компьютер поставить web-сервер лишь в целях разработки некоторых приложений.




Apache2

Для установки я выбрал именно Apache2. Я его использовал раньше, поэтому ставлю и сейчас. Читал, что с ним меньше проблем и что он лучше работает. Серьезно не разбирался.
Ставим:

sudo apt-get install apache2

Дополнительно ставятся следующие пакеты: apache2-common apache2-mpm-worker apache2-utils libapr0 ssl-cert.
Все. Сервер установили.

PHP5

Ставим последню версию PHP5. Не советую ставить 4-ю.

sudo apt-get install php5

Само ставит нужные дополнительные пакеты: apache2-mpm-prefork libapache2-mod-php5 php5-common. Просто замечательно.

Перегружаем Apache:

sudo /etc/init.d/apache2 restart

и провереям работу PHP.
Для этого, в директории /var/www/, создадим файл info.php :

sudo vi /var/www/info.php

со следующим содержимым:

phpinfo();
?>


Теперь в браузере набираем http://localhost/info.php. Вы должны увидеть следующее:






















MySQL


Ставим MySQL сервер:

sudo apt-get install mysql-server

Ставится MySQL сервер и некоторые доплнительные модули. В общей сумме с инета потянет больше 30 метров.
Если вы ставите MySQL сервер для доступа только со своей машины, то это все. Если же нет, то идем в файл /etc/mysql/my.cnf:

sudo vi /etc/mysql/my.cnf

находим следующую строчку bind-address = 127.0.0.1 и комментируем ее (ставим ; перед строчкой). Таким образом, мы разрешили доступ извне.

Теперь ставим дополнительные модули для связки Apache, PHP и MySQL:

sudo apt-get install libapache2-mod-auth-mysql php5-mysql

Для удобного создания баз данных, пригодится программа phpmyadmin. Поэтому ставим и ее:

sudo apt-get install phpmyadmin

Перегружаем Apache2:

sudo /etc/init.d/apache2 restart

Проверяем работу всей связки. Для этого просто перезагружаем в браузере страницу http://localhost/info.php и ищем следующую секцию с MySQL:




















Теперь меняем стандартный пароль для пользователя root на безопасный:

mysqladmin -u root password new-password

(Внимание: это никак не связано с рутом самой Linux системы, поэтому пароль выбирайте другой).

Перегружаем MySQL:

sudo /etc/init.d/mysql restart

Теперь можно проверить работу MySQL. Набираем в консоли следующее:

mysql -u root -p

жмем Enter и вводим пароль. Если все получилось, то вы увидите следующее приглашение:


serhiy@kubuntu:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 24 to server version: 5.0.22-Debian_0ubuntu6.06.2-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>



Все, жмем CTRL + d. Создание базы и таблиц я рассматривать здесь не буду.

Проверяем работу phpmyadmin. Для этого в браузере набираем http://localhost/phpmyadmin/. Загрузится страничка, в которой вы должны ввести пароль для пользователя root (который мы создали выше).
Если все прошло успешно, вы увидите приблизительно такое:















Поздравляю, вы все установили.

Источник

понедельник, 27 октября 2008 г.

Притча “Есть ли жизнь после родов?”

Как-то раз, в животе у одной беременной женщины росли и развивались два эмбриона. Одного звали Маленький Верующий, другого - Маленький Скептик.

И вот однажды, Скептик спросил: “Послушай, а ты веришь в жизнь после родов?”

Верующий: Естественно, я верю в жизнь после родов! Это же ясно - жизнь после родов продолжается. Наша жизнь здесь только для того, чтобы мы выросли и были готовы к жизни после родов, чтобы стали достаточно сильными перед тем, что нас ожидает.

Скептик: Да? По-моему, всё это глупость! На самом деле, никакой жизни после родов не существует! Ты хотя бы можешь представить, как бы вообще могла выглядеть эта жизнь?

В: Я не знаю это точно, но определённо будет больше света, чем здесь. А возможно мы будем есть ртом, и бегать, и…

С: Это полная бессмыслица. Бегать вообще невозможно, а есть ртом - полностью смешное предположение. Мы имеем пуповину, которая нас кормит. Без этого невозможно даже представить, чтобы существовала жизнь после родов. Пуповина - это наша жизнь! К тому же, ты заметил, что уже сейчас пуповина становится нам всё более короткой?

В: Нет! Это действительно возможно. Просто весь окружающий мир будет полностью другой, - не то, к чему мы привыкли.

С: Но ведь ещё никто и никогда после родов не возвратился! Все знают, что жизнь кончается родами! А вообще жизнь - это большое страдание в темноте!

В: Действительно, я точно не знаю, как будет выглядеть жизнь после родов. Но в любом случае мы увидим нашу Мамочку, и она о нас позаботится. Это точно.

С: Маму?!? Ты - веришь в Маму? Ха-ха! А где бы Она могла быть?

В: Но ведь Она везде возле нас. Мы находимся и живём в Ней. Без Неё мы не можем существовать.

С: Это всё исключительная глупость. От этой мамы я не видел и кусочка, мне также ясно, что она в принципе не может существовать.

Верующий: Иногда, когда мы очень спокойны, то можем услышать, как Она поёт или почувствовать, как Она поглаживает наш Мир.

И я твёрдо верю, что наша действительная жизнь продолжится потом!

Автор не известен. =(

источник

суббота, 25 октября 2008 г.

Fix The VirtualBox “Spawning Session” Issue

After installing some Ubuntu updates yesterday, I found that I couldn’t start any virtual machines in VirtualBox2 anymore. I would get a “spawning session” dialog which would never close.

Spawning session...

Open a terminal. If you haven’t already forced VirtualBox to quit, kill it:
killall VirtualBox

Run this command to automatically recompile and start the VirtualBox kernel module:
sudo /etc/init.d/vboxdrv setup

After a few seconds you should have some output like this:
* Stopping VirtualBox kernel module * done.
* Recompiling VirtualBox kernel module * done.
* Starting VirtualBox kernel module * done.

That’s it; restart VirtualBox and start your virtual machine. You may need to repeat this process the next time there is a major kernel update in Ubuntu.

источник

понедельник, 20 октября 2008 г.

Постоянный адрес для динамического подключения


Интернет у меня в квартире раздает модем, имеющий четыре порта для подключения кабелем и плюс вайфай. Все имеют разные внешние айпи-адреса. Так уж получилось, что один компьютер (слабенький PIII с xubuntu 8.04 на борту) подключен по вайфаю и когда возникает необходимость подключиться к нему нужно ходить и запоминать :) адрес. И вот, наконец, у меня "дошли руки" исправить это.

Я иду на DynDNS.com и регистрируюсь. Затем создаю себе удобный и запоминающийся адрес (вида remote-PC.homeip.net). Затем даю команду в терминале на установку пакета ddclient:

sudo aptitude install ddclient

Отвечаю на вопросы. (На третий и последний, непонятый мною вопрос, следует сказать - web)
Теперь нужно внести коррективы в конфигурационный файл:

sudo nano /etc/ddclient.conf

Должно выглядеть приблизительно так:

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

pid=/var/run/ddclient.pid
protocol=dyndns2
use=web
server=members.dyndns.org
login=login_na_DynDNS
password=moj_parol
remote-PC.homeip.ne

Затем запуск сервиса:

sudo /etc/init.d/ddclient start

все!

Надоело. Каждый раз ходить в другую комнату, чтобы увидеть какой адрес у компьютера, и подключиться к нему через ssh - это рано или поздно достанет любого :)

Установка и настройка ftp-сервера (ubuntu & proftpd)

Задача: установить фтп-сервер и настроить доступ из интернета.

ОС - ubuntu-sever 8.04 (только консоль).

Устанавливаю пакет proftpd:

sudo aptitude install proftpd

Перед установке потянулись еще три зависимости, согласился.
При установке пакет спрашивает о способе запуска: самостоятельно или через inetd?

Я выбираю "самостоятельно".

Затем открываю файл /etc/shells:

sudo nano /etc/shells

добавляю в него одну строку:

/bin/false

И создаю в /HOME каталоге папку FTP-shared:

sudo mkdir /home/FTP-shared

После этого создаю пользователя с именем userftp:

sudo useradd userftp -p parol -d /home/FTP-shared -s /bin/false

где вместо "parol" - ввожу слово или фразу в качестве пароля :)

В папке FTP-shared создаю две дополнительные папки:

sudo mkdir /home/FTP-shared/public
sudo mkdir /home/FTP-shared/upload

и даю нужные права созданным папкам:

sudo chmod 755 /home/FTP-shared
sudo chmod 755 /home/FTP-shared/public
sudo chmod 777 /home/FTP-shared/upload

После этого переименовываю имеющийся конфигурационный файл proftpd.conf и создаю новый:

sudo mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.old
sudo nano /etc/proftpd/proftpd.conf

добавив в него следующие строки:

# отключаю протокол
UseIPv6 off

AllowOverwrite on
AuthAliasOnly on

# Здесь присваивается alias пользователю (я присвоил имя donet)
UserAlias donet userftp

ServerName "server"
ServerType standalone
DeferWelcome on

MultilineRFC2228 on
DefaultServer on
ShowSymlinks off

TimeoutNoTransfer 600
TimeoutStalled 100
TimeoutIdle 2200

DisplayChdir .message
ListOptions "-l"

RequireValidShell off

TimeoutLogin 20

RootLogin off

# пути для логов
ExtendedLog /var/log/ftp.log
TransferLog /var/log/xferlog
SystemLog /var/log/syslog.log

#DenyFilter \*.*/

# Я не использую файл /etc/ftpusers (здесь вводим имена пользователей, для ограничения их доступа)
UseFtpUsers off

# Allow to restart a download
AllowStoreRestart on

# Стандартный порт для фтп 21, для повышения безопасности можно выбрать другой (произвольный):
Port 21

# повышение безопасности
MaxInstances 8

# пользователь и группа
User nobody
Group nogroup

# Umask 022 ограничение на создание файлов и папок
Umask 022 022

PersistentPasswd off

MaxClients 8 "Достигнут предел на количество клиентов"
MaxClientsPerHost 8 "Достигнут предел на количество клиентов с Вашего хоста"
MaxClientsPerUser 8 "Достигнут предел на количество подключений (%m)"
MaxHostsPerUser 8 "Больше нельзя"

# вывод приветствия после успешного входа
AccessGrantMsg "Добро пожаловать!!!"
# идентификация
ServerIdent on "Мой домашний сервер"

# делаем /home/FTP-shared папку домашней
DefaultRoot /home/FTP-shared

# запрещаем выходить пользователям за пределы домашней папки (строго рекомендуется)
DefaultRoot ~

MaxLoginAttempts 5 "Количество попыток входа исчерпано - придется подождать, ничего не поделаешь, безопасность превыше всего"

#VALID LOGINS

AllowUser userftp
DenyALL



Umask 022 022
AllowOverwrite off

DenyAll




Umask 022 022
AllowOverwrite off

DenyAll



/home/FTP-shared/upload/>
Umask 022 022
AllowOverwrite on

DenyAll



AllowAll



# # анонимный доступ
#
# User userftp
# Group nogroup
# UserAlias anonymous userftp
# MaxClients 8 "Извините, максимум %m пользователей - попробуйте подключиться позже"
# DisplayChdir .message
#
#
#
# DenyAll
#

#

#

Все, настройка закончена, я буду иметь доступ к фтп-серверу с параметрами доступа:
user (пользователь): donet
password (пароль): parol (тот, что я присвоил для userftp)

Если нужно сделать анонимный доступ, следует закомментировать обе секции для donet и раскомментировать секцию для анонима

Теперь осталось только запустить сервер с измененными параметрами (он уже запущен, но с параметрами по умолчанию):

sudo /etc/init.d/proftpd restart

Для проверки синтаксиса созданного конфиг-файла можно выполнить

sudo proftpd -td5

Что бы узнать, кто подключен к фтп-серверу в данный момент использую команду ftptop (клавиша t меняет отображение, q - выход), можно также использовать команду ftpwho

В итоге я получил фтп-сервер с двумя папками, одна из них (public) доступна только на чтение, а другая (upload) - на запись

Полезные советы:

Если нужно подключить какую-либо папку или партицию к фтп-серверу (например, проверить работу только что созданного фтп-сервера) без редактирования конфига пригодится команда:

sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/FTP-shared/public

или с доступом на запись:

sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/FTP-shared/upload

Таким образом можно в срочном порядке временно подключить папку или диск и потом отмонтировать командой:

sudo umount /home/FTP-shared/public

или:

sudo umount /home/FTP-shared/upload

Для постоянного доступа к нужным папкам я подключил их посредством fstab.
Рекомендую предварительно сделать бэкап файла fstab:

sudo cp /etc/fstab /etc/fstab.old

Открыть файл /etc/fstab

sudo nano /etc/fstab

и добавить нужные пути:

/здесь/путь/папки/что/я/хочу/расшарить /home/FTP-shared/public none bind 0 0

Теперь даже при рестарте сервера (компьютера) информация будет доступна, но только в локальной сети. Это потому, что моя локальная сеть находится за роутером. Что бы увидеть фтп-сервер из интернета нужно дать ему внешний ip-адрес. Для этого я просто открываю нужный порт (в моем случае 21) для локального адреса (вида 192.168.xxx.xxx) на котором висит мой сервер, для доступа извне.

Теперь нужно дать моему внешнему динамическому айпи-адресу осмысленный и постоянный адрес. Я иду на DynDNS.com и регистрируюсь. Затем создаю себе удобный и запоминающийся адрес (вида moj-server.homeip.net). Дальше - проще. Вношу регистрационные данные с сервиса DynDNS в настройки роутера1 (этот пункт меню называется у меня Dynamic DNS) и ... все. Работает!!!
Теперь только осталось поменять ServerName "server" в файле proftpd.conf на ServerName "moj-server.homeip.net" и рестартануть фтп-сервер.

источник

День рождения Linux.

Линус Торвальдс представил POSIX-совместимую ОС для персональных компьютеров



25 августа сообщество open-source традиционно отмечает день рождения операционной системы Linux. В 1991 году финский студент Линус Торвальдс закончил работу над самой первой версией ядра Linux и портировал на созданную им операционную систему командный интерпретатор bash и компилятор gcc. Отсчет возраста Linux ведется со дня, когда Линус сообщил о своем успехе в почтовую конференцию, посвященную учебной операционной системе minix, ставшей прототипом Linux.

Интересно, что в том самом письме Торвальдс говорит о том, что Linux совершенно не приспособлен к тому, чтобы быть портированным на платформы, отличные от 80386, что его код слишком привязан к железу и что вряд ли Linux когда-нибудь будет поддерживать контроллер жесткого диска отличный от AT.

На сегодняшний день Linux используется на огромном количестве платформ, в том числе и на встроенных и портативных устройствах. Cуществуют сотни дистрибутивов Linux, исходный код ядра насчитывает миллионы строк. На миллионы же идет счет пользователей Linux и людей, принимающих участие в его разработке. Linux прочно держит свои позиции, как серверная система и постепенно продвигается на рынок офисных и домашних операционных систем. Нельзя не упомянуть и об успехах Linux в образовательном секторе.

Стоит отметить, что огромную роль в популяризации Linux играют такие проекты, как KDE, Gnome, OpenOffice.org, Apache, MySql, Mozilla и многие другие приложения с открытым исходным кодом. На сегодняшний день в разработку Linux вкладывают немалые средства многие корпорации. В их числе - IBM, Sun, Hewlett-Packard. Можно с уверенностью сказать, что за эти годы Linux сделал гигантский рывок вперед.

Источник: http://www.securitylab.ru/informer/240629.php

воскресенье, 19 октября 2008 г.

Система фильтрации интернет траффика на основе squidGuard + Apache + Squid + Berkeley DB

Целью данных записок является создание простой в управлении и, в то же время, гибкой в настройке системы фильтрации интернет трафика.

Вы можете спросить зачем нам нужны все эти сложности? Как любой другой ресурс интернет траффик имет обыкновение заканчиваться. Да и канал от нас к провайдеру не резиновый, Отсюда вывод - необходимо тем или иным образом ограничить аппетиты пользователей. С другой стороны если начальство поймает кого-то из сотрудников за просмотром порносайтов или скачиванием mp3, нагоняй получит не только провинившийся. Администратор будет виноват в том, что позволяет пользователям тратить оплачиваемый организацией трафик на всякую ерунду. В тоже время стоит помнить что разные организации могут иметь различные правила пользования интернет. Довольно часто в списке запретов можно встретить не только эротику, но и сайты анекдотов, форумы и чаты. Например бесплатные почтовые сайты могут быть запрещены из сображения секретности. Одновремнно можно запретить пользователям скачивать из наружной сети исполняемые файлы, видеофайлы и музыку. Запрещение скачивания исполняемых файлов существено снижает опасность вирусного заражения сети и возможно позволит сэкономить на антивирусах.

В тоже время перед нами все еще стоит задача экономии траффика. Существенно снизить его потребление поможет запрещение бесполезной для нас баннерной рекламы. Вы могли бы спросить что в баннерах плохого? Squid - кеширующий прокси соответственно скачиваемые файлы ложатся в локальный кэш. При следующих запросах эти файлы уже не будут скачиваться из интернета. Проблема в том что баннерная реклама построена на применении механизма CGI. CGI (Common Gateway Interface) - расшифровыается как Общий интерфейс шлюза. Характерным признаком CGI является использование знака “?” в адресной строке запроса. Например адрес одного из баннеров Украинской баннерной сети выглядит так :

http://banner.kiev.ua/cgi-bin/bi.cgi?h" + user + "&"+ pid + "&" + page + "&2

К сожалению CGI используется не только для баннерной рекламы, но и для чатов, форумов, сетевых магазинов и прочей полезной сетевой функциональности. То есть везде где необходимо получить от пользователя данные. Затем полученне данные должны быть обработаны, а результаты работы CGI необходимо вернуть пользователю. Значит для каждого пользователя не только запросы, но и ответы будут разные. Поэтому класть полученые документы в кэш squid бесполезно. По умолчанию squid не использует кэш при работе с динамическими документами. В свою очередь это значит, что одни и те же баннеры будут выкачиваться бесконечно. Резко снизить количество потребляемого траффика можно подменяя банеры пустыми картинками с локального Web сервера. А мультимедий файлы скачиваемые пользователями можно подменять на лету своими собственными заготовками, что позволит донести до пользователя добавочную информацию. Только представьте себе пользователь качает музыку в формате mp3 запускает ее в winamp и слышит строгий голос директора отчитыващий его за такое хулиганство.

Обоснование выбора редиректора SquidGuad

Многие администраторы уже столкнувшиеся с вышеописанным комплексом проблем могут утверждать, что они легко решатся с помощью штатных средств Squid. Я не стану отрицать что Access Control List (Списки контроля доступа) сокращенно ACL, используемые в Squid это довольно мощный инструмент. Но для работы с ним требуется достаточно большой опыт. С другой стороны трудно представить каким образом администратор будет разбираться какие сайты он должен блокировать. Остается только всед за пользователями ходить на все часто посещаемые сайты, и постепенно запрещать неугодных. Учитывая количество сайтов интернет, а так же распространенность баннерной рекламы такой путь выглядит утопией. В начале такого ошибочного пути кажется что нужно всего лишь записывать все запрещенные сайты в отдельные файлы с помошью ACL записей типа:

acl porno src "/usr/local/squid/etc/porno.lst"
acl erotic src “/usr/local/squid/etc/erotic.lst”

А затем запрещать их всех скопом. Но обслуживание такой системы способно превратиться в головную боль уже на первой тысячи сайтов. Squid загружает списки контроля доступа в оперативную память. С добавлением новых сайтов размер файла будет постоянно расти. Соответственно и Squid будет занимать все больше оперативной памяти. В связи с тем что список запрещенных сайтов не упорядочен поиск в нем будет занимать довольно продолжительное время.

Для сравнения редиректор Squidguard выполняет за 12 секунд 100.000 запросов к базе содержащей 205.900 записей. Тестирование проводилось на машине с процессором Pentium 500MHz. Такой скорости удается добиться за счет того, что SquidGuard хранит список сайтов в форме B-дерева. Как мы видим средствами Squid все вышеописанное выполнить достаточно тяжело. И тут в поле нашего внимания попадает класс программ под названием редиректоры. С разной степенью легкости эти программы позволяют решать наши проблемы.

В качестве кандидатов на место SquidGuard претендовали squirm и Jesred. После тестирования от squirm пришлось отказаться, потому что список фильтрации поддерживается всего один на всех пользователей. Соответственно запретить что-либо конкретному пользователю не представляется возможным. Запрещать приходится либо всем, либо никому. К тому же список сайтов приходится хранить в виде довольно сложных и неудобных для восприятия регулярных выражений. По моему мнению, такое ограничение не позволяет использовать squirm в сетях средних и больших размеров.
Затем мне под руку попался Jesred. Несмотря на то, что Jesred является модернизированным потомком squirm и имеет более гибкий синтаксис файла шаблонов, он все еще страдает от тех же детских проблем. Единственное улучшение в этой области достаточно высокая скорость работы и возможность пропускать запросы некоторых пользователей без фильтрации. Как Вы понимает в этом случае ни о каком гибком разграничении полномочий пользователей и речи быть не может.

Используемый нами SquidGuard тоже является редиректором. Давайте коротко опишем его возможности.

* может разрешить доступ некоторой группе пользователей только к некоторым сайтам
* блокирует доступ пользователей к определенному списку адресов
* позволяет запретить доступ к определенному списку адресов
* помогает блокировать доступ к сайтам на основе списка регулярных выражений
* запрещает пользователям использовать IP адреса вместо доменных имен внутри URL
* позволяет запретить доступ к определенному списку адресов
* дает возможность перенаправить пользователей, пытающихся получить доступ к запрещенным страницам, на другую страницу, где им будет объяснена причина запрета
* помогает перенаправить запросы на доставку часто скачиваемый файлов, таких как MSIE, Netscape Navigator или ICQ, к их локальным копиям
* позволяет использовать разные политики доступа в зависимости от времени дня, текущей даты, дня недели
* дает возможность гибкой настройки процесса протоколирования обрабатываемых запросов

Платформа и вспомогательное ПО

Ну что же, теперь когда с формальностями и изучением начальной теории покончено, приступим к установке.
Как я уже говорил строить нашу систему фильтрации мы будем на основе FreeBSD 4.5 + Squid + SquidGuard + Berkeley DB 3.2.9 + Apache.

Стоит отметить что обсуждаемые в этой статье приемы будут работать и на основе Linux. В принципе такой комплекс можно построить на любой Unix совместимой системе. Главной проблемой будет неоходимость найти версии SquidGuard и Squid для этой системы. Вместо Apache можно использовать любой другой Web сервер. Кстати Web сервер можно запустить на одельной машине под управлением любой операционной системы. В то же время можно использовать уже существующий Web сервер. Не стоит отчаиваться, если база данных Berkeley DB еще не портирована для Вашей платформы. SquidGuard легко может работать и без нее. Я думаю, нижеприведенных инструкций по настройке Apache и Squid хватит, что бы установить их в комплектации по умолчанию. Для получения более подробных сведений вам стоит посетить следующие сайты:

http://apache.lexa.ru
http://www.squid-cache.org
http://squid.opennet.ru

В процессе компиляции всего програмного обеспечения вместо стандартного make мною использовался gmake, но это опять же вопрос личных предпочтений. Мне кажется, что gmake работает стабильнее и быстрее.

Установка и настройка Squid

В качестве прокси сервера я использовал squid 2.5.STABLE1. На момент написания статьи это была самая свежая версия. Рекомендуется всегда использовать самые новейшие из стабильных версий программ. Такой подход позволит в дальнейшем избежать многих проблем со стабильностью и безопасностью работы той или иной программы.

# tar zxvf squid-2.5.STABLE1-src.tar.gz
# cd squid-2.5.STABLE1
# ./configure
# gmake
# gmake install

После инсталяции редактируем файл конфигурации squid, находящийся в /usr/local/squid/etc/squid.conf.
Должно получиться примерно следующее:

http_port 3128 # Обрабатывать запросы на порт 3128
hierarchy_stoplist cgi-bin ? # Запрещаем кэшировать CGI
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 64 MB # Размер оперативной памяти отводимой под кэш
error_directory /usr/local/squid/share/errors/Russian-koi8-r #Тут мы будем брать файлы стандартных сообщений об ошибках
maximum_object_size 16384 KB # Максимальный размер объекта записываемого в кэш
cache_dir ufs /usr/local/squid/cache 5000 16 256 # Здесь у нас будет храниться кэш. Отводим под него места 5000 мгб. Приказываем создать 16 директорий первого уровня и 256 второго уровня.
cache_access_log /usr/local/squid/logs/access.log # Протокол доступа к кэшу
cache_log /usr/local/squid/logs/cache.log # Тут находится протокол работы кэша
cache_store_log /usr/local/squid/logs/store.log # Протокол работы менеджера кэша
ftp_user vasa@pupkin.ru # Под этим пользователем будем ходить по Ftp
quick_abort_pct 60 # Если Squid уже скачал 60% файла, а пользователь отказался его забирать, то все равно продолжать скачивать файл.
negative_ttl 1 minutes # Время жизни запросов завершившихся ошибкой. Например “connection refused” или “404 Not Found”
positive_dns_ttl 6 hours # Время жизни успешного DNS запроса.
negative_dns_ttl 5 minutes # Время жизни DNS запросов завершившихся ошибкой.
half_closed_clients on Поддержка нестандартных Http клиенттов
acl all src 0.0.0.0/0.0.0.0 # Минимальные рекомендуемые права
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563 # Ssl
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl users src “/usr/local/squid/etc/users.txt” # описываем наших пользователей
http_access allow manager localhost # Разрешаем соединения только по правильным портам. И раздаем всем права доступа
http_access deny manager
http_access deny !Safe_ports
http_access allow users
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
cache_mgr root@test.ru # Адрес пользователя которого будут уведомлять о переполнении кэша
cache_effective_user nobody # Пользователь от имени которого будет работать Squid
cache_effective_group nogroup # Группа от имени которой будет работать Squid
forwarded_for on # Включать ли IP адресс клиента в заголовок Http запроса
cachemgr_passwd passwd all # Разрешаем управлять кэшем с помощью cachemgr.cgi. В качестве пароля будем использовать слово “passwd”
client_db on # Включаем сбор статистики по каждому клиенту

Обращаю Ваше внимание на строку acl users src “/usr/local/squid/etc/users.txt”. Она означает, что список пользователей, которым разрешен доступ к squid, находится в файле /usr/local/squid/etc/users.txt

Файл списка имеет следующий формат:

#Петрова Наталья (Снабжение)
192.168.10.91/32
#Иванов Владимир (Доставка)
192.168.10.92/32
#Сергеев Игорь (Плановый отдел)
192.168.10.93/255.255.255.255
#Кривоухина Ирина (Лаборатория)
192.168.10.94/255.255.255.255
#Синицына Светлана (секретарь генерального директора)
192.168.10.95/255.255.255.255

Реально в списке содержатся не имена пользователей, а IP адреса их машин. Как Вы смогли убедиться все устроено достаточно просто. Отдельный файл со списком пользователей решено использовать, что бы не захламлять главный конфигурационный файл. Users.txt должен иметь те же права доступа, что и squid.conf для того что бы squid мог читать его содержимое.

# chown nobody:nogroup /usr/local/squid/etc/users.txt

Возможен и другой вариант управления доступом к web. При этом доступ в наружнюю сеть средствами squid не ограничивается. Разграничением доступа в этом случае будет заниматься SquidGuard. Для тех пользователей, чей адрес не внесен в файл /usr/local/squidGuard/squidGuard.conf, производится перенаправление на страницу запрещения. Соответственно, эти пользователи никогда интернета не увидят. Чтобы добиться такого эффекта, нужно удалить из squid.conf строки:

acl users src "/usr/local/squid/etc/users.txt"
http_access allow users
http_access deny all

И добавить в squid.conf вместо них строку

http_access allow all

Мне больше нравится второй вариант разграничения доступа. Если использовать традиционную схему разграничения прав, то проверка прав доступа происходит дважды. Сначала внутри Squid а затем в SquidGuard. Мне кажется что управлять доступом в одной точке, вместо двух гораздо удобнее. Но это опять же дело вкуса и эстетика чистейшей воды.

Настало время создать директорию, в которой у нас будет храниться кэш squid.

# mkdir /usr/local/squid/cache

А тут у нас будут лежать журналы работы Squid.

# mkdir /usr/local/squid/logs

Нужно позаботиться, чтобы директории /usr/local/squid/cache и /usr/local/squid/logs были доступны пользователю, от имени которого работает squid. Узнать имя этого пользователя можно так:

# cat /usr/local/squid/etc/squid.conf | grep cache_effectiv
cache_effective_user nobody
сache_effective_group nogroup

Получается, что пользователя зовут nobody, и группа у него nogroup.

# chown -R nobody /usr/local/squid/cache /usr/local/squid/logs
# /usr/local/squid/sbin/squid -z

Внутри директории /usr/local/squid/cache создаем иерархию директорий для хранения кэш файлов. Заглянув в /usr/local/squid/cache, вы сразу поймете, что имелось в виду под словом иерархия.

Запускаем squid.

# /usr/local/squid/sbin/squid -D

А на другой консоли смотрим, какие сообщения об ошибках появляются в файле протокола.

# tail -f /var/log/messages

Если все сделали правильно, то ошибок мы так и не дождемся. Зато должны увидеть что-то подобное.

Oct 3 12:15:05 dns squid[139]: Squid Parent: child process 141 started

Это значит что, squid у нас заработал. Идем дальше.

Установка и запуск Apache

Теперь примемся за установку Russian Apache. Если вы желаете то можете использовать стандартный Apache. Я использовал весрсию 1.3.27 PL30.16. Ну а Вы как всегда берите новейший дистрибутив.
Распаковываем его и ставим в комплекте по умолчанию.

# tar zxvf apache_1.3.27rusPL30.16.tar.gz
# ./configure
# gmake
# gmake instal

Запускаем apache:

/usr/local/apache/bin/apachectl start

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

# mkdir /usr/local/apache/htdocs/replace

Кладем туда 1×1gif и my.mp3. Берем модифицированный block.cgiи копируем его в /usr/local/apache/cgi-bin Выставляем ему нужные права:

# chown nobody:wheel /usr/local/apache/cgi-bin/block.cgi
# chmod 500 /usr/local/apache/cgi-bin/block.cgi

block.cgi это perl скрипт который будет вызываться каждый раз, когда пользователь попытается посетить запрещенную страницу. Взять его можно из архива с дистрибутивом squidGuard. В первоначальном варианте этот скрипт назывался squidGuard-1.2.0/samples/squidGuard.cgi.in. Можно использовать его, но все же лучше взять слегка модифицированный мною вариант. Мой, скрипт наверно, лучше, потому что руссифицированный. На его исправление ушло почти два часа., впрочем это еще не показатель качества исправлений, поэтому используйте мой скрипт на свой страх и риск.

Установка SquidGurad, Berkeley DB, libtool

Итак, все подготовительные работы окончены, и самое время взяться за установку squidGuard 1.2.0. Для его работы необходимо иметь Berkeley DB 3.2.9. Многие наступают на грабли с версией базы данных. Судя по разговорам на форумах многие люди как и я лично убедились на собственной шкуре, в том неприятном факте что удачной сборки удалось достигнуть только с версей базы 3.2.9. В свою очередь, Berkeley DB не соберется без libtool. Довольно запутаная получается цепочка. Но бояться не стоит. Берем http://www.freebsd.org/cgi/pds.cgi?ports/devel/libtool из коллекции портированных приложений и как обычно, выполняем распаковку, копиляцию, а затем и установку.:

# tar zxvf libtool-1.3.4.tar.gz
# cd libtool-1.3.4
# ./configure
# gmake
# gmake install

С выполнение этих действий не должно возникнуть никаких сложностей. Скачиваем Berkeley DB 3.2.9 http://www.sleepycat.com/update/index.html. Забираем два патча http://www.sleepycat.com/files/patch_329.tar.gz. И снова:

# tar zxvf db-3.2.9.tar.gz

Копируем патч файлы в получившуюся после распаковки дистрибутива директорию db-3.2.9. Затем применяем их для модификации исходного кода.

# cp patch.3.2.9.1 patch.3.2.9.2 ./db-3.2.9
# cd /usr/local/src/db-3.2.9
# patch -p0 < prefix="/usr/local/squidGuard" db="/usr/local/BerkeleyDB.3.2" config="/usr/local/squidGuard/squidGuard.conf" logdir="/usr/local/squidGuard/log" dbhome="/usr/local/squidGuard/db" prefix="/usr/local/squidGuard" db="/usr/local/BerkeleyDB.3.2" config="/usr/local/squidGuard/squidGuard.conf" logdir="/usr/local/squidGuard/log" dbhome="/usr/local/squidGuard/db" type="download&file="bigblacklist." clientaddr="%a&clientname="%n&clientident="%i&clientgroup="%s&targetgroup="%t&url="%u" clientaddr="%a&clientname="%n&clientident="%i&clientgroup="%s&targetgroup="%t&url="%u" clientaddr="%a&clientname="%n&clientident="%i&clientgroup="%s&targetgroup="%t&url="%u" clientaddr="%a&clientname="%n&clientident="%i&clientgroup="%s&targetgroup="Not_Authorized&url="%u"> /usr/local/squidGuard/bin/rebuid_base.sh
#!/bin/sh
/usr/local/squidGuard/bin/squidGuard -C all
chown -R nobody /usr/local/squidGuard/db
killall -HUP squid
^D

Устанавливаем нужные права доступа на файл rebuid_base.sh. Так же необходимо убедиться что этот скрипт имеет право запускать только пользовать root.

# chmod 100 /usr/local/squidGuard/bin/rebuid_base.sh
# /usr/local/squidGuard/bin/rebuid_base.sh

Запустив rebuid_base.sh, необходимо дождаться нормального завершения задачи. Теперь во всех директориях, упомянутых в разделах dest конфигурационного файла, появились файлы баз данных domains.db и urls.db.

Локальное тестирование SquidGuard

Перед тем как подключать squidGuard к squid, необходимо протестировать его локально. Для начала немного теории. Squid передает данные на стандартный ввод редиректора. Редиректор, в свою очередь, обрабатывает запрос и выдает на стандарный вывод результаты своей работы. Затем squid забирает эти данные. Редиректор отвечает на запрос от squid либо пустой строкой, если перенаправление не требуется, либо измененным URL. Формат запроса от squid к редиректору выглядит так:

URL адрес клиента разделитель метод запроса
http://test.ru/win2000/setup.exe 127.0.0.1/ - GET

Для того чтобы проверить как squidGuard будет реагировать на запросы пользователей, скачиваем написанную мною тестовую программу test.tar.gz. Распаковываем ее и кладем полученный файл test.pl в /usr/local/squidGuard/bin/. Устанавливаем файлу test.pl разрешение на выполнение. Затем запускаем test.pl и вводим тестируемый адрес. После этого в файле result.txt смотрим результаты работы squidGuard. Набор тестируемых сайтов можно изменять прямо в файле test.pl. Если результаты теста Вас удовлетворили, значит самое время объединить squidGuard и Squid. В файл /usr/local/squid/etc/squid.conf добавляем строки:

redirector_bypass on
# если не один из экземпляров squidGuard не
# отвечает, то работать напрямую
redirect_program /usr/local/squidGuard/bin/squidGuard
# где находится squidGuard
redirect_children 1
# сколько экземрляров squidGuard запускать

Перезапускаем squid. В свою очередь, squid самостоятельно выполнит перезапуск всех дочерних процессов редиректоров.

# killall -HUP squid

В конце файла /usr/local/squidGuard/log/squidGuard.log ищем такие строки:

2002-10-15 16:11:04 [10653] squidGuard 1.2.0 started (1034683864.337)
2002-10-15 16:11:04 [10653] squidGuard ready for requests (1034683864.353)

Автозапуск squid и Apache

Если они есть, значит все работает как положено. Теперь сделаем так, что бы Squid и Apache запускались автоматически при каждой загрузке машины.

# cat > /usr/local/etc/rc.d/apache.sh
#!/bin/sh
/usr/local/apache/bin/apachectl start
^D
# cat > /usr/local/etc/rc.d/squid.sh
#!/bin/sh
/usr/local/squid/bin/squid -D
^D
# chmod 100 /usr/local/etc/rc.d/apache.sh /usr/local/etc/rc.d/squid.sh

Для проверки стоит перезагрузить машину . Это даст нам возможность посмотреть как сервисы поведут себя при возможных перебоях в подаче электричеста. После перезагрузки можно начать наслаждаться тем, как все гладко работает.

Обновление базы доменов

качестве маленького бонуса можно наладить автоматическое обновление базы доменов. Для скачивания файла базы доменов нам понядобится программа wget. Конечно можно было обойтись и стандартным fetch. Но все же wget работает надежнее. Распаковываем и ставим как обычно.

# tar zxvf wget-1.8.2.tar.gz
# cd wget-1.8.2
# ./configure
# gmake
# gmake install

Смотрим, куда он у нас установился.

# where wget
/usr/local/bin/wget

Пишем скрипт, который будет выкачивать обновления с сайта MESD и класть их в директорию /usr/local/squidGuard/update. Затем архив с обновлениями будет распакован и скопирован в директорию /usr/local/squidGuard/bd. После этого будет произведена перестройка баз и перезапуск squid.

#cat > /usr/local/squidGuard/bin/update_blacklist.sh
#!/bin/sh
/usr/local/bin/wget -q –cache=off ‘http://squidguard.mesd.k12.or.us/blacklists.tgz’ -O /usr/local/squidGuard/update/blacklist.tgz
tar zxvf /usr/local/squidGuard/update/blacklist.tgz -C /usr/local/squidGuard/update/
cp -R -f /usr/local/squidGuard/update/blacklists/* /usr/local/squidGuard/bd
rm -R /usr/local/squidGuard/update/blacklists
/usr/local/squidGuard/rebuid_base.sh
^D

Теперь даем нашему скрипту нужные права.

# chmod 100 /usr/local/squidGuard/bin/update_blacklist.sh

Создадим временную директорию в которую будут распаковываться обновления.

# mkdir /usr/local/squidGuard/update

Настраиваем планировщик на выполнение нашего задания.

# crontab -e -u root
MAILTO=”admin@test.ru”
1 0 * * 7 /usr/local/squidGuard/bin/update_blacklist.sh

Назначаем выполнение обновления на 0 часов 1 минуту каждого воскресенья. Уведомление о выполнении этого задания приказываем слать по адресу admin@test.ru. Теперь осталось раздать всем пользователям подабающие права и можно отдыхать.

Автор Бешков Андрей
Взято на сайте onix.opennet.ru

Настройка squidGuard

SquidGuard - это очень полезное дополнение к Squid. Возможностей у него предостаточно, часто админы не используют и половину из них. С помощью squidGuard можно отфильтровывать и переадресовывать запросы по адресам, именам и регулярным выражениям. Определяет пользователей по адресам и логинам, которые можно распределять по группам с заданием собственных настроек и указанием временного промежутка.

Например, разрешить группе посещать только ресурсы из белого списка. Для ускорения обработки больших списков они хранятся в BerkeleyDB. Установка в Ubuntu сложностей не вызывает:

$ sudo apt-get install squidguard

Подключается squidGuard к Squid так же, как и остальные редиректоры, просто добавляем в squid.conf строку для запуска:

redirect_program /usr/bin/squidGuard
# Если конфигурационный файл находится в другом месте, указываем его так:
# redirect_program /usr/bin/squidGuard -c /usr/local/etc/squid/squidGuard.conf
redirect_children 5
redirector_bypass on

Все настройки squidGuard производятся в конфигурационном файле /etc/squid/squidguard.conf. Но вначале нужно пояснить структуру БД. Переменная dbhome указывает на каталог, в котором хранятся описания ресурсов. В Ubuntu и некоторых других дистрибутивах - это /var/lib/squidguard/db. При установке с помощью пакетов этот каталог пуст, поэтому придется самому позаботиться о его наполнении. Список blacklist можно взять как из архива исходных текстов программы, так и выбрать любой по ссылке Blacklists на сайте проекта. Списки, предлагаемые сторонними организациями, гораздо полнее и обновляются чаще, поэтому их и будем использовать. Например:

$ wget –c http://www.shallalist.de/Downloads/shallalist.tar.gz
$ sudo tar xzvf shallalist.tar.gz –C /var/lib/squidguard/db

В результате внутри обнаружишь целую структуру каталогов с названиями вроде ads, warez и прочее. Порядок следования очень важен, ведь в правилах указывается путь относительно dbhome. Внутри каждого каталога могут находиться следующие файлы:

- domains – список доменных имен и адресов сайтов (ad.count.com);
- urls – список конкретных ссылок на ресурс (site.com/banners);
- expressions - список регулярных выражений, ожидаемых в URL (adult|girls|avi|mp3 и т.д.).

Списков expressions в большинстве blacklist мало, и злоупотреблять ими не стоит, так как их использование сильно нагружает систему.
Еще один момент, связанный с обновлением списка. Например, может возникнуть ситуация, когда нужно добавить или убрать ресурс из balcklist, если это сделать в одном из указанных выше файлов, то при обновлении все изменения будут потеряны. Чтобы избежать этого, сохраняй изменения в нужном подкаталоге в файлах с расширением diff. Например, рядом с оригинальным domains пишем domains.diff. Формат его прост:

+ads.domain.com
-domain.com

Первый ресурс будет добавлен в базу, второй убран. При обновлении списка ситуация не изменится.

Создаем правила

Если в Squid ресурсы блокируются при помощи связки acl+http_access, то в squidGuard таких параметров намного больше. Например, чтобы описать и затем блокировать ресурсы, содержащие рекламу, добавляем следующее правило:

$ sudo mcedit /etc/squid/squidguard.conf

dest adv {
domainlist adv/domains
urllist adv/urls
expressionslist adv/expression
redirect http://localhost/block.html
}

dest warez {
domainlist warez/domains
urllist warez/urls
}

# И теперь создаем ACL
acl {
default {
pass !adv !warez all
}
}

squid.png

В примере была создана категория adv, в которой при помощи трех параметров domainlist, urllist и expressionslist были подключены файлы, находящиеся в каталоге /var/lib/squidguard/db/adv. Описания для остальных ресурсов создаются также. Названия можно брать любые, обычно их выбирают по названию каталога или по назначению, чтобы потом легче было ориентироваться. В документации приведен список зарезервированных слов, советую с ним познакомиться. Список ACL с действием default является правилом по умолчанию.
Параметр dest аналогичен acl в squid.conf, то есть описывает внешний ресурс. Чтобы указать клиентские подключения, применяется src, в качестве значения ему можно передать: отдельный IP-адрес, адрес сети, домен или список пользователей.

src clients {
ip 192.168.1.2-192.168.1.50
}

src admins {
ip 192.168.1.55, 192.168.1.150
}

Временной диапазон задается просто:

time workhours {
weekly mtwhf 09:00-18:00
date *.04.01
}

Под описание work-time попадают дни от понедельника по пятницу (используются первые буквы английских слов) и время с 9 до 18. Плюс сюда же входит первое апреля каждого года.
Время можно использовать прямо в описании клиентов:

src managers {
ip 192.168.0.0/24
within workhours
}

Или непосредственно в acl. Теперь все описания собираем в конфиге:

$ sudo mcedit /etc/squid/squidguard.conf

acl {
# Этой группе режем все, и пускать менеджеров будем только в workhours
managers {
pass !warez !chat !porno !agressive !drugs !ads all
}

# В рабочее время режем все
clients within workhours {
pass !warez !chat !porno !agressive !drugs !ads all
} else {
pass !ads all
# после работы только рекламу :)
}
# На то мы и админы
admins {
pass !adv all
}
default {
pass !adv all
}
}

Для упрощения я не добавлял описания ресурсов chat, porno и других. Когда правила записаны, создаем базу и устанавливаем права:

$ sudo squidGuard -d -C all
$ sudo chown -R squid /var/lib/squidguard/db/*

Хотя делать это необязательно, при первой загрузке базы будут созданы автоматически, но так можно убедиться в отсутствии ошибок. Для обновления конкретного списка вместо all указываем на конкретный файл. Если обновление производится из diff файла, то используем параметр ‘–u‘:

$ sudo squidGuard -u /var/lib/squidguard/db/ads/domains.diff

После чего перезапускаем Squid и проверяем работу.

Аутентификация пользователей в Squid

Не редко возникает ситуация, когда за одним компьютером может работать несколько человек, и необходимо предоставить доступ только после того, как пользователь подтвердит свою личность путем ввода логина и пароля.

Squid поддерживает несколько вариантов аутентификации. Для проверки подлинности задействуется внешняя программа. Этого можно добиться, использовав тип ACL proxy_auth и указав в параметре auth_param (ранее authenticate_program) программу для аутентификации.

acl USERS proxy_auth REQUIRED
http_access allow USERS
http_access deny all
auth_param /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

В первых трех строках объявлен новый acl и при помощи http_access разрешен доступ для всех клиентов, входящих в данный список. Значение REQUIRED указывает на то, что любой пользователь, прошедший аутентификацию, будет допущен. Как вариант, здесь можно прописать конкретные логины. В строке ниже указываем программу для аутентификации и расположение файла паролей. В разных дистрибутивах месторасположение ncsa_auth отличается. Найти его просто:

$ dpkg -L squid3 | grep ncsa_auth

Или для RPM:

# rpm -ql squid | grep nsca_auth

Параметр children позволяет задать максимальное количество процессов, используемых для аутентификации. Небольшое количество процессов может замедлить процесс аутентификации пользователей. Используя realm, можно определить сообщение Squid, выводимое юзеру в окне ввода пароля. В принципе, текст здесь можно ввести и на русском, только вот как он будет выведен пользователю, зависит от настроек браузера. И, наконец, credentialsttl указывает время кэширования пароля.
Файл паролей создается при помощи утилиты htpasswd, которая входит в состав пакета Apache. Создадим пользователя grinder:

$ sudo htpasswd -c /etc/squid/passwd grinder
New password:
Re-type new password:
Adding password for user grinder

Напомню, что ключ ‘–с‘ используется только однажды (для создания файла), в дальнейшем добавляем учетные записи с ключом ‘-b‘. Для удобства пароль можно указывать прямо в командной строке:

$ sudo htpasswd -b /etc/squid/passwd user 123456

Перезапускать Squid при изменении списка пользователей не требуется. Чтобы никто другой не мог получить доступ к файлу паролей, следует установить соответствующие права:

$ sudo chmod 440 /etc/squid/passwd
$ sudo chown squid:squid /etc/squid/passwd

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

пятница, 17 октября 2008 г.

О ЧЕМ ПОДПИСЬ ГОВОРИТ

Чтобы узнать человека, необязательно съедать с ним пуд соли. Нужно просто попросить его расписаться Автограф каждого человека своеобразен и уникален. Но в подписях разных людей можно найти общие признаки. По мнению психологов, фирменный росчерк пера может рассказать о человеке гораздо больше, чем принято считать.
Но графолога-психолога в Уфе, к сожалению, нет. Даже в системе МВД нашелся лишь специалист, способный определить по подписи только пол и возраст.
Поэтому мы решили обратиться к опыту известного американского психолога Джеймса Раскина, исследования которого на эту тему было опубликовано в одном из американских изданий.
Оказалось, что выводы американского психолога вполне актуальны. Характеристики известных политиков, артистов и прочих VIP-персон, составленные на основе его исследований, попали в точку. В этом вы можете убедиться сами.

У знаменитого хирурга богатое воображение

Оригинальный автограф Мулдашева кому-то напоминает стиснутый кулак, другие уверены, что это автопортрет. Сам доктор согласен, что «некоторое сходство с оригиналом наблюдается».
Так расписываются люди, которые склонны приукрашать действительность. Но прежде всего подпись-рисунок говорит о том, что ее обладатель - творческий человек с богатым воображением. А уже в этом Эрнст Рифгатович даст фору кому угодно. Судите сами: много ли вы знаете практикующих хирургов, которые не только пишут книги, но и путешествуют, находя по всему миру следы инопланетных цивилизаций? Сейчас Мулдашев находится в очередной экспедиции: исследует пирамиды в Египте, а оттуда планирует рвануть к каменным истуканам острова Пасхи.
В то же время подпись хирурга-путешественника очень компактна, а это свойственно людям, чей ум занят конкретными видами деятельности. Круг, в который заключен автограф Мулдашева, означает, что по характеру он скрытен, независим и зациклен на каких-то проблемах и идеях. А повторяющиеся элементы в подписи знаменитого хирурга свидетельствуют о постоянстве.
Необычная подпись Мулдашева – это свидетельство того, что ее хозяин большой оригинал. У него огромный творческий потенциал и постоянное желание вносить разнообразие в жизнь.

Президент Башкирии осторожен и осмотрителен

Муртаза Рахимов – обладатель очень короткой подписи, что свидетельствует о способности быстро ухватывать суть событий. Муртазу Губайдулловича явно раздражают медлительные люди – об этом следует помнить тем, кто работает в его команде.
Большая разница между заглавной и малыми буквами говорит о большой требовательности президента к окружающим. А также о том, что монотонная работа ему просто противопоказана.
Судя по длине «хвостика» в конце подписи, Муртаза Рахимов нетерпим к указам и замечаниям в свой адрес. Он, что называется, не будет плясать под чужую дудку, что не раз и демонстрировал. Кроме того, очень длинный «хвостик» свидетельствует об осторожности и осмотрительности.

Павлу Качкаеву рассудительности не занимать

Ровная подпись уфимского мэра Павла Качкаева говорит о сдержанности, самоконтроле, рассудительности ее обладателя. Обратите внимание, как соединены две буквы: «П» (имя) и «К» (фамилия) – через общую деталь. Автор таких подписей старается оптимизировать свою деятельность, совершать несколько дел одновременно.
Традиционный наклон букв вправо свидетельствует о сбалансированности характера Павла Рюриковича, а красота, законченность подписи - о развитом интеллекте.
Но, несмотря на сильные стороны своего характера, уфимский мэр часто недоволен собой. Об этом говорит перечеркнутая подпись – это знак самокритичной натуры. Было бы хуже, если бы Качкаев проводил линию над подписью. Ваш мэр делает именно так? Значит, он очень тщеславен.
Ну и, наконец, ровная амплитуда подписи Павла Качкаева указывает на работоспособность, склонность к стабильности в личных взаимоотношениях.

Юрий Шевчук не компромиссы не идет

У знаменитого рокера подпись угловатая, такая обычно бывает у резких, нетерпимых, даже раздражительных людей. Владельцы подобных автографов на компромиссы не идут.
Угловатые буквы говорят о стремлении к независимости, наличии критического ума, упрямства, честолюбия, склонности к самоуважению и руководству. Все из перечисленного, в большей или в меньшей степени, присуще Шевчуку. Вспомните его «джихад», который он объявлял «фанерщикам» и ненавистной попсе, о разборках, учиненных в этой связи поп-королю Филиппу Киркорову.
Даже уфимские родственники Шевчука, отец и сестра Наталья, в один голос утверждают, что «Юрка очень упрямый».
Буквы в подписи лидера «ДДТ» «скачут», а это значит Шевчук человек эмоциональный, а нередко и несдержанный. Длинный «хвост» подписи – знак того, что Шевчук на корню пресекает попытки вмешательства в его дела.

О чем говорит подпись Путина?

Длинная подпись характеризует его как человека, способного вникать в суть дела, но в то же время несколько придирчивого и занудливого.
ВВП пишет размашисто, а это свойственно людям, мыслящим глобально и системно. А вот неразборчивость росчерка говорит об эгоизме, который тщательно маскируется.
Если написав какую-то часть, человек возвращается назад какой-либо линией и что-то дописывает, то и в жизни он часто бывает неудовлетворен сделанным, постоянно стремиться совершенствовать достигнутое. Владимир Владимирович ценит надежность. Об этом говорят симметричные элементы.


Проверь себя
Как по автографу определить характер
Джеймс Раскин выделяет для анализа подписи более сорока признаков. Для удобства мы выделили основные, чтобы было удобнее выяснять «кто есть кто».

1. Размер подписи:
а) размашистая - глобальное системное мышление;
б) компактная - конкретное мышление.

2. Длина подписи:
а) длинная - способность глубоко вникать в суть проблем; усидчивость, излишняя придирчивость и занудство;
б) короткая - способность быстро схватывать суть событий. Неспособность к монотонной работе.

3. Тип подписи:
а) округлая - мягкость, доброта, уравновешенность;
б) угловатая - нетерпимость, раздражительность, резкость, независимость, честолюбие, упрямство.

4. Расстояние между буквами:
а) значительное - щедрость, транжирство;
б) «плотная» подпись - экономность, скупость (особенно, если буквы мелкие).
5. Присутствие в подписи различных элементов:
а) круг - зацикленность на проблемах и идеях;
б) петельки - осторожность, упрямство;
в) рисунки - творческое мышление;
г) комбинирование элементов - стремление оптимизировать свою деятельность.

6. Наклон подписи:
а) влево - своенравность, ярко выраженный индивидуализм;
б) вправо - сбалансированность характера, способность к пониманию;
в) прямой наклон - сдержанность, прямолинейность, ум;
г) разнотипный наклон - скрытность, неискренность;
д) «лежащие» буквы - наличие серьезных психологических проблем.

7. Направление заключительного штриха:
а) вверх – оптимизм;
б) вниз - склонность к пессимизму;
в) прямо - сбалансированный характер;

8. Длина «хвоста» подписи
Чем длиннее «хвост», тем более человек нетерпим к чужому мнению. Это также признак осмотрительности и осторожности. Чем «хвост» короче, тем человек беспечнее.

9. Подчеркивание подписи:
а) снизу - самолюбие, обидчивость, зависимость от мнения окружающих;
б) сверху - гордость, тщеславие;
в) перечеркнутая подпись - самокритичность, недовольство собой, сомнение.

10. Признаки симметрии:
а) симметричная - надежность;
б) асимметричная - неустойчивый характер, перепады настроения.
в) скачкообразная - эмоциональность, неуравновешенность

11. Сложность и простота:
а) простая - человек живет по принципу «нет проблем»;
б) «нагруженная» - часто склонен «делать из мухи слона»;
в) оригинальная - большой творческий потенциал.

12. Разборчивость
Чем более понятна подпись, тем более открыт человек.

13. Нажим:
а) чрезмерный – агрессивность;
б) слабый – скрытность;
в) сильный – уверенность.

источник

Делаем страницу 404й ошибки разумной с помощью Google

Вот я прошёлся по блогам и сайтам, которые висят у меня в подписках, и понял, что всё печально. Если намеренно вызвать страницу 404й ошибки, то можно напороться на все возможные отмазки, пустую страницу, либо на страницу, которую генерит сервер. Ну или на крайний случай - sitemap. Часто любят выкладывать туда смешную картинку.

К примеру можно встретить такие страницы:

404 - Not Found
Извините, нет записей, удовлетворяющих вашим условиям.

Не найдено.
Извините, но вы ищите что-то чего здесь нет.

Делаем страницу 404й ошибки разумной с помощью Google

У некоторых крупных сайтов страница 404й ошибки разумна, она подсказывает, что мол человек мог ошибиться в написании адреса, ему предлагают альтернативные адреса, и/или просят сообщить администраторам, что обнаружена ошибка.

Писать подобный механизм для небольших сайтов или блогов stand-alole дорого, затратно по времени и, в общем, все забили на это. А почему? Ведь есть зачётная возможность сделать 404я ошибку разумной, с помощью империи зла Google.

Для начала посмотрите страницу 404й ошибки, которая поумнела на методе, о которой я вам расскажу чуть-чуть попозже.
http://absolvo.ru/contactf

Здорово же? Правда сразу немного огорчу - эта метода для блогов не совсем подходит, однако если ваш блог насквозь проиндексирован Google, а также добавлен в панель вебмастера Google - то работа с ней станет несколько позитивней и удобней.

Итак, всё очень просто.



<p>

<script type=«text/javascript»>var GOOG_FIXURL_LANG = 'ru';var GOOG_FIXURL_SITE = 'http://absolvo.ru/';</script>

<script type=«text/javascript» src=«linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js»></script>

<ul><li>Перейти на главную <a href="/">страницу</a></li></ul>


</p>




Добавляет мозгов 404й странице JS скрипт, fixurl.js, вам необходимо будет указать язык (в данном случае ru), и url вашего сайта, в данном случае - http://absolvo.ru/ Ещё раз огорчу, для поисковика www.site.ru и site.ru спокойно могут показаться разными сайтами, но это, мне кажется, не смертельно.

Стили, которые вы спокойно можете использовать для своих целей (я к примеру скрыл панель поиска Google по моему блогу, она мне не нужна)

#goog-fixurl
#goog-wm
.content
.other-things
#goog-wm-sb

Через .content рулить списком (ul, li).

В коде, который я привёл чуть выше, есть дополнительный список, который не даст ударить нам лицом в грязь, если Google не даст альтернатив.

Я у себя поставил, и в общем, доволен. Это выглядит много опрятней, и правильней.

источник

четверг, 16 октября 2008 г.

cfdisk и mkfs: разметка и форматирование разделов в Linux

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

Создание раздела на жёстком диске в Linux
Для этого используем cfdisk (кто не может пережить псевдографический интерфейс, качает gparted). Для создания разделов потребуются привилегии root, добываемые командной su.
После этого пишем:

cfdisk /dev/hdb

Видим экран:


Нажимаем на New, создать раздел. Выбираем Primary (основной)


Создастся, нажимаем Bootable (если нужно, чтобы он был загружаемый).

Если уверены, что всё сделано правильно - записываем изменения, нажимаем Write и пишем yes


Как уже говорилось, создать раздел в Linux довольно просто, и это только что сделано. Всё, разделы созданы, выходим из программы выбирая Quit.


Форматирование дисков в Linux: как отформатировать диск или раздел в Линукс
Для этого сначала нужно выбрать файловую систему. Отвечу на сакраментальный вопрос: "файловая система Linux: какая лучше?"

- Ext3: надёжная, протестированная и многократно проверенная файловая система Linux систем, рекордов скорости не ставит, в большинстве случаев - оптимальный выбор.

- ReiserFS:
лучший выбор, если на разделе много мелких файлов; большие файлы копирует медленно и ощутимо грузит процессор, так что не для слабых машин.

- Xfs:
лучший выбор для файлохранилищ, особенно файлов огромных размеров (iso-образы дистрибутивов и фильмы).

- Jfs:
не быстрая, но весьма стабильная файловая система и нетребовательна к ресурсам - мало грузит процессор и хороша на старых машинах и медленных ноутбуках.
Далее, по умолчанию в Debian поставлены утилиты ext3. Если нужных нет - ставим:
aptitude install reiserfsprogs xfsprogs jfsutils
После этого пишем:
sudo mkfs -t типФС /файл/устройства
где вместо типФС подставляем выбранную файловую систему:
  • reiserfs
  • ext3
  • jfs
  • xfs
Вместо /файл/устройства пишем имя форматируемого раздела, например /dev/hdb1. В нашем примере это выглядит так:
sudo mkfs -t ext3 /dev/hdb1
На экране будет происходить что-то вроде:



После форматирования раздел сразу же можно смонтировать и использовать. Создаём точку монтирования:
sudo mkdir /mnt/megadrive
и даём директории полные права:
sudo chmod 770 /mnt/megadrive
И монтируем:
sudo mount -t ext3 /dev/hdb1 /mnt/megadrive
Всё, разделы созданы и отформатированы.


Как отформатировать раздел в Линукс - графическая среда
Если консоль нагоняет ужас и хочется что-то графического - нужно установить gparted из репозитория. Запустится программа gpated в графическом режиме:


и графическими средствами урезаем диск до нужного размера (правая кнопка
мыши -> Move/Change size). Графический интерфейс программы прост,
главное - не забываем нажать на кнопку Apply для того, чтобы изменения
вошли в силу, и дождаться того, пока все операции выполнятся.


Если всё прошло гладко - выгружаем gparted и можно монтировать диск.

источник

Про монтирование дисков можно прочитать здесь.

Флаги стран в трее

Гораздо приятнее лицезреть индикатор раскладки клавиатуры в виде флагов стран соответствующего языка.

1. В консоли набираем:
gconf-editor, далее ставим галочку напротив параметра /desktop/gnome/peripherals/keyboard/indicator/showFlags.

2. Скачиваем архив с изображениями флагов стран, разархивируем и ложим файлики ru.png и us.png в папку /usr/share/pixmaps/ (или ~/.icons/flags).

3. Перегружаемся нажатием CTRL+ALT+Backspace.

среда, 15 октября 2008 г.

Установка своих изображений для хранителя экрана MatrixView

Вместе с Linux Ubuntu 8.04 есть один интересный предустановленый хранитель экрана, имитирующий матрицу из одноименного фильма (Система -> Параметры -> Хранитель экрана -> MatrixView).

По умолчанию из бегущих символов матрицы складываются образы героев из фильма, но можно удивить друзей, установив, к примеру, свои фотографии в качестве этих образов. Делается это достаточно просто:

1. В терминале:
sudo gedit /usr/share/applications/screensavers/matrixview.desktop
Откроется конфигурационный файл хранителя экрана в редакторе gedit.

2. Добавьте в этот файл строку, выделенную красным цветом, предварительно изменив путь к папке, откуда хранитель экрана будет брать файлы изображений:

[Desktop Entry]
Encoding=UTF-8
Name=MatrixView
Comment=Assimilation of Matrix GL by Alex Zolotov (http://knoppix.ru/matrixgl.shtml) Ported to Linux by Tugrul Galatali - .
TryExec=matrixview
Exec=matrixview -r –image /путь/к/папке/с/фотографиями
StartupNotify=false
Terminal=false
Type=Application
Categories=Screensaver

Готово, можете запускать скринсейвер и наслаждаться новыми образами.

источник

Исправление в Ubuntu бага, который методично убивает хард на ноутбуке

Ubuntu Linux вследствие некорректной работы скрипта демона питания может повреждать ноутбучный винчестер путем его постоянных остановок и запусков. Если у вас стоит Ubuntu на ноутбуке, то советую проверить нет ли такой проблемы и у вас.

Для проверки устанавливаем из репозитория пакет smartmontools, для этого набираем в консоли:
sudo apt-get install smartmontools
После установки этого пакеты выполняем в консоли команду:
sudo smartctl -a /dev/sda | grep Load_Cycle
и смотрим на значение этого счетчика.

Ждём некоторое время (от 1 до 5 минут) и вновь выполняем эту команду:
sudo smartctl -a /dev/sda | grep Load_Cycle
Если значение счетчика увеличилось, то проблема имеет место быть и её необходимо исправить, иначе у жесткого диска вашего ноутбука не будет счастливой жизни.

Исправление бага

0. Баг исправляется при помощи трёх скриптов, скачиваем их:
Скрипт 1: pm-disk
Скрипт 2: diskpr
Скрипт 3: disksr

1. Копируем файл pm-disk в директорию /etc/pm/config.d/, для этого переходим в папку, куда скачали файл и в терминале набираем:
sudo cp pm-disk /etc/pm/config.d/

2. Копируем файл diskpr в директорию /etc/pm/power.d/, для этого переходим в папку, куда скачали файл и в терминале набираем:
sudo cp diskpr /etc/pm/power.d/
После того как скопировали делаем этот файл запускаемым, для этого в терминале набирем:
sudo chmod +x /etc/pm/power.d/diskpr

3. Копируем файл disksr в директорию /etc/pm/sleep.d/, для этого переходим в папку, куда скачали файл и в терминале набираем:
sudo cp disksr /etc/pm/sleep.d/
После того как скопировали делаем этот файл запускаемым, для этого в терминале набирем:
sudo chmod +x /etc/pm/sleep.d/disksr

4. Готово, перезагружаем компьютер и для проверки следим, перестал ли увеличиваться счетчик:
sudo smartctl -a /dev/sda | grep Load_Cycle
Счетчик должен увеличиваться только после перезагрузки ноутбука, выключения, либо перехода в ждущий или спящий режим.

Примечание: данный рецепт помог мне на Linux Ubuntu 8.04.1 на ноутбуке Dell XPS M1330, надеюсь поможет и вам.

источник

Магия или безопасный рестарт компьютера когда Ubuntu подвисла

Иногда это случается и в Linux… Компьютер повис, вы пробуете перезагрузить иксы нажатием комбинации кнопок Ctrl+Alt+Backspace, но у вас ничего не вышло. Вы в панике, с ужасом в глазах тыкаете кнопку перезагрузки на системном блоке и грызёте ногти…

Стоп!

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

«Но что же тогда делать?» – спросите вы.

А вот что: удерживая кнопки Alt+SysRq (PrintScreen) нажимайте последовательно следующие кнопки: R, E, I, S, U, B. После этого ваш компьютер перезагрузится. Да, это магия. Просто запомните последовательность нажатия кнопок REISUB. Между нажатиями кнопок лучше сделать небольшой интервал. Для лучшего запоминания можно просто запомнить фразу: «REстарт ISкуственный UBийственный», ну или придумайте что-нибудь своё.

Если серьёзно, то это скрытые возможности ядра вашей системы.
Описание используемых ключей:
R - возвращает управление мышке и клавиатуре.
E - посылает сигнал SIGTERM всем запущенным процессам, кроме init. Другими словами производится попытка безопасного (с сохранением данных) завершения всех процессов, кроме процесса init.
I - посылает сигнал SIGKILL всем запущенным процессам, кроме init. Это значит, что все процессы кроме init будут уничтожены и данные будут утеряны.
S - переписывает все данные из кэш-памяти на жесткий диск, происходит синхронизация, уменьшает шанс повреждения данных.
U - перемонтирует все примонтированные файловые системы в режиме только чтение. После использования этого ключа вы можете перезагружать систему нажатием Alt + SysRq + B без ущерба для системы.
B - перезагрузка системы. Использование этого ключа без использования других ключей равноценно «холодной» перезагрузке.

источник

Шрифты в Ubuntu

Есть очень простой способ улучшить внешний вид шрифтов во многими любимой убунте.

Для этого достаточно создать один файлик: ~/.fonts.conf

И поместить в него следующее:





true




Далее делаем logout.

Заходим в System(система) -> Preferences(настройки) -> Appearance(внешний вид)
Попадаем на вкладку Fonts(шрифты)
Полные решимости жмем Advanced(дополнительно)
И играемся с настройками на свой вкус не забыв выбрать Subpixel smoothing(субпиксельное сглаживание)
И наслаждаемся, разумеется.
Источник

пятница, 10 октября 2008 г.

Slax

Собственно, о Slax знают все. Это еще один live-cd/usb дистрибутив Linux.

В этой статье я кое-что расскажу о скриптах проекта linux-live (с помощью которых и создан Slax), опишу процесс создания своих собственных модулей для Slax и процесс получения своей версии Slax со своими модулями внутри, после чего я покажу, как создать несколько "специальных" модулей (с руссификацией и настройками пользователя), а в конце приведу полезные ссылки (для "почитать").

Плюсы и минусы Slax

Плюсы Slax'а (собственно, за что его стоит использовать):

  • Slax очень легко масштабируется - вы можете быстро и просто включить в вашу копию программы нужные вам файлы (к примеру - установки программ)

  • В 189 мегабайт (версия 6.0.7) входит много чего - KDE 3.5.9, KOffice, gcc, perl, mplayer

  • Поскольку Slax, все же, легко масштабируется, вы легко сможете выкинуть ненужный софт (KOffice, например, или сразу всю KDE)

  • Slax построен на основе самого последнего релиза Slackware - и значит относительно устойчив

  • Slax позволяет целиком загрузить себя в оперативную память

Минусы:

  • Отсутствие некоторых важных программ все-таки вынуждает "допиливать" дистрибутив под себя

  • Отсутствие python'а, консольного клиента для ftp и vim'а (см. предыдущий пункт :-) )

  • KDE. Для mini-cd - слишком тяжело

  • Отсутствие руссификации (я покажу, как это исправить)


linux-live

Проект linux-live живет здесь.

Собственно, он нацелен на быстрое и простое получение своего собственного live-cd из любой установки linux.

Каким образом это происходит? Собственно, процесс описан в тамошнем howto, вкратце все просто:

  1. Загружаем linux

  2. Включаем поддержку aufs и squashfs (возможно, еще и LZMA) в ядре с помощью патчей от linux-live (кстати, можно использовать precompiled ядро, скачиваемое с сайта проекта)

  3. Расспаковываем пакет со скриптами, правим конфиг

  4. Запускаем скрипт build

  5. Запускаем соотв. скрипт для получения ISO или bootable usb disk



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

Slax

Отсюда вы сможете скачать текущую (6.0.7) версию Slax'а (скачайте cd версию).

* Я думаю, понадобится какой-нибудь эмулятор для тестирования. VirtualBox там или Qemu.

Последовательность приготовлений такая:


mkdir my_slax
cd my_slax
wget -c http://www.slax.org/get_slax.php?download=iso
#Предполагается, что образ называется slax-6.0.7.iso - текущая версия
mkdir bla-bla-bla
su
mount slax-6.0.7.iso bla-bla-bla -o loop
cp -R bla-bla-bla disk
chown -R ВАШ_ПОЛЬЗОВАТЕЛЬ.users disk
umount bla-bla-bla
exit
rmdir bla-bla-bla
ls


Итого получим:


  • disk - содержимое образа

  • slax-6.0.7.iso - оригинальный образ



Добавляем модули

Собственно, теперь добавим пару чужих модулей.

Здесь находится официальный репозиторий. Модулей там маловато, но кое-что есть.

К примеру, python и telnet:

Скачаем модуль с python-2.5.2 и модуль с telnet-1.5 - получаем python-2.5.2-i486-1.lzm и telnet-1.5.lzm (модули slax'а имеют расширение lzm).

Теперь сделаем:


cd disk/slax
ls


Получим:


amv@amv:~/trash/my_slax/disk/slax$ ls
base/ cheatcodes.txt LICENSE make_iso.bat* modules/ requirements.txt slaxsave.zip
changelog.txt GNU_GPL livecd.sgn make_iso.sh* optional/ rootcopy/ tools/


Здесь:


  • base - содержит базовые модули slax'а (к примеру, для удаления koffice - достаточно удалить модуль base/005-koffice.lzm)

  • cheatcodes.txt - опции загрузки slax'а (бывает полезно)

  • make_iso.* - скрипты для создания iso из текущего "дерева" (собственно, они создадут live-cd bla-bla-bla.iso из нашего каталога my_slax/disk)

  • modules - это пользовательские модули, которые будут загружены при загрузке системы

  • optional - модули, загружаемые по выбору пользователя с помощью специального менеджера после загрузки системы

  • tools - скрипты из проекта linux-live - именно с их помощью происходит создание пользовательских модулей



Поместим python-2.5.2-i486-1.lzm в modules/ (чтобы python был всегда с нами :-) ), а telnet-1.5.lzm в optional (кому как, а я telnet'ом, чаще всего, звездные войны смотрю).

Соберем нашу версию slax'а:


./make_iso.sh ../../my_slax_1.iso
cd ../../
ls


Имеем:


amv@amv:~/trash/my_slax$ ls
disk/ linux-live-6.2.4/ my_slax_1.iso python-2.5.2-i486-1.lzm slax-6.0.7.iso telnet-1.5.lzm


Здесь, собственно, my_slax_1.iso - это наш live-cd. На очереди - тестирование. Кто как, а я призову на помощь qemu:


qemu -m 512 -boot d -cdrom my_slax_1.iso


* "-m 512" - это объем оперативки, который я выделил для виртуальной машины. Можете опустить этот параметр, но на объеме, меньшем 256M, Slax и Qemu чувствуют себя плохо
** По субъективным ощущениям, VirtualBox с Slax'ом работает быстрее уже на 256-и мб. оперативной памяти у виртуального компьютера. Причина неизвестна.

Когда Slax загрузится, откройте konsole (на панели ее значок - второй справа) и запустите в ней python. Он должен заработать.

Каким образом подключить optional-модули? Все просто! Менеджер модулей здесь: "K/System/Slax Module manager". Запустите его: перед вами появится окно, содержащее список всех загруженных модулей. Внизу справа - кнопка "Add a new module" - добавление новых модулей (модуль telnet-1.5.lzm лежит в /mnt/live/mnt/hdc/slax/optional/). Внизу слева - кнопка "Remove selected modules" - позволяет выгрузить выбранный модуль.

* После загрузки модуля telnet-1.5.lzm попробуйте запустить telnet в konsole
** Как вы понимаете, подключаемые модули могут лежать на другом носителе - вам необходимо просто смонтировать носитель и подключить модуль с помощью менеджера. Кстати, Slax можно целиком загрузить в ОП (если ее объем позволяет) и тогда cd-привод будет свободен.

Закройте qemu.

Создание своих собственных модулей

Теперь давайте самостоятельно создадим пару модулей для Slax.

Модуль - это некоторый файл с расширением lzm. Файл этот - архив и содержит в себе что-то вроде "патча" на корневую систему (при загрузке lzm-файл распаковывается в "/", при этом новые файлы добавляются, а существующие заменяются). По большому счету lzm-модуль не отличается от rpm, deb, tgz пакетов. Важно, что происходит только распаковка - и более никаких действий.

Сделайте (мы находимся в my_slax):


ls disk/slax/tools


Должно получится:


amv@amv:~/trash/my_slax$ ls disk/slax/tools/
activate* deactivate* deb2lzm* dir2lzm* liblinuxlive lzm2dir* mksquashfs* tgz2lzm* unsquashfs* WIN/


Нас интересуют:


  • deb2lzm - утилита получения модуля из deb'а

  • dir2lzm - утилита получения модуля из произвольного каталога (к примеру, файлы из bla-bla-bla/bin при загрузке модуля пойдут в /bin)

  • tgz2lzm - утилита получения модуля из tgz-пакета (для Slackware)

  • lzm2dir - утилита распаковки модуля в произвольный каталог



tgz2lzm

Сделаем модуль из какого-нибудь полезного Slackwar'ного пакета.

! Важно! Вам понадобится набор утилит для управления пакетами Slackware. Способ получения этого набора утилит, если у вас не Slackware, описан в следующем пункте.

Скачайте ncftp-3.2.1.

Теперь сделаем:


su -c 'disk/slax/tools/tgz2lzm ncftp-3.2.1-i486-1.tgz ncftp-3.2.1-i486-1.lzm && chown ВАШ_ПОЛЬЗОВАТЕЛЬ'


В итоге получим ncftp-3.2.1-i486-1.lzm - модуль с отличным ftp-клиентом.

* Мы можем свободно пользоваться пакетами для Slackware 12.1, поскольку Slax 6.0.7 построен на основе 12.1-й версии.

dir2lzm

Теперь попробуем сделать модуль из произвольного каталога. Для экспериментов возьмем ht-2.0.14 (это шестнадцатеричный редактор и не только). Приступим (текущий каталог - "my_slax"):


mkdir env
wget -c http://prdownloads.sourceforge.net/hte/ht-2.0.14.tar.gz
tar xzf ht-2.0.14.tar.gz
cd ht-2.0.14
./configure --prefix=`pwd`/../env/
make && make install
cd ..
disk/slax/tools/dir2lzm env ht.lzm


В итоге - на выходе мы получили модуль ht.lzm своего собственного приготовления. Теперь, после загрузки этого модуля в Slax'е, в каталоге "/bin" появится файл "ht" - исполняемый бинарик программы.

Вы можете напихать много разного мусора в "env/" и получить на выходе модуль. Чем мы и займемся, собственно.

* Кстати, попробуйте ncftp...lzm и ht.lzm в работе.

Кое-какие модули "специального" приготовления

Руссификация Slax

Она предельно проста - и основана на моем опыте внедрения ru_RU.UTF-8 в моей установке Slackware.

Для начала обзаведемся системой управления пакетами от Патрика. В предыдущем разделе я говорил, что не пользователи Slackware могут не делать пакета из ncftp...tgz, но теперь сделать пакет из tgz'шки нам придется.

Страница загрузки pkgtools-12.1.0

Итак, имеем пакет pkgtools-12.1.0-noarch-7.tgz. "Установим" его (мы находимся в каталоге "my_slax/"):


mkdir pkgtool
cd pkgtool
cp ../pkgtools-12.1.0-noarch-7.tgz ./
tar xzf pkgtools-12.1.0-noarch-7.tgz
rm -Rf bin usr var install pkgtools-12.1.0-noarch-7.tgz
tree
cd ..
export PATH="`pwd`/pkgtool/sbin/:"$PATH
echo $PATH


Получим:


amv@amv:~/trash/my_slax/pkgtool$ tree
.
`-- sbin
|-- explodepkg
|-- installpkg
|-- makebootdisk
|-- makepkg
|-- pkgtool
|-- removepkg
`-- upgradepkg
1 directory, 7 files
...
amv@amv:~/trash/my_slax$ echo $PATH
/home/amv/trash/my_slax/pkgtool/sbin/:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/lib/qt/bin:/usr/share/texmf/bin:.:/home/amv/env/bin/


Нужно, чтобы installpkg находился в одном из каталогов переменной PATH (что, собственно, и происходит).

Теперь скачиваем отсюда локализацию для kde и делаем (мы находимся в каталоге "my_slax"):


disk/slax/tools/tgz2lzm kde-i18n-ru-3.5.9-noarch-1.tgz kde-i18n-ru-3.5.9-noarch-1.lzm


На выходе получим kde-i18n-ru-3.5.9-noarch-1.lzm.

Отлично. Теперь нужно добавить поддержку ru_RU.UTF-8 в консоле. Это тема для отдельной статьи, поэтому я просто приведу ссылку на мой модуль, который, собственно, это и делает.

Поместите оба полученных модуля в disk/slax/modules и пересоберите образ - русский язык должен появится.

Настройки пользователя

Итак, нам нужно сохранить между сеансами настройки вашего пользователя (в Slax). Разумеется, можно их сохранять на отдельный носитель, но это не есть кошерно.

Выход прост: загрузите Slax в эмуляторе (обязательно необходимо подключение по сети), настройте DE должным образом, после чего загрузите на свою основную машину каталог "/root" из Slax'а (например, в наш каталог "env/") - вам останется только собрать новый модуль, в котором будет только домашний каталог Slax'овского root'а со всеми сделанными вами изменениями.

Почитать

источник

Неактивный атрибут "скрытый" или как снять атрибут скрытый после вируса

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