CEX.io

пятница, 11 ноября 2011 г.

Отмена перехода на зимнее/летнее время в 2011г. для ОС Linux

   Для корректной работы, требуется обновить настройки
временных зон Linux.
   Ниже приведена краткая инструкция, о том как это правильно сделать.

- Проверить корректность настройки, можно следующим образом.

Настройка samba сервера с включенной SELinux

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

воскресенье, 6 ноября 2011 г.

Настройка отмены перехода на летнее/зимнее время в 2011г. для ОС MS Windows

     Как всем известно в 2011г. в России отменили переход на зимнее/летнее время. Это привело к необходимости обновления временных зон (Time Zones)
     У Microsoft есть утилита-редактор временных зон. Эта утилита (tzedit.exe) включена в архив, приведенный ниже.
     Можно легко изменить свою временную зону и отменить переход
на летнее зимнее время в ручную, с помощью простых шагов:

воскресенье, 16 октября 2011 г.

Монтирование каталогов по SSH используя sshfs и fuse

     Можно легко и безопасно получить доступ к удаленной файловой системе используя sshfs и fuse с помощью команды монтирования (mount) удаленной файловой системы, по зашифрованному соединению посредством ssh.
     Таким образом прозрачно получаем доступ к удаленным файлам, как будто они на Вашей машине. Только нужно помнить, что если скорость соединения будет медленной, то естественно и доступ будет медленным.

воскресенье, 19 июня 2011 г.

Автоматическое отключение индексации внешних ссылок на JavaScript в blogger.com

Один из методов оптимизации, предполагает отключение
индексации внешних ссылок, рядом поисковых систем(google.com,yandex.ru и т.д.)

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

Чтобы добавить этот скрипт на свой блог в blogger.com нужно:

воскресенье, 12 июня 2011 г.

AR.Drone платформа с Open API

Летающий робот AR.Drone открывает свое API для новых разработок игр основанных на расширенной/дополнительной реальности. Просмотреть потенциал игр для AR.Drone можно тут.

Компьютерное зрение OpenCV и PCL библиотеки с открытым исходным кодом

OpenCV - библиотека с открытым исходным кодом, для реализации компьютерного зрения в реальном времени. Библиотека свободна как для академического или коммерческого использования. Первоначально написана на C но имеет C++ интерфейс включая новые разработки. Также есть полный интерфейс для Python.

PCL(Point Cloud Library) - всеобъемлющая открытая библиотека для n-D Point Clouds и обработки 3D геометрии. Библиотека содержит многочисленные высококлассные алгоритмы: фильтрации, функции оценки, реконструкции поверхности, регистрации, подгонки моделей, сегментации и др.

Движки с открытым исходным кодом для синтеза голоса

MARY - платформа с открытым исходным кодом написанная на Java, для много языкового синтеза речи. Первоначально система была разработана, как совместный проект DFKILanguage Technology lab и институтом фонетики. В настоящий момент проект ведется DFKI.
В настоящее время платформа поддерживает много языков, включая русский. Есть инструменты автоматизации добавления других языков и других голосов, а также создания выбранных модулей.

OpenEars - iOS библиотека с открытым исходным кодом для двустороннего синтеза/распознавания речи на английском для iPhone и iPad устройств, которая использует CMU Pocketsphinx, CMU Flite, и MITLM библиотеки.

четверг, 26 мая 2011 г.

Примеры быстрого поиска информации в google

      Обратите внимание, что это дополнительные операторы, которые чаще всего используются спам-роботами, спам оптимизаторами и другими людьми, которых google не очень любит, то вы можете получить страницу ошибки с кодом 403 - отказ в доступе, вместо ожидаемого результата. Не пугайтесь, если это случится, это не относится к вам / вашему ПК / либо поиску, просто Google начинает немного нервничать ;)

Следующие вещи нужно знать:
  • google не чувствителен к регистру: поиск слова Яблоко даст такой же результат, что и поиск варианта ЯбЛоКо, либо любой другой вариант записи
  • операторы поиска чувствительны к регистру: при поиске Вася OR Петя, OR -используется как оператор поиска google, в то время как Вася or Петя не использует or, как оператор поиска
  • по умолчанию google ищет все введенные Вами термины. также учитывается относительный порядок этих терминов
  • google исключает из поиска наиболее встречающиеся слова (также называемые стоп словами) "я", "ты", "вы", "мы" и т.д.

воскресенье, 22 мая 2011 г.

Движки с открытым исходным кодом для распознавания голоса

Наиболее известные движки, для распознавания слитной речи
(преобразования речи в текст/speech recognition), с открытым исходным кодом.
  • CMU Sphinx - движок по распознаванию голоса, поддерживаемый институтом Карнеги Меллон
  • HTK - Инструменты для работы со скрытой марковской моделью/Hidden Markov Model Toolkit, поддерживаемый Кембриджем CUED HTK LVR
  • Julius - Высокопроизводительный двух проходной движок (LVCSR) распознавания слитной речи, с большим словарным запасом, разрабатываемый с 1997 года, и поддерживаемый "Консорциумом распознавания слитной речи (CSRC), Япония" (2000-2003), в настоящее время "Консорциумом интерактивных речевых технологий (ISTC)"

воскресенье, 15 мая 2011 г.

FC MpTool - настройка/изменение(фиксация) реального размера Flash диска

   FC MpTool v04.02.01 - продвинутый, очень мощный инструмент обновления настроек, контроллеров Flash дисков. Обновление может понадобиться, например, если вы купили китайскую Fake(подделку) такую, как Kingston DataTraveler 256GB , реальный размер которой составляет всего 1,5-2Gb, вместо заявленных 256Gb. Визуально вроде бы и размер соответствует заявленному, и запись на диск без ограничений, только есть одна очень большая проблема. При чтении данных и сравнении с оригинальным эталоном эти данные не совпадают и вместо записанной информации читаются одни нули. К слову сказать, оставшийся свободный размер диска вычисляется правильно, даже при попытке записи более двух гигабайт.

Пользоваться программой очень просто. Опишем процесс по шагам.

понедельник, 9 мая 2011 г.

Дешевый Jennic ZigBee-модуль на JN5139 с ценой около 6$

    На базе микросхемы ZigBee - трансивера второго поколения JN5139 можно построить недорогой ZigBee-модуль со стоимостью комплектующих около 6 долларов США. Компания Jennic бесплатно предоставляет ZigBee-стек покупателям своего трансивера JN5139, поэтому платить за программное обеспечение не придется. Подобный модуль может стать великолепной основой, для построения компонентов умного дома, а также других Hi-Tech устройств.

Пример макета такого ZigBee модуля

    Для снижения себестоимости в предлагаемом модуле используется антенна в виде проводников печатной платы. Всю подробную информацию по данному модулю можно найти на сайте компании Jennic.

воскресенье, 1 мая 2011 г.

Список всех русских блогов на *.blogspot.com

Показать все блоги на *.blogspot.com

Это один из множества возможных вариантов поиска.
Для поиска необходимо ввести в строке запроса: site:blogspot.com на www.google.ru
Либо просто кликнуть на ссылку в начале этого сообщения.

Для поиска по другим сайтам нужно ввести site:yousitename.ru,
т.е. любое требуемое доменное имя.

PS:
      Детальное описание поисковых запросов можно найти по ссылкам:
      Базовый поиск google.ru
      Особенности поиска google.ru


среда, 27 апреля 2011 г.

журнал ПРОграммист (программирование и не только)

Интересный журнал: http://procoder.info/

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

Рекомендую! ;)

архив номеров: http://procoder.info/index.php/dl/issues

вторник, 26 апреля 2011 г.

Мультиплатформенный менеджер паролей LastPass

Описание:
     Плагин для браузера

Особенности:
  • Простота (Вход одним щелчком)
  • Везде (Автоматическая синхронизация, из любого места)
  • Защита (От фишинга, мошенничества, вредоносных программ)
  • Безопасность (Шифрование, мастер пароль, локальное хранение данных)
  • Бесплатен (На всех компьютерах)
  • Кросплатформенность (Mac, Windows, Linux)

Поддерживаемые OS:
  • Windows
  • Linux
  • Mac OS
  • webOS
  • iOS
  • Symbian OS
  • Android OS
  • Windows Phone 7
  • BlackBerry
Поддерживаемые браузеры:
  • Internet Explorer
  • Firefox
  • Safari
  • Chrome
  • Opera
 http://lastpass.com/

воскресенье, 24 апреля 2011 г.

wrapper с дополнительными возможностями (chroot/jail,clearenv,unset_env,set_env,chdir etc.), на основе lighttpd wrapper

В сети я отыскал несколько настраиваемых wrapper:
такие как: exec-wrapper, execwrap
  • первый это простой генератор настраиваемой "обертки(wrapper)", а именно выполняемого файла с возможностью настройки переменных окружения и установки прав SUID, SGID на выполняемый файл. возможность chroot/jail тут отсутствует.
  • второй это "обертка(wrapper)" для lighttpd web сервера. Очень гибкая версия с дополнительными проверками прав при запуске, но к сожалению настройка переменных окружения при запуске отсутствует. Так же отсутствует chroot/jail.
Мне не подошел ни первый вариант, ни второй. Пришлось написать свою версию "обертки(wrapper)" объединив и улучшив эти два варианта, добавив возможность chroot. За основу взят второй вариант, patch для которого приведен ниже. Из первого была взята только идея, но реализацию пришлось поменять, для лучшей переносимости.

создадим папку проекта:
mkdir jail-wrap; cd jail-wrap
в папке создадим следующие файлы:

execwrap.patch:


configure.ac:


Makefile.am:


build.sh:


Выполним следующие команды:
chmod 755 build.sh
./build.sh

результатом работы будет файл конфигурации:
configure

пример использования:
./configure --prefix=/usr \
    --program-prefix=test- --program-suffix=2 \
    --enable-chroot \
    --with-parent-uid=100 \
    SET_ENV=test1=1\\ntest2=2 \
    UNSET_ENV=testn1=1\\ntestn2=2

где SET_ENV,UNSET_ENV список переменных,
которые нужно установить/очистоить для разделения
переменных используется символ "\\n"

либо пример номер 2:
./configure --prefix=/usr \
    --program-prefix=whois- --program-suffix=2 \
    --with-parent-uid=100 --enable-chroot \
    SET_ENV=test1 \
    UNSET_ENV=test1

где SET_ENV,UNSET_ENV имена файлов, из которых будут браться
списки переменных. По одной в строке name=value.

и наконец выполним:
make
make install-strip

Скачать все файлы (вариант 1)
Скачать все файлы (вариант 2)

воскресенье, 17 апреля 2011 г.

Сканирование портов онлайн

сканировать сеть на уязвимости можно
этим сетевым инструментом:
http://www.t1shopper.com/tools/port-scan/

Документация по Linux Kernel (программирование)

При программировании в Linux, полезно использовать эту
online документацию: http://kernel.org/doc/man-pages/

аналог MSDN только, для Linux ;)

также тут можно получить последнюю версию ядра.

Права доступа в Linux (chmod/chown)

Каждый файл или папка в Linux имеют свои права доступа.

Есть 3 типа прав:
     чтение(r),запись(w),выполнение(x)

Права определяются для 3-х типов пользователей:
     владельца(u), группы(g), всех других (o)

итак права каждого файла, это 9 бит информации (3 типа прав * 3 типа пользователей), соответственно каждый бит может быть установлен (=1) доступ разрешен, или сброшен(=0) доступ запрещен.

при назначении прав принято использовать восьмеричную(octal) систему счисления.

текстовое представление прав(10 символов):
      - rwxr- - r - -
      0123456789

символ в позиции 0:
      "-" -  обычный файл, "d" - папка, "l" - ссылка

символы в позиции 1-3:
      "rwx" - права владельца

символы в позиции 4-6:
      "r - -" - права для группы


символы в позиции 7-9:
      "r - -" - права для всех остальных

таблица для определения прав:
                                       
восьмеричноетекстовоедвоичноеописание
0 - - - 000 Все типы доступа запрещены
1 - - x 001 Разрешено выполнение
2 - w- 010 Разрешена запись
3 - wx 011 Разрешена запись и выполнение
4 r - - 100 Разрешено чтение
5 r - x 101 Разрешено чтение и выполнение
6 r w- 110 Разрешено чтение и запись
7 rwx 111 Все типы доступа разрешены

Как видно из таблицы, права легко вычисляются
простым суммированием. 1=выполнение, 2=запись, 4=чтение.
например требуется выполнение(1) и чтение(4), получаем 1+4=5

пример 644:
      - владелец(u) чтение и запись
      - группа(g) только чтение
      - другие(o) только чтение

пример 755:
      - владелец(u) все права
      - группа(g) чтение и выполнение
      - другие(o) чтение и выполнение

в языках программирования например таких как C,
к правам добавляют 0 в начале каждого числа, что означает, что число восьмеричное, т.е. пишут 0644 вместо 644. При изменении прав с коммандной строки как правило этого не требуется.

Четырехзначное представление прав(4755), дополнительные права
биты SUID, SGID, sticky:
  • SUID или setuid: изменить "User ID" во время выполнения
  • SGID или setgid: изменить "Group ID" во время выполнения
  • sticky бит: запрещает удаление для всех пользователей кроме владельца. Ранее бит означал "держаться" в памяти после завершения процесса

Таблица. Числовое представление дополнительных прав:
                                       
восьмеричноедвоичноеописание
0 000 Нет дополнительных прав
1 001 Установлен sticky бит
2 010 Установлен setgid бит
3 011 Установлены sticky и setgid биты
4 100 Установлен setuid бит
5 101 Установлены setuid и sticky биты
6 110 Установлены setuid и setgid биты
7 111 Все дополнительные права разрешены

Текстовое представление дополнительных бит:
дополнительные биты обозначаются следующими символами:
      "S","s" - SUID, SGID
      "T","t" - sticky бит
позиция этих бит, совпадает с позициями (3,6,9) прав выполнения "x"
впри этом, если прав на выполнение нет используется "верхний регистр" т.е. большие символы. Если права на выполнение установлены используются "нижний регистр" т.е. маленькие символы.

примеры:

установлен SUID:
- r w  s -  -  -  -  -  -   установлены биты SUID и выполнение для владельца
- r  -  S -  -  -  -  -  -   установлен бит SUID, не установлен бит выполнения

установлен SGID:
- r w x r w s  -  -  -   установлены биты SGID и выполнение для группы
- r w x r -  S  -  -  -   установлен бит SGID, не уст. выполнение для группы

установлен sticky бит:
- r w x r w x r w t   установлены биты sticky и выполнение для других
- r w x r w x r  - T   установлен sticky бит, но не уст. выполнение для других

отличия действия прав, при установке на файлы и папки:
                             
правафайлыпапки
чтение чтение содержимогополучение списка файлов
запись запись содержимогоизменение списка файлов
(создание,удаление,переименование)
выполнениефайл можно выполнитьпользователь или процесс, может сделать папку "текущей/рабочей"
SUID Установить "User ID" при выполнении Перекрыть идентификатор пользователя при создании файла/папки (использовать идентификатор владельца корневой папки)
SGID Установить "Group ID" при выполнении Перекрыть идентификатор группы при создании файла/папки (использовать идентификатор группы корневой папки)
sticky запретить удаление всем, кроме владельца запретить удаление всем, кроме владельца

команда изменеия прав chmod:
    chmod [-R] права файл/папка

"-R" применить права рекурсивно ко всем файлам и подпапкам

примеры:
    chmod -R 755 folder/
    chmod 644 file
    и т.д.

есть возможность менять права не целиком, а лишь добавлять или отменять права только определенным группам пользователей
используя символы вместо восьмеричных чисел.
   "u" - пользователь/владелец
   "g" - группа пользователей
   "o" - остальные пользователи
   "a" - все группы пользователей

формат прав [ugoa][[+-=][perms], ...

примеры:
   chmod -R a+x folder/  выполнение для всех групп рекурсивно
   chmod a+rx file          чтение и выполнение для всех
   chmod u+rx,g-rx file   добавить чтение и выполнение для владельца, и
                                      отозвать права для группы
   chmod a+r,o= file       добавить чтение для всех типов групп и отозвать
                                      все права у всех других пользователей

команда изменения владельца chown:

chown [-R] владелец:группа файл/папка

примеры:
   chown -R 0:0 folder/  установить владельца/группу = root рекурсивно
   chown myuser:mygroup file установить myuser/mygroup для файла

PS:
    источник

понедельник, 28 марта 2011 г.

сбор whois информации в базу данных

Пример кода:

понедельник, 21 марта 2011 г.

Получение IP адресов домена с помощью nslookup

# получить список всех IP адресов домена
nslookup google.com | awk '/Address:/ { print $2 }' | grep -v \#

# получить один IP адрес домена
nslookup google.com | awk '/Address:/ { print $2 }' | tail -n1

# получить информацию о домене
echo "`nslookup google.com | awk '/Address:/ { print $2 }' | tail -n1`" | socat - TCP4:whois-servers.net:43

Узнаем информацию о городе, стране, доме из google.com

Для запроса используем запрос:

http://maps.google.com/maps/geo?q=russia&output=json&oe=utf8&sensor=true_or_false

возможные значения поля
output: json, csv, xml, kml
q: [любой адрес в текстовом виде, на любом языке: страна, город, улица дом]

PS:
    Можно использовать информацию из Whois запроса,
в результате получаем подробную информацию, включая GPS координаты объекта.

socat, netcat, nc прямой запрос к whois серверам!

Вместо 10.0.0.1 подставляем IP адрес, инф. о котором нужно узнать:

echo "10.0.0.1" | socat - TCP4:whois.ripe.net:43
echo "10.0.0.1" | socat - TCP4:whois-servers.net:43
echo "10.0.0.1" | socat - TCP4:whois.arin.net:43

echo "10.0.0.1" | nc whois.ripe.net 43
echo "10.0.0.1" | nc whois-servers.net 43
echo "10.0.0.1" | nc whois.arin.net 43

DOS vs VirtualBox for Linux

1. Скачиваем и устанавливаем VirtualBox
2. Создаем новую виртуальную машину
    "Создать"->"Вперед>"
    Введем имя "Dos" -> "Вперед>" -> "Вперед>" -> "Вперед>" -> "Вперед>"
    Выберем "образ фиксированного размера" -> "Вперед>" -> "Вперед>"
    -> "Финиш"
3. Устанавливаем Dos (скачиваем один из образов для установки)

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

# создадим образ диска 1.44Mb
dd bs=512 count=2880 if=/dev/zero of=~/floppy.img
# форматируем
mkfs.msdos ~/floppy.img
# монтируем
sudo mkdir /media/floppy/
sudo mount -o loop ~/floppy.img /media/floppy/

Далее можно подключить созданный образ к виртуальной машине
и использовать его для обмена файлами

Есть более оригинальный способ. Можно монтировать образ виртуального HDD диска (Dos.vdi).

# читаем 4 байта (без знаковое целое) по смещению 76
od -j76 -N4 -td4 Dos.vdi | awk 'NR==1{print $2;}' #=2 (фикс. размер диска)
# читаем 4 байта (без знаковое целое) по смещению 344
od -j344 -N4 -td4 Dos.vdi | awk 'NR==1{print $2;}' #=8192 (начало диска)

#копируем таблицу разделов диска в отдельный файл
dd if=Dos.vdi of=vdstart bs=1 skip=8192 count=1b >/dev/null #8192(начало диска)

# узнаем характеристики диска
/sbin/sfdisk -luS vdstart
rm vdstart

По этим данным можно вычислить начало диска и его общий размер:
# offset = 8192(начало диска)+63(начало)*512(размер сектора) = 40448
# size = 1048257(число секторов)*512(размер сектора) = 536707584
sudo mkdir /media/Dos/
sudo mount Dos.vdi /media/Dos -t auto -o loop,offset=40448

Полученную папку /media/Dos можно использовать для прямого перемещения данных в виртуальную машину

Например: для моего случая мне потребовалась документация по Dos (Tech Help 6.0) FAsm и отладчик Swat. И другие инструменты.

воскресенье, 20 февраля 2011 г.

lighttpd: пишем mod_rpaf

Скачиваем последнюю версию lighttpd
Читаем инструкцию по написанию плагина для lighttpd
Исходный код модуля для apache берем тут

Приступаем:
cd lighttpd-1.4.28/src
cp mod_skeleton.c mod_rpaf.c

После небольшой правки получаем текст приведенный ниже.
Скопируем приведенный ниже текст и вставим в mod_rpaf.c:


добавим строки в файл src/Makefile.am
lib_LTLIBRARIES += mod_rpaf.la
mod_rpaf_la_SOURCES = mod_rpaf.c
mod_rpaf_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
mod_rpaf_la_LIBADD = $(common_libadd)

собираем lighttpd
./configure --prefix=/usr ...
make
sudo make install

конфигурационный файл lighttpd.conf:
server.port = 8081
server.modules = ("mod_rpaf", ....)
rpaf.enable = 1 # 1-enable module, 0-disable module
rpaf.proxy_ips = ( "127.0.0.1", ... ) # proxy servers address
rpaf.sethostname = 1 # 1-enable set "Host:" using "X-Forwarded-Host" or "X-Host", 0-off
rpaf.header = "X-Real-IP" # "X-Forwarded-For" if commented

конфигурационный файл nginx.conf:
http {
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  client_max_body_size 10m;
  client_body_buffer_size 128k;
  proxy_connect_timeout 90;
  proxy_send_timeout 90;
  proxy_read_timeout 90;
  proxy_buffers 32 4k;
}

server { # simple reverse-proxy
  listen 80;

  server_name test.org;
  access_log /var/log/nginx/lighttpd.access.log;

  # pass requests for dynamic content to rails/turbogears/zope, et al
  location / {
    proxy_pass http://127.0.0.1:8081;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    #proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Host myhost;
  }
}

перезапускаем оба сервиса:
service nginx restart
service lighttpd restart

модуль написан по аналогии с mod_rpaf для apache
Это первая версия модуля, прошу протестировать его всех,
кому он может быть полезным.
в случае обнаружения багов, пишите по адресу: isaleksey@gmail.com

github
cd lighttpd-1.4.28/src
git clone git://github.com/symalex/mod_rpaf.git .

среда, 9 февраля 2011 г.

Создание SSH туннеля

пример:

перебросить локальный порт 2000 на удаленный порт 25
ssh -f -L [bind_address:]2000:local.org:25 -nNT user@remote.org

пояснения:
-f                              - перейти в фон после запуска
local.org                  - локальный сервер
user@remote.org    - удаленный сервер с которым соединяемся
[bind_address:]       - необязательный параметр (по умолч.: localhost)
-L 2000                    - локальный порт для начала туннеля
:25                           - удаленный порт для конечной точки туннеля
-N                            - не выполнять удаленных команд
-n                             - связать стандартное устройство ввода с /dev/null
-T                             - не создавать псевдо tty на удаленной системе

пример:

перебросить удаленный порт 2000 на локальный порт 25
ssh -f -R [bind_address:]2000:local.org:25 -nNT user@remote.org

пояснения:
[bind_address:]      - необязательный параметр (по умолч.: localhost)
-R 2000                  - удаленный порт 2000

добавить в sshd_config:
GatewayPorts clientspecified

Использование Bourne shell (bash) как CGI скрипта

Пример скрипта:

остается только скопировать это
в файл http://server.org/cgi-bin/test.sh
и установить права доступа: chmod 755 test.sh

Переменные окружения доступные внутри CGI скрипта:

http://tldp.org/LDP/abs/html/networkprogramming.html

понедельник, 7 февраля 2011 г.

Настройка доступа SSH через SSHD демона

Настройки сервера:

1. Настраиваем /etc/openssh/sshd_config
    DSAAuthentication yes
    PasswordAuthentication no                                                     
    PermitEmptyPasswords no

2. Генерируем пару ключей и устанавливаем пароль
    ssh-keygen -b 1024 -t dsa -C "home machine"
    
    пароль можно поменять:
    ssh-keygen -p [-N новый_пароль] [-f keyfile]

    файлы готовы:
    публичный ключ: (нужно добавить в ~/.ssh/authorized_keys)
   ~/.ssh/id_dsa.pub
   
    установим права доступа
    chmod 600 ~/.ssh/id_dsa ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
 
    добавляем публичный ключ к списку
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

    приватный ключ: (должен храниться в безопасном месте)
    ~/.ssh/id_dsa
   
    переместим его на удаленную машину-клиент
    выполним на клиентской машине:
    scp user@host.org:~/.ssh/id_dsa ~/.ssh/

3. Перезапускаем сервис
    service sshd restart

Настройки клиента:

-вручную
1. добавляем ключи
    ssh-add ~/.ssh/id_dsa
    [вводим пароль]

2. соединяемся
    ssh user@mysite.com

-автоматизация+псевдоним(alias)
1. создаем фал vi ~/.ssh/config

2. прописываем параметры
    Host myhost
    User usr
    Port 2222
    HostName host.org
    IdentityFile ~/.ssh/id_dsa

3. соединяемся
    ssh myhost

воскресенье, 6 февраля 2011 г.

Документация по Git

Достаточно подробная документация по Git: http://progit.org/book/ru/
Опыт работы: http://habrahabr.ru/blogs/Git/60347/

Настройка сервера:

1. подключаемся к серверу
    ssh myserver.com

2. переходим в нужный каталог
    cd /var/git && mkdir myapp.git && cd myapp.git
    git --bare init

3. выходим
    exit

Настройка клиента:

1. получаем локальную копию
    git clone git@myserver.com:/var/git/myapp.git

2. добавляем файлы
    git add .

3. сохраняем в локальном репозитории
    git commit -a -m "Initial commit"

4. отправляем изменения на удаленный репозиторий
    git push origin master

добавление списка игнорирования(svn+git)

1. создаем файл
    vi .svnignore

2. добавляем список
    .git
    .gitignore

3. установим свойство
    svn propset svn:ignore -F .svnignore .

4. проверим
    svn propget svn:ignore .

5. добавим файл в репозиторий
    svn add .svnignore

6. отправляем в репозиторий
    svn commit -m "added .svnignore"

четверг, 27 января 2011 г.

Монтирование файловой системы в Linux

1. перемонтирование корневой файловой системы в Linux
    mount -n -o rw,remount /

2. монтирование windows/samba сетевых папок
    добавляем в fstab:
    mkdir -p  /mnt/Download
    //myhost/Download /mnt/Download cifs auto,credentials=/home/usr/.credentials,rw,uid=1000,_netdev,user,iocharset=utf8,codepage=866,noexec,nosuid 0 0
 
    содержимое файла: /home/usr/.credentials
    username=myusername
    password=mypasswd

вторник, 18 января 2011 г.

appweb-3.2.3-3

Найдена ошибка в исходном коде этой версии: appweb-3.2.3-3
Ошибка проявляется при использовании Redirect с любым кодом и адресом. Сервис аварийно завершается.

[http_pipeline.patch]
--- appweb3_2/src/http/pipeline.c.orig    2011-01-05 11:19:35.105182966 +0600
+++ appweb3_2/src/http/pipeline.c    2011-01-05 11:20:20.145183017 +0600
@@ -48,12 +48,12 @@
      */
     alias = req->alias = maGetAlias(host, req->url);
     mprAssert(alias);
+    location = req->location = maLookupBestLocation(req->host, req->url);
+    mprAssert(location);
     if (alias->redirectCode) {
         maRedirect(conn, alias->redirectCode, alias->uri);
         return;
     }
-    location = req->location = maLookupBestLocation(req->host, req->url);
-    mprAssert(location);
     req->auth = location->auth;
     resp->extension = getExtension(conn);
[http_pipeline.patch]

Linux chroot

Практический пример размещения приложения/сервиса в chroot окружении.

# определим загружаемые библиотеки
cd /[path_to_nginx]/
ldd nginx
    libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7eb1000)
    libdl.so.2 => /lib/libdl.so.2 (0xb7eac000)
    ...
    libexpat.so.0 => /lib/libexpat.so.0 (0xb775b000)

# копируем все библиотеки в /jail
mkdir -p /jail/lib/ && cd  /jail/lib/
cp /lib/libcrypt.so.1 .
cp /lib/libdl.so.2 .
 ...
cp /lib/libexpat.so.0 .

# копируем все необходимые файлы используемые приложением
cd /[path_to_nginx]/
strace ./nginx 2>&1 | grep open
   open("/etc/ld.so.cache", O_RDONLY)      = 4
   open("/usr/lib/libxml2.so.2", O_RDONLY) = 4
   ...
   open("/usr/local/nginx/conf/nginx.conf", O_RDONLY|O_LARGEFILE)=4

# внутри jail структура каталогов должна повторять текущее положение
mkdir -p /jail/etc/ && cd /jail/etc/ && cp /etc/ld.so.cache .
mkdir -p /jail/usr/lib/ && cd /jail/usr/lib/ && cp /usr/lib/libxml2.so.2 .
...
mkdir -p /jail/usr/local/nginx/conf/ && cd /jail/usr/local/nginx/conf/ &&
cp /usr/local/nginx/conf/nginx.conf .

#создаем null устройство
mkdir -p /jail/dev/
mknod /jail/dev/null c 1 3
chmod 666 /jail/dev/null

#- если нужны другие устройства (для других сервисов)
#JAILPATH=/jail
#mknod -m 666 $JAILPATH/dev/urandom c 1 9
#mknod -m 666 $JAILPATH/dev/null c 1 3
#mknod -m 666 $JAILPATH/dev/zero c 1 5
#mknod -m 666 $JAILPATH/dev/tty c 5 0

# запускаем nginx в jail (тюрьме)
chroot /jail/ /sbin/nginx

PS:
    Помещение приложения в jail не исключает побега из созданной тюрьмы.