среда, 30 декабря 2009 г.

xneur gxneur установка (аналог Punto Switcher)

доустанавливаем пакеты
yum install -y libX11-devel aspell-devel gstreamer-devel pcre-devel xosd xosd-devel libnotify-devel libglade2-devel
в каталоге сирцов xneur
./configure && make && make install
ln -s /usr/local/lib/pkgconfig/xnconfig.pc /usr/lib/pkgconfig
в каталоге сирцов gxneur (фронтенд для гнома для кедов kxneur(для четвертых пока нет!))
./configure && make && make install

среда, 23 декабря 2009 г.

Восстановление данных и файловых систем

Восстановление разделов (елси они не видятся fdisk) testdisk & hdparm (http://man-linux.ru/notes/solve/testdisk/, http://rlab.ru/forum/topic,405.0
scalpel - также программа для восстановления данных
1). ext3
сначала отмонтировать раздел (пакет ext3grep)
# ext3grep /dev/sda1 --dump-names - список файлов для восстановления
# ext3grep /dev/sda1 --restore-file /home/user/work/file.txt - файла
# ext3grep /dev/sda1 --restore-file /home/user/work/ - каталога
# ext3grep /dev/sda1 --restore-all --after=1231543545 - всех с момента (секунды с начала эпохи Unix)
2). ntfs (http://man.linux-ntfs.org/ - описание всех утилит)
пакет ntfsprogs
# ntfsundelete /dev/sda5
6006 FN.. 21% 2007-07-11 152579024 Dd705
6013 FR.. 100% 2007-03-29 574 make
3 колонка - % сохранности файла, если 100% можно восстановить
# ntfsundelete -p 100 /dev/sda5 - вывести только с 100% сохранностью
# ntfsundelete /dev/sda5 -p 100 -t 2d - тоже + удаленные за последние 2 дня
востановим файл с inode (1 колонка) 6013 в каталог /undelete
# ntfsundelete /dev/sda5 -u -i 6013 -d /undelete
# ntfsundelete /dev/sda5 -u -m "*.doc" - восстановление по маске
# ntfsundelete /dev/sda5 -S 5k-6m - восстановление по длине
# ntfsundelete /dev/sda5 -u -m "*" -d /undelete - все файлы
3). FAT, UFS, EXT3
# photorec - выбирает диск, потом выбираем пункт меню Intel, раздел, тип файловой системы, каталог восстановления, Y
Недостатки - имена не восстанавливает, дает сбои (битые файлы), вдобавок к нему нужно комплект утилит Sleuth Kit:
Просмотр удаленных файлов
# fls -rd /dev/sda7 (-r - рекурсивно по каталогам, -d - показывать только удаленные файлы)
r/r * 1214015(realloc): andrey/.xauthFPV1Nv-n
d/r * 4472833: test
4472833 - номера инод, а realloc - означает что файл можно восстановить (3 строка),
Пример использования:
# fls -rd /dev/sda7 | grep -v '(realloc)' | less (конкретный файл grep 1.jpg)
Восстановление файла
# icat -r /dev/sda7 1213725 >/home/vova/Downloads/1.doc
Восстановление всех файлов:
# for i in 'fls -rd /dev/sda7 | grep -v '(realloc)' | awk {'print $3'} | tr -d [:]'; do icat -r -f fat /dev/sdb1 $i > /home/andrey/tmp/inode-$i ; done
4). Починка файловых систем
fsck.vfat - FAT12, FAT16, FAT32
fsck.ufs - UFS, UFS2, FFS
ntfsfix - NTFS
К сожалению, ntfsfix не способна полностью вылечить NTFS. Она лишь исправляет некоторые из ее проблем и устанавливает флаг принудительной проверки файловой системы, так что следующая перезагрузка в Windows повлечет за собой запуск chkdsk для полной проверки ФС. Используя виртуальную машину, мы можем избежать необходимости перезагрузки в Windows. Для ЭТОГО:
1. Запускаем виртуальную машину и устанавливаем винду на виртуальный жесткий диск.
2. Отмонтируем раздел, содержащий файловую систему NTFS.
3. Запускаем виртуальную машину, в качестве первого жесткого диска которой указываем виртуальный диск с Windows, а второго — наш настоящий жесткий диск.
4. С помощью стандартных средств Windows запускаем проверку NTFS-раздела.
5). Копирование разделов
на новом диске создается раздел, идентичный по размерам источнику, и выполняется команда «dd if=раздел1 of=раздел2 bs=1m». Таким же образом можно скопировать и NTFS-раздел, но в пакете ntfsprogs для этой цели есть более подходящая утилита. Программа ntfsclone идентична по функциональности команде dd за исключением двух особенностей. Во-первых, она не копирует незанятые участки файловой системы, и перемещение происходит быстрее, а образ раздела (если ты создаешь образ) занимает меньше места. Во-вторых, ntfsclone способна хранить образ в специальном сжатом файле, который удобно передавать на другие машины. Для клонирования раздела:
# ntfsclone --overwrite /dev/hda1 /dev/hdb1
А для создания образа:
# ntfsclone --save-image --output backup.img /dev/hda1
Утилита ntfsclone особенно удобна, если ты решил скопировать установленный Windows на целый парк других машин (учебный класс или офис). Для этого достаточно установить Windows на одну машину и создать образ, который затем можно выложить в шару и с помощью Linux LiveCD залить на другие машины. Чтобы они смогли загружаться, придется также скопировать MBR-запись диска:
# sfdisk -d /dev/sda > /share/sda-sfdisk.dump
# dd if=/dev/sda bs=512 count=1 of=/share/sda-mbr.dump
А затем записать ее на диск всех машин:
# sfdisk /dev/sda < /share/sda-sfdisk.dump
# dd if=/share/sda-mbr.dump of=/dev/sda
6). Перенос данных
Если ты решил полностью перейти на Linux, но не хочешь использовать различные ухищрения и ntfs-3g для доступа к своим старым данным, расположенным на NTFS-разделе? Ведь этот раздел может занимать большую часть диска, и нет никакой возможности просто скопировать его содержимое на новый раздел, отформатированный в ext3/ext4. В этом случае тебе на помощь опять придут утилиты из пакета ntfsprogs, а точнее одна из них — ntfsresize, которая позволит копировать данные небольшими порциями в новую файловую систему с последующим уменьшением размера NTFS-раздела и увеличением ехt3/ехt4-раздела. Для этого тебе понадобится какой-нибудь LiveCD, содержащий ntfsprogs и e2fsprogs версии не ниже 1.41 (для поддержки ext4, если ты, конечно, собираешься переносить данные на нее). Также очень желательно, чтобы LiveCD содержал свеженький gparted, потому что изменять размер вручную трудно и опасно (кроме изменения размера самой ФС, предстоит менять размер раздела с помощью fdisk, одна ошибка и всю операцию придется начинать сначала). Загружаемся с LiveCD и монтируем разделы жесткого диска. Допустим, его размер составляет 120 Гб. Из них 80 Гб — под завязку набитый NTFS-раздел, а остальные 30 Гб (да, именно 30, после перевода маркетинговых гигабайт в настоящие объем диска оказывается равным примерно 111 Гб) — это раздел с установленным Linux, занятость которого составляет 5 Гб. Значит, наше «окно» равно примерно 25 Гб. Перемещаем файлы с NTFS-раздела на ext3/ext4- раздел до тех пор, пока их совокупный размер не станет равен размеру окна. В результате последний оказывается полностью заполненным, а первый «худеет» на 25 Гб. Отмонтируем оба раздела и запускаем gparted. Выбираем NTFS-раздел, жмем вторую кнопку мыши, выбираем Resize/Move и уменьшаем раздел на размер окна, выбираем ехt3/ехt4-раздел и увеличиваем его на тот же размер окна (раздел придется сдвинуть к началу диска, а затем увеличить). Так мы получаем еще 25 Гб освободившегося места, что позволит нам скопировать часть файлов, а затем вновь изменить размер. Четыре таких прохода, и мы полностью удаляем NTFS-раздел, а раздел ext3/ext4 расширяем на весь диск.

live cd с данными утилитами можно взять www.sysresccd.org

источник http://forum.http-soft-soft.ru/vosstanavlivaem-dannye-s-t52.html

Другие утилиты
1). Magic Rescue (magicrescue-1.1.9)
Папка восстановления должна быть на другом диске (флешка например)
рецепты восстановления в папке recipes (или искать в инете)
hdparm -d1 -c -u1 /dev/device - включения прямого доступа к устройству (делается сначала - можно обойтись без нее но время восстановления увеличится)
минимальный запуск указываем рецепт и директорию восстановления
magicrescue -d directory -r recipe device 
magicrescue -d /mnt/external -r /usr/local/share/magicrescue/recipes/zip /dev/sda2 (можно обойтись без полного пути просто zip)
Можно задать поиск для многих форматов указанием директории что содержит все рецепты для этих форматов. Дополнительные ключи
-M io - выводит результаты работы в консоль
-b blocksize - ограничение результатов в файлы, которые начинаются на разных размерах блоков (стандартный 512)
Если прервали Ctrl+c (ниже пример вывода утилиты где она это подсказывает) то можно продолжить с этого места
magicrescue: killed by signal 2 at offset 0x95D334D68 in file /dev/sda2
Use the -O option to resume from this offset later
пример
-O = 0x95D334D68 (-O [+|-|=][0x]offset, где - до позиции + после нее)
В папке /usr/local/share/magicrescue/tools/ для подальшей организации найденных файлов есть утилиты.
2). File Ripper - file formats: PNG, HTML, GIF, ZIP, LBM, PBM, ANM, BAT, BAS, RTF, HLP, WAV, WRI, JPG, ARJ, EXE, ANS, ZZT, FRM, text BAS, BMP, MZB, FLI, MSP, DOC, MZX, GDM, IT, S3M, SAV, BRD, LZH/LHA, MOD, XM, VOC, SVX, ABM, QUETZAL, and certain obscure MBBS-related formats corresponding to the files CALLERS, USERS.DAT and CONFIG
http://home.minlos.no/~peter.munsterhjelm/km
даже если дисковый образ или файловая система повреждены.
3). http://www.cgsecurity.org/wiki/PhotoRec общее ознакомление
качаем http://www.cgsecurity.org/wiki/TestDisk_Download
использование оригинальное
http://www.cgsecurity.org/wiki/PhotoRec_Step_By_Step
переведенное
http://www.cgsecurity.org/wiki/PhotoRec_Шаг_за_шагом

пятница, 18 декабря 2009 г.

состояния tcp-соединений

1). INVALID - пакеты, пришедшие вне пределов TCP-окна.
2). CLOSING - клиент отправляет FIN-пакет серверу, затем получает FIN-пакет от сервера и отсылает подтверждение закрытия -- FIN/ACK-пакет (одновременное закрытие соединения)
3). TIME_WAIT - CLOSING + прохождения заключительного FIN/ACK-пакета от сервера (одновременное закрытие соединения). чтобы дать время на прохождение "опоздавших" пакетов. "Опоздавшие" пакеты могут появиться в результате нарушения порядка прохождения пакетов по сети, т.е. в конечную точку пакеты приходят не в том порядке в каком они были отправлены. По истечении этого таймаута запись в таблице трассировщика, соответствующая закрытому соединению, уничтожается и соединеиние переводится в состояние CLOSED.
4). CLOSE-WAIT - от клиента получен FIN-пакет и в ответ отправлен FIN/ACK-пакет
5). LAST-ACK - CLOSE-WAIT + клиенту передан FIN-пакет со стороны сервера
6). ESTABLISHED - все соединения, которые благополучно миновали процедуру установления соединения, и по которым не было передано ни одного FIN-пакета
7). FIN-WAIT-1 - устанавливается после того как серверу будет передан FIN-пакет
8). FIN-WAIT-2 - FIN-WAIT-1 + получения FIN/ACK-пакета от сервера. Если от сервера FIN-пакет приходит раньше, чем FIN/ACK-пакет (ситуация "одновременного закрытия соединения"), вместо состояния FIN-WAIT-2 устанавливается состояние CLOSING.
9). LAST-ACK - сервер отправил FIN-пакет клиенту после получения FIN-пакета от клиента и передачи ему FIN/ACK-пакета. Это состояние устанавливается после CLOSE-WAIT состояния, когда ожидается прибытие заключительного FIN/ACK-пакета, после чего запись в таблице трассировщика уничтожается, и устанавливается состояние CLOSED.
10). LISTEN - это начальное состояние всех сокетов.
11). NONE - через трассировщик проходит первый пакет, то соединению присваивается этот статус.
12). SYN-SENT - клиент передаст SYN-пакет и перейдет в ожидание ответного SYN/ACK-пакета. Состояние SYN-SENT предшествует состоянию SYN-RCVD или ESTABLISHED, которое наступает после приема пакета SYN/ACK.
13). SYN-RECEIVED (SYN-RCVD или SYN-RECV) - наступает вслед за состоянием LISTEN или SYN-SENT после того, как сервер принял пакет SYN и ответил на него SYN/ACK-пакетом. Это состояние предшествует состоянию ESTABLISHED, которое, в свою очередь, наступает после получения, завершающего процедуру установления соединения, ACK-пакета.
14). Состояния UDP пакетов - Когда приходит первый UDP пакет, то он получает статус NEW, а как только через трассировщик пройдет обратный пакет -- UDP-соединению присваивается статус ESTABLISHED, но таймаут продолжает действовать. После того, как через соединение пройдет туда-обратно несколько UDP-пакетов, то для него, в таблице трассировщика, устанавливается флаг ASSURED (уверенное соединение прим. перев.) и таймаут перестает действовать.

четверг, 17 декабря 2009 г.

Roundcube прикручивание плагинов и т.д.

1). Для прикручивание плагина нужно его загрузить в папку plugins, а потом в файле /config/main.inc.php в строке $rcmail_config['plugins'] = array('userinfo','markasjunk','contextmenu'); - здесь userinfo,contextmenu - название папки с плагином

вторник, 8 декабря 2009 г.

ntlm-Авторизация под Linux на ISA

Качаем ntlmaps
Правим server.cfg
Listen port: 5865
Parent Proxy: your.proxy.com (e.g. enter the name or address of your proxy, do not enter the port as "your.proxy.com:number" as this will be taken care of in the next step)
Parent Proxy Port: port_number (usually 8080)
NT Windows Domain: domain_name (your domain)
NT Windows Username: user_name (the user name you will authenticate with)
NT Windows Password: password
(the password you will use to authenticate with the ISA Proxy)
запускаем (для автоматического запуска прописываем в rc.local)
./main.py 1>/dev/null 2>&1 &
или если пакет в виде сервиса service ntlmaps start
Ходим через локальный прокси 127.0.0.1:5865 (вместо loopback интерфеса любой действующий ip адрес)

понедельник, 7 декабря 2009 г.

thunderbird imap ошибка конкурирующих конектов

Thunderbird по умолчанию использует 5 конкурирующих конектов для подключения к IMAP серверу, а courier-imap по умолчанию позволяет 4 конкурирующих конекта с айпихи и максимум 40 конектов, чтобы это исправить в файле
/usr/lib/courier-imap/etc/imapd
нужно поставить
MAXDAEMONS=100
MAXPERIP=6
(можно и другие я поставил эти) и перезапустить сервис
[root@123 ~]# service courier-imap stop
Stopping Courier-IMAP server: imap imap-ssl pop3 pop3-ssl
[root@123 ~]# service courier-imap start
Starting Courier-IMAP server: imap imap-ssl pop3 pop3-ssl

пятница, 4 декабря 2009 г.

Сборка из исходников

1). распаковка
$ tar xvzf имя_архива.tar.gz
$ tar xvjf имя_архива.tar.bz2
2). применение патчей (перед проверить чтобы версия патча совпадала с версией программы)
$ cd исходники_программы
$ patch --dry-run -p1 < /путь/к/патчу.patch (проверка)
$ patch -p1 < /путь/к/патчу.patch (наложение)
Отмена наложенного патча ключ -R
Если патчи в зжатом виде
$ gzip -cd патч.gz | patch -p0
$ bzip2 -cd патч.bz2 | patch -p0
3). перед установкой
проверить наличие пакетов: gcc-* (компилятор), binutils (компоновщик и архиватор библиотек), libc-dev (заголовки стандартной библиотеки языка Си), make.
прочитать README из корня архива
4). кунфигурирование и сборка
$ ./configure --prefix=/usr/local (путь установки) --with-* --without-* (вкл./выкл. добавляемых в приложение компоненты) --enable-* (использование спец. кода). Потом сгенерится Makefile.
$ make
Исли в корне нет Makefile или configure значит программа использует альтернативные сборки:
scons (в корне файл SConstruct)
- устанавливаем scons и запускаем процесс компиляции $ scons PREFIX=/usr/local $ sudo scons)
- опции в README передаются scons в качестве аргументов
cmake (CMakeLists.txt)
- $ cmake . (. - сборка в текущем каталоге)
- $ make
- опции в README передаются в качестве аргументов
5). Проблемы компиляции
Checking for qt4 ... no - установить сам пакет и его заголовочный файлы *-dev
Checking for unistd.h ... no - установить заголовочный файлы (пакет искать по названию файла)
Если не помогло:
недоустановленные dev-пакеты - доустановить
устаревшии версии пакетов в дистре - сборка из исходников самой зависимости, а также зависимость зависимости и т.д.
неправильные пути поиска библиотек и заголовочных файлов (обусловлена ошибкой составителя правил для системы сборки или установкой зависимости в нестандартный каталог) - указать пути через переменны компилятора и линковщика перед запуском сборщика
$ export CFLAGS="$CFLAGS -I /usr/local/include -I /opt/include -I /usr/mysoft/include"
$ export LDFLAGS="$LDFLAGS -L /usr/local/lib -L /opt/lib -L /usr/mysoft/lib"
если зависимость в нужном месте а конфигуратор ее не видит нужно править configure коментом мест где производится поиск зависимости
если приложение не может быть собрано новым компилятором (написано в README) установи нужную версию компилятора и укажи к нему путь через переменную СС перед запуском сборщика:
$ install gcc-3.4
$ export CC="which gcc-3.4"
$ ./configure --prefix=/usr/local
6). установка
$ make (scons) install (uninstall - удаление из корня исходников)
checkinstall - создание пакетов в момент установки программы из исходников. использование вместо make install набрать
# checkinstall -R // RPM-пакет
# checkinstall -D // Deb-пакет
# checkinstall -S // Slackware
После установки strip для бинарников и библиотек с целью уменьшить их обьем, для уже установленных приложений можно так
# find / | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded
# find / | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded
7). Проблемы запуска
перечитать README, там могут быть указание где и при каких условия не работает, проверить доступность компонентов и каталогов программе, --help и проверить есть ключ дебуга, логи посмотреть.
тяжелая артиллерия strace (трассировщик системных вызовов, отслеживает все сисколлы, произведенные приложением и проверяет возвращаемое значение)
$ strace программа
вызов лучше смотреть с конца, пролистывая close и смотря open, проверить какие вернули отрицательный статус (-1) и смотреть к чему обращались (95% - права или отсутствие каталога/файла)
8). Флаги оптимизации
оптимизация выше "-О1" (или просто "-О") потенциально опасна
"-О2" не опасен большинству приложений, зато убивает низкоуровневый код с ассемблерными вставками
"-О3" (активирует агрессивный режим, идущий против стандартов) валит каждое 2 приложение.
Лучше остановится на таких флагах
О - базовая оптимизация (значительно увеличивается скорость исполнения программы)
О2 - стандартная (по сравнению с О чуть увеличит объем бинарника и скорость исполнения)
Оs - тоже О2 + флаги уменьшающие размер
fomit-frame-pointer - компилятор не сохраняет указатель на кадр стека (экономим на этом время). Может увеличить скорость программы

Если библиотеки в нестандартных каталогах и нужны при сборке ldconfig в помощь

Если непонятно, почему программа не находит что-то при конфигурации из сорцов, есть простой алгоритм:
Если пакет стоит, а configure говорит что нет, значит скорее всего нет пакета с хидерами (т.е. -devel) для одноименного пакета.
Если из сообщения вообще непонятно, чего конфигуратору нужно (типа "у вас не установлен KDE" smile.gif ) - смотрим файл configure.log в том же каталоге где патались запустить configure. Ищем там то самое сообщение, которым закончилась неудачная попытка конфигурации (оно всегда ближе к концу, непосредственно перед таблицей переменных, которые в логе всегда выводятся в конец файла).
Смотрим, чего конфигуратору не хватило - чаще всего он ищет либо какой-то хидер (.h или .hpp) либо некую библиотеку (тогда в логе будут сообщения от линкера (ld) о том, что библиотека не найдена (типа -lbla-bla not found).
В установке программ кликаем по биноклю в строке поиска, выбираем "по файлу" и вбиваем в строку не найденный файл. После чего устанвливаем найденные пакеты вместе с депенденсами.