23 дек. 2008 г.

bash fork bomb!

Никада не вставляйте в свою консоль, даже пользовательскую (хотя, если ulimit -u дает не unlimited, а какое то фиксированное число, то жить будете, можно и вставить) вот ето:

:(){ :|:& };:

web-морда для find

И еще одна интересность. Я и сам не особо проникся синтаксисом find'a, но базово что то поискать могу. Маны надо читать по данному предмету... Но если очень надо какой нить заковыристый поиск, и вы даже знаете, что именно хотите аргументировать, только подобно собаке Павлова ничО сказать не можете на find-наречии, тогда вам сюда. В принципе, можно на базе этого и синтаксис подучить, разбирая по косточкам сочетание галочек и менюшек и их корреляции с командой на выходе. Да и просто на заметку, вдруг да пригодится. Хорошие ссылки живут долго.

Bash HotKeys Tutorial

Давно уже собирался или найти изобретенный велосипед, или скомпилить на коленке свой, тьфу, забыл export $велосипед = bash_hotkey_manual. Вот. И сегодня, поискивая вроде бы совсем другой сабж, наткнулся на очень приличную компиляцию горячих клавиш. Это конечно не избавляет от чтения официальной документации, но в качестве шпаргалки для повседневного использования очень даже ничего. Оговариваюсь, что придумал и собрал не сам, а цельностянул отседова, за что аффтару респект и трям. Итак, сопсно, сабж:
CTRL-команды:
Ctrl + a - переход к началу строки
Ctrl + b - аналог стрелки влево
Ctrl + c - отменить редактирование команды или прекратить работу
Ctrl + d - аналог Delete. Если строка пустая - выход из shell
Ctrl + e - переход к концу строки
Ctrl + f - аналог стрелки вправо
Ctrl + g - выход из режима дополнения
Ctrl + h - аналог BackSpace
Ctrl + i - аналог Tab
Ctrl + k - удалить всё до конца строки
Ctrl + l - очистить экран (набранная строка и даже позиция курсора остаётся)
Ctrl + r -  поиск по истории набранных команд
Ctrl + R - поиск по истории набранных команд назад (это когда есть несколько вариантов и проскочили нужный)
Ctrl + t - поменять местами текущий символ с предыдущим
Ctrl + u - удалить всё до начала строки
Ctrl + v - преобразует следующую клавишу в её символьное отображение (Enter - ^M, Esc - ^[ и т.д.)
Ctrl + w - удалить от курсора до начала слова
Ctrl + x дважды - скачок между началом строки и текущей позицией курсора
Ctrl + x @ - Показывает возможные варианты дополнения доменного имени
Ctrl + y - вставить из буфера (все удаляемое по горячим клавишам удаляется не просто так, а в буфер)
Ctrl + z - притормозить/остановить выполнение команды в фон
Ctrl + _ - отмена последнего изменения
ALT-команды
Alt + < - к первой команде в истории (вообще к самой первой в .bash_history) Alt + > - к последней команде в истории
Alt + ? - показать весь список вариантов дополнения (аналог 2Т - см. ниже)
Alt + * - вставить все возможные варианты дополнения
Alt + / - попытатся дополнить имя файла (из имеющихся в текущем каталоге)
Alt + . - вставить последний аргумент из предыдущей команды
Alt + b - влево на слово
Alt + c - сделать первую букву слова заглавной (и перейти к следующему слову)
Alt + d - удалить от текущей позиции до конца слова
Alt + f - вправо на слово
Alt + l - сделать все буквы слова строчными (или часть букв справа от курсора до конца слова) и перейти к следующему слову
Alt + n - искать по истории (но не сразу, а после полного ввода и нажатия Ентер)
Alt + p - искать по истории назад
Alt + r - очистить всю строку
Alt + t - поменять слова местами
Alt + u - сделать все буквы заглавными от текущей позиции до конца слова
Alt + BackSpace - Удалить от текущей позиции до начала слова
Esc-команды
Esc+d - удалить от курсора до конца слова
Esc+f - вправо на слово
Esc+b - влево на слово
Esc+t - поменять местами слова
Tab-команды
2T обозначает дважды нажатый Tab
2T - все доступные команды (это тоже все знают)
(string)2T - все доступные команды начинающиеся на string
/2T - все каталоги, включая скрытые. Для текущего надо набрать ./2Т
*2T - каталоги, кроме скрытых
~2T - все пользователи, присутствющие в /etc/passwd
~f2T - все пользователи, присутствющие в /etc/passwd, начинающиеся на f
$2T - все системные переменные
@2T - все записи в /etc/hosts
=2T - вывод наподобии ls или dir
Просто команды
!! - выполнить последнюю команду в истории
!abc - выполнить последнюю команду в истории, начинающуюся на abc
!a:p - напечатать последнюю команду в истории, начинающуюся на a
!n - выполнить n-ную команду в истории
!$ - посдедний аргумент последней команды
!^ - первый аргумент последней команды
^abc^xyz - заменить abc на xyz в последней команде и выполнить результат
Бум учить и пользовать ;)
В заключение - классный ресурс по сабжу различных bash-трюков, реально упрощающих жизнь.

18 дек. 2008 г.

FTP & VPN via NAT

Пакеты ftp и vpn соединений, изменяемые NAT-модулем iptable-са, по каким-то там причинам (это нужно углубляться в принцип сетевой трансляции адресов и особенности работы сих протоколов, на что нет ни времени, надобности для решения конкретной задачи) не могут нормально установить и поддерживать соединение. То есть в "заNATченной" сети по умолчанию выйти коннектом на внешний фтп или впн сервер нереально, отвалитесь по таймауту. А уж коли виноват в этом iptables, то им и лечится данная напасть. Лечево простое:
# modprobe ip_nat_ftp && modprobe ip_nat_pptp
Если работа с внешними ftp- и vpn- требуется постоянно, то 
nano /etc/modules
ip_nat_ftp
ip_nat_pptp
При условии конечно, что в INPUT-секции брандмауэра необходимые порты открыты, TCP 1723 для pptp и TCP 20, 21 для FTP. 

8 нояб. 2008 г.

Монтирование NTFS USB-HDD средствами HAL через ntfs-3g

Объемы переносимых в кармане данных растут, однако все равно не поспевают за ростом вместимости USB-HDD (если только не таскать порево в HDTV =). Однако основная идея переносных хардов остается та же - скачать с одной машины, закачать на другую. И чтобы "фсе само". Поэтому форматирование таких девайсов в подавляющем большинстве случаев - NTFS. И это логично, ибо FAT32 с такими объемами - не резон, банально DVD iso не записать, а ext2/3/reiser - неудобно при общении с win-хостами, которых большинство. Посему, втыкая переноску в свою suse-машинку, мне приходится перемонтировать ее вручную, ибо HAL ее монтирует с обычным ntfs-драйвером, который позволяет только читать... Отсюда задача - подружить HAL с ntfs-3g, который уже сто лет как стабилен и пишет на ntfs-разделы без "всяких-яких".
Умолчально считаем, что пакет, собранный для вашего дистрибутива у вас уже стоит (скачать можно отсюда, пакетов куча под кучу дистров), или собрать самому из сорцев. К примеру, для Debian Etch пакетика не нашлось, пришлось компилить =).
Вдохновение по сабжу пришло отсюда, за что "музам" спасибочки. Итак, действия следующие. Создаем файлик /usr/share/hal/fdi/policy/10osvendor/10-ntfs-policy.fdi вот с такими внутренностями:

После этого вставленная переноска смонтируется как обычно и куда обычно, однако в качестве монтировщика будет выступать уже ntfs-3g, со всеми вытекающими. Опция force вынужденная - очень часто ntfs-3g ругается на некорректное размонтирование харда в win-системе и необходимости виндового же chkdsk'a, который хде ему возьму =). В итоге, все работает, пока нареканий или проблем с чтением файла на win-машинах я не встречал.
PS: не от хорошей жизни вместо кода висит скриншот - сцуко гугел понимает xml-теги как теги ;) и не хочет корректно отображать их на странице. И я хз как это все экранировать.

23 сент. 2008 г.

Печать через LPD в win-окружении

Хорошая ссылка по теме "как открыть виндовый принтер для общей печати через LPD". CUPS'у такое счастие тока в радость, да и вообще чем дальше от чисто виндовых smb-сервисов, тем, возможно и лучше. В мемориз, в общем.

Проблема с VPN (& FTP) из-за NAT

Столкнулся с неприятной проблемой - у меня в офисе инет раздается через проксю, а ssh и vpn - маскарадится напрямую (дабы не заморачиваться с настройками и пробросом портов). И если с шеллом проблем никаких нет, все как из ружья работает, то с vpn вышла оказия - соединение на заведомо рабочий vpn-сервер не проходит, зависая на проверке логина-пароля. Сам PoPToP в логах ругается на что-то там связанное с LCP-таймаутами. Короче, полный и бесповоротный реконнект. Гугление по сабжу и проглядывание манов показало следующее (углубляться в методологию и причинно-следственные связи решения не хочется да и при авральном решении вопроса не так и важно) - для правльиного маскарадинга VPN (а также, как выяснилось и FTP) обычной подмены заголовков пакетов недостаточно и требуется более глубокая их модификация. Сам модуль NAT-a этого сделать не может и поэтому для решения вставшей задачи (а у кого-то эта задача - активный FTP-коннект из-за маскарадинга) требуются следующие kenrel-модули: ip_nat_pptp и ip_nat_ftp соответственно. Подгрузив оные modprobe'ом, мы получаем щастие.
Для совсем экстаза пихаем их в автозагрузку, для чего в /etc/modules (в случае Debian Etch, в других ОС файлик с автозагружаемымми модулями может варьироваться) пишем построчно оба эти модуля в конце файла, не забывая EOF (то бишь пустую строку в конце).

9 сент. 2008 г.

opensuse tutorials

разраб-team Opensuse (или их сподвижники, не уверен) разродилась давно бы уже ожидаемым порталом - http://opensuse-tutorials.com/, где планируется собрать коллекцию tips&tricks о тех или иных приложениях или пакетах, что позволит облегчить жизнь сусоводу начинающему и развеять подкрадывающийся склероз стареющих гуру =). Так или иначе, начало моложено, дизайн выполнен в привычных для opensuse11 тонах, RSS-ки есть, причем отдельные как по постам, так и по комментариям, что есть несомненно гут. На момент написания выложено всего четыре заметки - по Nautilus-y, Powertop'y, zypper'y и USB-инсталляции сабжевой ОС. Ждем дальнейшего развития. Всем сочувствующим я бы посоветовал в RSS-читалку данный портальчик забросить. Пригодится.

19 авг. 2008 г.

X.org + LED's трабл

И еще одна интересненька tip'a. Все наверняка замечали, что если переключиться из X в консоль (alt+crtl+1 например), а потом обратно (alt+ctrl +7 или +8), то лампушки LED'ов клавиатурных гаснут, несмотря на активированный num или caps. Если выключить\включить сабжевые функции, LED'ы возвращаются к нормульному функционалу. Косяк, по инфе в Сети, старый, но особо не подлеченный. Вернее, по умолчанию не устраняемый. А лечится то как раз он просто: открываем /etc/X11/xorg.conf , ищем там секцию InputDevice у клавиатуры и добавляем такую вот строчку:
Option "Xleds" "1 2 3"
Эта запись указывает X-серверу, какие лампушки контролируются xset'ом, однако и выведенную в топ проблему решают на ура.
Так что на заметку...

apt & wget via proxy

Ввиду переезда на "проксявый инет" пришлось озадачиться такой вот проблемой - а как сказать apt'у, куда ходить? Это wget умный, ему достаточно переменные окружения http_proxy / ftp_proxy объявить банальным export'ом (ну или в /etc/wgetrc описать в виде http_proxy = ip:port). Да, ну а если нужна авторизация, то еще добавить туда же proxy_user и proxy_password. Более того, если требуется вот именно сейчас сходить прямо, а удалять переменные не хочется, или они в конфиг-файл вписаны, есть ключ --no-proxy, отправляющий wget по заданному адресу директом.
Apt на такие сухари не ведется. Отсюда правило: при работе из-за прокси-сервера, просящего авторизацию или пускающего на добром слове (неважно), делаем так: в файле /etc/apt/apt.conf (если нет, создать!), рисуем следующее:
Acquire::http::Proxy "http://user:pass@proxyip:proxyport";
Acquire::ftp::Proxy "http://user:pass@proxyip:proxyport";
Acquire::::Proxy "true";
Все действия, естественно, от имени суперпользователя.

10 авг. 2008 г.

DNS vulnerability

Каждый системный администратор и просто сочувствующий ;) слышали о критической уязвимости DNS, ставящей под угрозу само существование Сети. Также на слуху то, что эта уязвимость не конкретного сервера, а самой архитектуры системы разрешения доменных имен, поэтому подверженными оной оказались абсолютно все. И пока разработчики вкупе с "отцами Интернета" пишут патчи и патчи для патчей (один вроде уже вышел, но он серьезно снижает производильность серверов, поэтому работа продолжается), неплохо было бы понять, в чем реально заключается проблема, и каким образом осуществляется атака. Очень хорошую статью на эту тему, где все раскладывается по полочкам и сопровождено необходимыми пояснениями и иллюстрациями, читает тут (english).

28 июл. 2008 г.

transparent squid proxy

тоже, чтобы не забыть самому и, может быть, напомнить кому либо... Что нужно сделать, чтобы уже настроенный на нужные параметры\acl'ы\фильтры\и тыды Squid (2.6.10+ или 3) начал работать в режиме Transparent proxy. Первое, в /etc/squid/squid.conf (ну или куда вы там запихали основной конфиг-файл сквида) пишем
http_port 3218 transparent
или добавляем к уже существующей записи. Просто ли сквид слушает какой то порт, или еще и адрес явно определен (к примеру, если интерфейсов несколько), неважно. В общем виде запись выглядит как ip:port transparent. И второе, в iptables добавляем следующее правило:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
Клиентские машины должны иметь default gateway - адрес сервера, где находится сквид. В противном случае, этот умолчальный сервер должен сам перебрасывать пакеты на прокси. ОДнако такого изврата я еще не встречал ;)

Squid + LDAP note

Если требуется, чтобы сквид авторизовал пользователей с помощью openldap-сервера, то в его конфиге требуется отразить что-то вроде этого:
auth_param basic program /usr/lib/squid/ldap_auth -b "ou=squiders,dc=server,dc=ru" -v 3 -u uid 127.0.0.1
acl ldap_auth proxy_auth REQUIRED
http_access allow ldap_auth
При этом /usr/lib/squid/ldap_auth - так называемый helper, который идет в комплекте с прокси-сервером и соединяется по его запросу с ldap-базой. Им можно воспользоваться для проверки работоспособности последней и правильности вписанных параметров. Если вбить в консоль
/usr/lib/squid/ldap_auth -b "ou=squiders,dc=server,dc=ru" -v 3 -u uid 127.0.0.1
то никакого приглашения вы не получите, однако скрипт будет ожидать ввода пары логин\пароль ldap-пользователя через пробел. Если такой пользователь существует и хелперу удалось прицепиться к означенной базе с означенными параметрами, он вернет OK, иначе Success Error.
Следующие две строки описывают ACL группу ldap_auth и разрешают ей доступ к инету. Если LDAP-сервер расположен не на локалхосте, то хелперу следует дать адрес удаленной машины.
Ну и конечно, какие еще могут быть ключи параметров, кроме использованных в примере (-b - где искать, -v - версия ldap, -u - фильтр поиска), можно справиться помощью ldap_auth --help

18 июл. 2008 г.

почтовая "разморозка"

Если в очереди exim4 скопилось много frozen мейлов, и надобно их очистить, есть как минимум три способа это сделать (с)перто:
корректный:

Юзаем exipick - утилита, показывающая сообщения в очереди.
exipick -zi | xargs exim -Mrm //очистит все замороженные сообщения из очереди
exipick -i | xargs exim -Mrm //очистит все сообщения из очереди
где
exipick -z - показывает замороженные сообщения
exipick -i - показывает ID сообщений
exim -Mrm ID - удаляет из очереди сообщение с ID

скриптово-васкирный ;) :
#!/bin/bash
/etc/init.d/exim4 stop;
rm -rf /var/spool/exim/input.bak;
mv /var/spool/exim/input /var/spool/exim/input.bak;
mkdir /var/spool/exim/input;
chown mailnull.mail /var/spool/exim/input;
chmod 750 /var/spool/exim/input;
/etc/init.d/exim4 start;
суровый:
rm -rf /var/spool/exim/input/*

Работают все три, но пользоваться ясен пень лучше первым.

12 июл. 2008 г.

Debian 4.0 Etch + pam_ldap HOWTO

Долго я шел к этому, но дошел ;) и слава богу, что не до ручки, а до решения задачи: авторизации пользователей в системе через pam_ldap в среде Debian. На openSuSE все до безобразия просто, там с помощью YaST'a настройка сервера, создание корня дерева (base DN), заведение пользователя и его последующая аутенфикация - прошли сразу, быстро и без проблем. С дебианом пришлось нехило помучаться.
Затыка была еще в том, что реализация openldap в каждом дистрибутиве несколько отличается, есть разночтения в конфиг-файлах. И в Сети достаточно подробного и, главное, соотвествующего Debian 4 etch how-to я не нашел. Поэтому пришлось собирать инфу из разнозенных источников, ну и читать официальную документацию. Но, это все в прошлом, и сейчас кратко обо всех необходимых действиях, требуемых для решения поствленной задачи.
Первым делом нам поднадобится сервер OpenLDAP, обслуживаемый демоном slapd. Для общения ОС с деревом LDAP (точнее, для "трансляции" имен) потребуется libnss-ldap (Name Switch Service, если мне память не изменяет). Для реализации самой аутенфикации пользователя в системе неоходим PAM-модуль libpam-ldap.
apt-get install slapd libnss-ldap libpam-ldap
Если сразу после установки пакетов debconf не предложил их сконфигурировать, сделаем это самостоятельно. Сие избавит от ручного редактирования конфиг-файлов.
dpkg-reconfigure slapd libnss-ldap libpam-ldap
Сначала настраивается slapd.
На вопрос о пропуске конфигурирования OpenLDAP отвечаем отрицательно. В следующем окне вводим baseDN (Distinguish Name), говоря по-русски, уникальное имя, то есть как будет называется корень нашего будущего LDAP дерева - например inspire.hvn в моем случае. Сие в LDAP форме запишется как dc=inspire,dc=hvn (в будущем пригодится). Нажав ентер, получаем запрос ввести имя компании - тут свобода фантации, например, Roga&Kopyta Inc. ;) Далее вводим пароль записи - cn=admin,dc=inspire,dc=hvn, то есть админской учетки для работы с базой. После этого следует небольшой экскурс по сабжу выбора формата базы LDAP - BDB или HDB. Жмем ОК и выбираем BDB, согласившись с доводами разработчиков (однако пробовал и HDB, никаких проблем). Двигаемся дальше, "Удалять базу при вычистке slapd" - у нас там все равно ничего нет, так что пусь делит ;), LDAPv2 включать не нужно, все будет на LDAPv3. Далее видим в консоли сообщения о том что debconf создает /var/lib/ldap, помещает туда базу, запускет демон slapd.
Плавно перетекаем к настройке libnss-ldap...
Универсальный идентификатор ресурса (URI) - это адрес LDAP-сервера, куда nss будет обращаться за информацией. В нашем случае, когда сервер и клиент находятся на одной машине, эта строчка имеет вид ldap://127.0.0.1. В следующем окне нужно ввести уникальное имя базы поиска (base DN) - то же, что и при настройке slapd, но уже в полном, ldif формате, а именно dc=inspire,dc=hvn. Версия третья. Далее - наша база будет требовать учетное имя для входа - нет, спецпривилегии для root-пользователя - да. В следующем окне соглашаемся с проверкой и принудительной установкой прав 0600 на конфигурационный и secret (там пароль записи rootbinddn хранится) файлы libnss-ldap во имя секурности, ибо пароли там находятся в открытом виде. Здесь стоит отметить, что такое положение дел не есть секурно, поэтому вообще говоря, далее мастер предложит ввести название учетной записи, которой будет позволено лишь читать пароли, но непозволено их изменять. При таком раскладе нужно будет подредактировать вручную slapd.conf, где описываюся access-опции для всех категорий пользователей. Имхо же, если вы не страдаете паранойей, то это не так и нужно. В этом описании я все права делегирую лишь пользователю cn=admin (более того, он уже создан, еще в самом начале, и необходимые права для чтения/записи в каталоге LDAP у него уже есть). Поэтому, когда в следующем окне нас просят завести учетку для хождения libnss к LDAP, предлагаемого конфигуратором cn=manager шлем в лес и пишем cn=admin,dc=inspire,dc=hvn, ну и пароль соответственный. Затем инсталлер предлагает отредактировать nsswitch.conf - правда кнопки отказа все рно нет, так что давим ОК. Кстати, как окажется в будущем, предложение отредактировать файл было действительно лишь предложением, никаких действий в нем конфигуратор не произвел, но к этому мы вернемся ниже.
Переходим к настройке libpam-ldap. Практически все шаги аналогичны предыдущей настройке, поэтому кратко: URI - ldap://127.0.0.1, корень базы поиска - dc=inspire,dc=hvn, версия LDAP - 3. На следующий вопрос о root-пользователе базы - да, требование учетного имени - нет. Далее вводим DN для суперюзера базы, я опять же не завожу отдельного пользователя, а отдаю все на откуп cn=admin,dc=inspire,dc=hvn по вышеописанным соображениям. На вопрос о методе шифрования пароля выбираем crypt, как наиболее удобный и совместимый (по крайнй мере, я где-то так вычитал, хотя уверен, что выбор метода на работоспособность системы не сказывается) с unix-шифрованием метод. Конфигурация завершена. Теперь наша лдап база имеет корневую запись dc=inspire,dc=hvn, а так же запись админа cn=admin,dc=inpire,dc=hvn. Сделаем две ou (organizationUnit) записи - ou=people - там будут пользователи, и ou=groups - в ней будут описаны группы, в которые те или иные пиплы будут входить. Так как пока у нас ничего графического под рукой нет, пользуемся консолью и утилитой ldapadd из пакета ldapscripts, который, если не был поставлен как зависимость основных ldap-пакетов, нужно инсталить отдельно.
apt-get install ldapscripts
Создадим файлик следующего содержания (в нем мы опишем в ldif-формате желаемые записи):
dn: ou=people,dc=inspire,dc=hvn
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=inspire,dc=hvn
objectClass: organizationalUnit
ou: groups

dn: cn=testgroup,ou=groups,dc=inspire,dc=hvn
objectClass: posixGroup
cn: testgroup
gidNumber: 10001

dn: uid=test,ou=people,dc=inspire,dc=hvn
objectClass: inetOrgPerson
objectClass: posixAccount
uid: test
sn: test
givenName: TestUser
cn: test
displayName: test
uidNumber: 1050
gidNumber: 10001
userPassword: 123456
loginShell: /bin/bash
homeDirectory: /home/test
Сразу скажу по поводу паролей. Их можно передавать как в открытом виде (для тестовой записи вполне сойдет), так и зашифрованном. Как передашь, так и будет храниться в базе. Если plaintext по параноидальным соображениям не подходит, воспользоваться утилой slappasswd. К примеру наш тестовый пароль можно сделать таким:
slappasswd -h '{CRYPT}' -s 123456
{CRYPT}EvOKngmsHj6CA
или таким:
slappasswd -h '{MD5}' -s 123456
{MD5}4QrcOUm6Wau+VuBX8g+IPg==
Подробности - в man slappasswd. Полученную строку вполне можно запихать в наш текстовый файл.
Итак, добавим в наше дерево новые записи
ldapadd -D cn=admin,dc=inspire,dc=hvn -x -w 123321 -f /home/delayer/add.ldif adding new entry "ou=people,dc=inspire,dc=hvn"
adding new entry "ou=groups,dc=inspire,dc=hvn"
adding new entry "cn=testgroup,ou=groups,dc=inspire,dc=hvn"
adding new entry "uid=test,ou=people,dc=inspire,dc=hvn"
Опции ldapadd можно глянуть в man'е.
Перезапускаем сервер,
/etc/init.d/slapd restart
ищем нашего test'a
id test
id: test: Такого пользователя нет
Жаль... это значит что база LDAP не контактирует с системной... то есть PAM также не знает о таком пользователе... Соответственно, никто его и не авторизует. Это значит, что почему-то debconf в самом начале ничего не сделал c /etc/nsswich.conf (вот мы к нему и вернулись). Сделаем самостоятельно. Открываем его любимым текстовым редактором (фу, ну что за фраза избитая...), ищем строки passwd: group: shadow: и меняем их следующим образом:
passwd: files ldap
group: files ldap
shadow: files ldap
UPD:
/etc/init.d/nscd restart
Снова ищем test'a:
id test
uid=1050(test) gid=10001(testgroup) группы=10001(testgroup)
Уже лучше, не правда ли ;)
Остался последний штрих для достижения нашей цели - конфигурационные файлы в /etc/pam.d. В убунтовском репо есть классная чтука - скрипт auth-client-config, который сам изменяет что нужно в этом каталоге для успешной ldap-аутенфикации приходящего пользователя. В дебе почему-то такого пакета нет, видно, админы дебиана должны быть настолько суровы, что знать и делать все руками и vi ). Что ж, сделаем ;) (Хотя можно и просто стянуть да инсталлировать убунтовский пакет, наверняка встал бы без проблем)
Если бегло оглядеть файлы login, su, passwd, ssh и так далее, то, во-первых, по названиям их ясно, за что они отвечают ;), а во-вторых, все они подключают include'ом некоторые из этих файлов - common-auth, common-passwd, common-session и common-account. Их то мы и поправим.
Для достижения нашей цели файлы должны выглядеть так (почему именно так, и что значат нижеследующие символы - милости просим на man странички =):
/etc/pam.d/common-account
account sufficient pam_unix.so
account sufficient pam_ldap.so use_first_pass
account required pam_deny.so

/etc/pam.d/common-auth
auth required pam_env.so
auth sufficient pam_unix.so nullok_secure
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so

/etc/pam.d/common-password
password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
#если пакет cracklib2 не установлен, то предыдущую опцию следует закомментировать.
password sufficient pam_unix.so nullok md5 shadow use_authtok
password sufficient pam_ldap.so use_first_pass
password required pam_deny.so

/etc/pam.d/common-session
session required pam_limits.so
session required pam_unix.so
session optional pam_ldap.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
#предыдущая опция предназначена для того, чтобы при первом входе ldap-пользователя в систему ему автоматически создавался хоумдир. При ненадобности - камент )
Вот и все, проверим работоспособность.
delayer@interra:/$ su -l test
Password:
Creating directory '/home/test'.
test@interra:~$
В заключение добавлю, что если требуется добавлять много пользователей, и вообще периодически с записями работать, стоит обратить внимание на более наглядные утилиты, например, luma или lam, правда, для работы последнего требуется web-сервер и php5.

3 июл. 2008 г.

1Cv7.7 + HASP HOWTO

1Cv7.7 вообще-то говоря должна работать через аутенфикацию с помощью HASP-ключа. Да, существуют так называемые "отученные" от проверки наличия ключа дистрибутивы, и даже, вроде как , сама 1С позволяет. а иногда и рекомендует работать именно с такими версиями (при наличии каких либо проблем в работе). Однако, это и не Ъ и незаконно =). Если все лицензионно чисто, и используется win-система в качестве ОС, то проблем, естественно, никаких. С никсами все несколько иначе ;)...
Сегодня на повестке дня - работа 1С в окружении WINE@Etersoft на каком-нибудь дистрибутиве linux. В данном примере производится настройка локальной версии 1С на машине под управлением kUbuntu-8.04.
Считаем, что 1С-ка, WINE@Etersoft-1.0.9 куплены и установлены. Ключик HASP'a имеется в виде LPT-девайса (LPT HASP4 M4). Для начала требуется установить haspd - демон, который будет обслуживать хасп-запросы по сети (менеджер лицензий hasplm, слушает 475 udp-порт) и локально (winehasp, слушает UDP 2790), а также обеспечивать работу с ядром (модули aksparlnx, aksusbd, skeyd, usbsentinel - для разных типов ключей). Сей пакет можно заказать у Etersoft'a в личном кабинете пользователя для любого linux-дистрибутива. Получив оный, а также пакет с модулями, устанавливаем...
dpkg -i haspd_2.0-1_i386.deb haspd-modules_2.0-1_i386.deb
dpkg при установке сам пропишет haspd в автозагрузку и подгрузит необходимые модули.
Проверяем:
/etc/init.d/haspd status
Hardware protection keys support bundle. Etersoft (c) 2008
: haspd.init,v 1.113 2008/03/26 11:05:12 lav Exp $
Aladdin HASP 4/HL driver status:
-e kernel module aksparlnx is loaded
-e aksusbd is running
-e winehasp is running
-e hasplm is running
Daemon version: 1.8.1 - key API (USB) version: 3.85, key API (parallel driver) version: 3.86
Smartkey 3 USB/LPT driver status:
-e skeyd is stopped
SafeNet Sentinel status:
-e usbsentinel is stopped
-e SntlKeysSrvrlnx is stopped
Сие говорит о том, что загружены и отслеживаются компоненты для работы с HASP4 USB/LPT ключами, остальные (Smartkey, Sentinel) отключены. Однако, если получаем что то вроде
/etc/init.d/haspd status
Hardware protection keys support bundle. Etersoft (c) 2008
: haspd.init,v 1.113 2008/03/26 11:05:12 lav Exp $
Aladdin HASP 4/HL driver status:
kernel module aksparlnx is not loaded (WARNING: HASP LPT keys support is disabled!)
aksusbd is stopped
winehasp is stopped
hasplm is stopped
Smartkey 3 USB/LPT driver status:
skeyd is stopped
SafeNet Sentinel status:
usbsentinel is stopped
SntlKeysSrvrlnx is stopped
то выходит, что не слушается вообще ничего. ;) В этом случае требуется скомпилить модули самостоятельно. Для этого используем /etc/init.d/haspd build. Исходники ядра должны быть установлены. В [k]Ubintu/Debian это пакет linux-headers-*, где звездочка - это версия установленного ядра (uname -r). Build'анув нужные ядерные модули, подгружаем их через modprobe и снова проверяем /etc/init.d/haspd status.
Теперь посмотрим, видит ли ОС ключ, подключенный к LPT-порту. В случае локального ключа должна быть аналогичная нижеозначенной картинка:
eterkeytest --hasp
HASP:
HASP API VERSION: 8.0
HASP Local:
LPT HASP4 M4 (HASP4 is connected, key is HASP4 Net 5 licenses)
[4] 1C:Accountancy v7.7 (simple and network)
Если ключ сетевой, и кто-то уже (вот, редиски =)) по сети к нему пришел, то примерно так:
HASP Net at host (see NETHASP.INI) (press Ctrl-C to break):
..... -- active logins:16202
-- max logins: 53610
-- key type: HASP4 Net 774 licenses
-- activations: 48851
[4] 1C:Accountancy v7.7 (simple and network)
При таком раскладе нам остается только запустить 1С-ку =). Если ключ сетевой, то в файлике BIN/NETHASP.INI,что находится в каталоге, куда установлена 1С, указываем, где искать сетевой ключ. Вот так. к примеру:
[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.0.1
NH_TCPIP_METHOD = UDP
NH_USE_BROADCAST = Disabled
Сразу стоит проверить, слушает ли менеджер лицензий и winehasp нужные порты...
netstat -ap | grep hasp
udp 0 0 *:475 *:* 12629/hasplm
udp 0 0 localhost:2790 *:* 12620/winehasp
Все нормально, можно подключаться ;) Если ключ тот, адрес сервера, в порт на котором он воткнут, корректен, и фаерволл сабжевые порты не блокирует, то все должно работать. Для проверки можно отключить iptables stop (iptables -F).
анное руководство рассчитано на версию 1С 7.7, работа с 8-ой серией не гарантируется. Дополнительная информация по настройке различных типов ключей защиты, а также основной источник материала для этих строчек находится в закромах Etersoft'a, то есть тут.

2 июл. 2008 г.

Kopete ICQ - protocol ICQ6 fix

Так как я в последнее время асько юзаю через копыто aka kopete, то, по случаю ошибки "устаревшей версии клиента", предлагаю "лечилово" для оной. Делается все просто. Правим ~/.kde/share/config/kopeterc вот в таком вот ключе:
[ICQVersion]
Build=0x17AB
ClientId=0x010A
ClientString=ICQ Client
Country=us
Lang=en
Major=0x0006
Minor=0x0000
Other=0x00007535
Point=0x0000
После рестарта все должно работать. Или обновиться до 0.12.7 (может и пораньше версия прокатит, не знаю). У меня отвал аськи случился одновременно с обновлением до OpenSuSE11, так что у меня автоматом пришло решение проблемы сабжа по пути нумер два.
P.S.: наводку взял отсюда.

29 июн. 2008 г.

Openfire + PostgreSQL HOW-TO. Установка и запуск.

Итак, сегодня мы установим и запустим open-source Jabber-сервер Openfire от разработчиков из Ignite Realtime. Что такое Jabber, с чем его идят и как подают к столу, в инете информации килолитры, поэтому сей вопрос оставим за рамки, тем более что человек, собравшийся развернуть на подконтрольном ему сервере openfire, думаю, в курсе, что это такое. =)
Со странички проекта нам потребуется сам дистрибутив. Выбираем и качаем. Так как jabber будет работать под управлением Debian 4.0 Etch, то я скачал .deb-пакет, однако представлены также сборки для rpm-based дистрибутивов, пакет для Solaris и, конечно же, тарбол с исходными кодами.
Для работы openfire необходима java-машина, 5 или 6 версии. О ее закачке и установке стоит озаботиться отдельно.
apt-get install sun-java6-jre
dpkg -i openfire_3.5.1_all.deb
Сервер установлен и готов принимать соединения. Вся работа с системой проводится исключительно через web-интерфейс софтины. В конфиги конечно можно попробовать залезть, но они для этого не предназначы абсюлютно (Там вообще страшно, если честно). Да и надобности имхо особой в этом нет. Да, также нам следует установить какую либо СУБД, дабы openfire мог вести свою базу. MySQL, PostgreSQL, MSSQL.... все что вашей душе угодно, со всем этим опенфайр может работать. Так как на сервере уже крутился постгрес версии 7.4, мой выбор был очевиден. Прежде чем создать базу и начать работу, следует убедиться, что в /etc/postgresql/7.4/main/postgresql.conf выставлен параметр tcpip_socket = true, иначе будете долго думать, почему все работает, но ничего не коннектится =). В восьмерке такого косяка не обнаружено, все работает сразу после инсталляции.
Создаем базу...
su - postgres #работаем от имени postgres
createuser -U postgres -dAP openfire_user #узер создает базы (-d), но не создает пользователей (-A), при создании запрашивается пароль (-P)
createdb -E UTF-8 openfiredb #создаем базу в кодировке (-E) UTF-8
su - postgres
psql openfiredb
openfiredb=# grant all privileges on database openfiredb to "openfire_user"; #даем нашему пользователю все привилегии в рамках openfiredb базы
База создана и ждет к ней подключения =). Открываем любимый браузер и топаем на http://localhost:9090. В случае, если сервер не имеет графического интерфейса, несложно пробросить порт с помоью ssh на свою рабочую машинку. У вас же *nix, не правда ли? ;)
ssh -L 19090:localhost:9090 user@server
Поясню работу этого проброса: все обращения на localhost:19090 перенаправляются через ssh на удаленный localhost:9090. Ответные пакеты, соотвественно, идут обратным путем. То бишь, введя у себя на машине http://localhost:19090, мы получим то же самое, если бы сидели на сервере и там ввели http://localhost:9090. Подробности - man ssh.
Первоначальная настройка openfire проста и интуитивно понятна. Нам требуется выбрать используемую базу данных. прописать ее параметры, выбрать способ обращения к ней, вбить мыло и пароль пользователя Admin... и по сути все. После нажатия последнего ОК севре перезапустится, и по адресу http://localhost:19090 мы уже увидим приглашение входа в Админку. Что можно сделать там, куда пойти и куда податься в первый заход, в следующий раз =) ( хотя все там просто и понятно, даром что не по-русски, так что можно потыкаться и самостоятельно - убить сервер все арвно не получится =) ) А так, сервер полностью готов к принятию соединений и обслуживанию пользователей, которых, правда, пока нет. Однако, по умолчанию, настройки openfire разрешают самостоятельную регистрацию пользователей с помощью их клиентов, это стоит иметь в виду.
А сейчас отметим возможные проблемы при пути до этого момента, до открытия входа в админку, а также пару интересных моментов...
Ну, во-первых, как я уже упомянул выше, когда мы разбирали работу с БД, если при корректно введенных данных (адрес, порт сервера, где крутится бд, имя базы, имя и пароль пользователя, который имеет полные права на эту базу, драйвер для работы с базой), выдаются ошибки соединения, стоит убедиться, что СУБД слушает внешние tcp-соединения - netstat - an вам в помощь.
Если при первом этапе графической настройки вместо подтвеждения всех ваших изменений и сообщения об успешности установки выдается лог ошибки браузера вида

INTERNAL_SERVER_ERROR
RequestURI=/setup/setup-finished.jsp
Caused by:
java.lang.NullPointerException
и куча всякого java-мусора, то следует обновить java-машину до более новой версии (у меня например, стояла пятая, пришлось обновиться до шестой. С ней проблема исчезла).

update jiveUser set plainPassword='123456', encryptedPassword = null where username ='admin';
И еще один интересный момент. Бывает, что пароль админа как-то сам по себе забыается ). В случае с openfire это не означает неизбежное убивание базы данных и пересоздание оной ( что влечет за собой, к тому же, переустановку самой софтины). Работа сервера с БД построена так, что введенный первоначально пароль админа (на этапе начального кофигурирования), да и пароли пользователей тоже, хранится в базе в PlainText-виде. Нужно лишь зайти любым удобным средством в БД и подсмотреть. если же вы сменили пароль, как и полагается после первого входа, то это автоматически шифрует его и впредь пароль хранися уже в поле Encrypted, в виде хеша. Соотвественно в таком случае, для получения доступа к админке следует сначала удалить все что есть в поле, где хранится хеш пароля, а потом что нить написать в Plaintext поле таблицы. Например, такЭто и будет паролем. Об этой особенности следует знать даже в случае отличной памяти. Ибо, очевидно, доступ к базе данных - автоматически дает нам неограниченный доступ к самому серверу. От версии к версии номера полей могут меняться, например раньше было password, теперь plainpassword, так что если команда не проходит, можно сориентироваться на месте, ибо имя таблицы - jiveUser не меняется.

12 июн. 2008 г.

Изменение имени сетевого интерфейса

Когда то давно, уе не помню и по каким причинам (то ли глюк системы был, толи интерфейсы переставлял..неважно), но случилась такая вещь - единственный вроде Ethernet интерфейс начал обзывать себя eth2. Да, работает, но как то не-Ъ. Как то я тогда вернул интерфейсу его кошерное eth0, вроде бы через пользование скрипта /etc/sysconfig/network/scripts/convert_persistent_name_rules и чтением каких то док в /usr/share/doc/. Щас в IRC появился человек с такой же проблемой. Сидел я, пытался вспомнить, как там оно это делается...так и не вышло. А помочь то надо ;). Нашелся другой, более пролетарский способ.
Берем любимый текстовый редактор и открываем файл /etc/udev/rules.d/70-persistent-net.rules, ищем в нем строчку вида
# PCI device 0x10de:0x03ef (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:1a:4d:9e:12:a0", NAME="eth2"
При наличии большого числа интефейсов подобных строк будет много, причем встречаются случаи, что самой сетевки уже давно и нет, а запись осталась. А если оно так, то втыкание другой сетевки выльется в появление нового сетевого интерфейса с увеличенным на единицу номером.
Так вот, каждая строка описания ифейса, как мы видим, содержит название ядерного модуля, поддерживающего железку (forcedeth в примере), физический адрес карты ( ATTR{address}), и имя сетевого интерфейса (NAME), ради которого все и затеялось. Меняем значение на нужное, eth0 или eth1000 ;), перезагружаем систему (вроде бы и рестарта только сетевой подсистемы должно быть достаточно, но у меня не прочухала ОС изменений, подняв снова eth2), и наслаждаемся Ъ-выводом ifconfig'a.
P.S.: Это я рассказывал про openSuSE, различия с Debian минимальны, в Etch'e файлик называется z25-persistent-net.rules, а все остальные телодвижения - аналогичны.

3 июн. 2008 г.

ID3tags convert HOW-TO

Сам я почти сколько увлекаюсь музыкой, всегда по большей части это был неотечественный саунд. Тем более к тому времени, когда я перелез на linux. Поэтому проблема кракозябр в AmaroK'е вместо кириллических тегов (которые в CP1251) передо мной особо не маячила. Да, было с пару десятков треков - но я их вручную за десять мин переписал, и был счастлив. Но проблема такая существует, и вот ее вполне элегантное решение. Цельнотянуто с Эр-Телекомовского форума, авторство принадлежит камраду ffsdmad'у, так что все плюшки его. На сей пост СС-лицензия сего блога не распространяется, ибо я знать не знаю, как лицензирован тот тред на форуме. Итак,

Наверняка, у многих имеется своя, [не]большая, коллекция музыки, звуков, аудио рассказов, с которой, при работе в Linux, появляются проблемы связанные с кодировкой id3tag mp3 файлов. Что происходит, первым делом, новичек качает Winamp подобную программу обычно это Xmms. Но как известно Xmms, уникальная программа так как «1210 дней без апдейта» (DeadLord[ect]), и она не понимает id3tag в кодировке CP1251 (собственно и не обязана, она поддерживать все кодировки). Сразу начинается возня со шрифтами и чаше человек забивает и пользуется тем что есть. Но при этом теряется возможность использовать такие классные программы как Rhitmbox, Amarok или например mpd + Gmpc. А ведь эти программы вносят новый взгляд на использование накопленных аудио материалов — идею коллекции. Пользователи Xmms, при всей его очевидности и простоте теряют такие возможности как: сортировки, выборки по тегам (автор, название, альбом, жанр, год, рейтинг), автозагрузка обложки CD диска трека, составление рейтингов на основе количества прослушиваний и ручным способом, выгрузка на внешние источники материалов составленных на основе заранее подготовленных плейлистов, поиск и покупки материалов подходящих по тематике и многое другое. В общем если пользователь с трепетом относится к своей коллекции то ему просто необходимо попробовать поменять своё представление о ней с помощью данных средств. К тому же в случае связки mpd + gmpc открываются дополнительные возможности: раздачи возможности управления аудио плеером в сети и экономии ресурсов за счёт необязательного запуска клиентской части.
В общем, всё, что нам мешает воспользоваться этими плодами цивилизации это, неправильная кодировка id3tag нашей коллекции. К счастью решение этой проблемы простое и приятное, как может не показаться на первый взгляд. Среди множества инструментов, мне больше всего понравился EasyTag. Установка проста и тривиальна:
Код
sudo apt-get install easytag
[конечно, пользователям не deb-based дистрибутивов сия команда не подойдет, однако уж ак поставить названную софтину easytag на Ваш дистрибутив, вы я уверен знаете]

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

Затем, например, у нас имеется файл :
02-Galitsky's song from the opera 'Prince Igor'.mp3
в тегах которого:
название: Песня Галицкого из оп. "Князь"
исполнитель: Фёдор Иванович Шаляпин
альбом: Записи с двухсторонних пластин
номер трека: 2
и нам необходимо получить файл с названием 2 - Фёдор Иванович Шаляпин - Песня Галицкого из оп. «Князь».mp3
Нет ничего проще, выделяем файлы с которыми мы хотим подобным образом поступить, запускаем сканер тегов, выбираем «переименовать файл и каталог» задём маску:
%n - %a - %t (% - символ переменной, n - number, a — autor, t — title) жмём сканировать и сохранить.
Обратным образом действует сканер «заполнить тег». С помощью него программа заполняет поля id3tag извлекая данные из имени файла и (по желании) имени папки. Например, чтобы из файла '2 - Фёдор Иванович Шаляпин - Песня Галицкого из оп. «Князь».mp3' извлечь данные тегов, составьте маску: %n - %a - %t (кстати, результат возможного сканирования отображается при вводе маски)
Таким образом можно любую файлопомойку ogg/mp3 привести к виду ухоженного детища заядлого коллекционера, и все продвинутые Linux аудиоплееры смогут нормально отображать meta данные из файлов и совершать привычный для них поиск и ранжирование.
Вот так вот, вмемориз. =)

Восстановление root пароля

Краткая памятка забывчивому люду, или просто испытывающим необходимость по ряду причин поменять пароль root на своей, или не своей =), linux-системе, не зная пароля текущего. Проверено на Debian 4.0-r0, загрузчик - GRUB. Итак, последовательность действий следующая:
1) при появлении приглашения GRUB'a со списком загружаемых ОС или вариантами загрузки перевести курсор на обычную загрузку и нажать е (edit);
2) в новом окне выбрать строку с параметрами загрузки (самая длинная будет) и снова нажать е;
3) дописать в конце строки init=/bin/bash;
4) нажать b (boot) - произойдет загрузка с этими параметрами;
5) если все правильно, появится приглашение вида root@...#, различное для разных дистрибутивов;
6) перемонтировать корень для записи mount -n -o remount,rw / (по умолчанию в однопользовательском режиме корень монтируется в режиме readonly (ro);
7) сменить пароль через passwd, синхронизировать изменения через sync (всякий пожарный), ребутнуть систему (причем жестким reset'ом, так как reboot будет недоступна).

CUPS'о-терминальные странности

интересная херня стоила мне вчера пары часов рабочего времени...
Оказывается, что при хождении терминальных пользователей (через freenx) на сервер, ессно тоже терминальный -), при условии ихавторизации по логину-паролю из /etc/passwd, то есть по локальным учеткам, а не по учеткам freenx'a (ну, которые добавляются через nxserver --adduser user).....так вот при всем при этом для системы этот пользователь почему то является guest'ом, со всеми вытекающими. Для меня например это вытекло в ошибку Quota Limit Reached, сгенеренную CUPS'ом в ответ на попытки хоть че нить распечатать на любом из 4 присоединенных к последнему принтеров. И это при условии что этот чертов guest добавлен в allow user в /etc/cups/printers.conf и все Quota...-строчки зияют нулями, то бишь квотирования быть не должно.
Первопричины сего от меня ускользают если честно, но порешать проблему удалось лишь созданием freenx-учеток пользователей. После этого они стали в терминальной сессии самими собой, и купса с радостью раздала всем принтеры и настало щастие.
В общем, на заметку...

30 мая 2008 г.

обнуление счетчиков Brother-7420Rс

небольшой tip пользователям Brother принтеров, в особенности МФУ-шки 7420R. Для того, чтобы после заправки картриджа или замены светодрама девайс не ругался по прежнему, что де у меня все плохо (он рассчитывает степень износа драма и количество оставшегося тонера по количеству распечатанных страниц), нужно ему эти счетчики обнулить. После этого принтер с чистой памятью работает дальше. Делается это следующим образом:
  • вырубаем девайс;
  • зажимаем кнопку Menu/Set и врубаем устройство обратно;
  • помигав всеми тремя лампочками и экранчиком, устройство будет ждать ввода команды сервисного меню
  • вводим 81 -> выдается сообщение RESET DRUM COUNT. Жмем Start. Появляется RESET LIFE COUNT. Снова старт.
  • выходим из сей менюхи набором 96, или 98, или 99
  • выключаем/включаем девайс.
Все ;) До следующей заправки курим.

21 мая 2008 г.

Обретая потерянный конвейер

Не люблю Gnome. С "unix-детства" по природе KDE-шник. Но холивар по сему поводу разводить не есть моя задача. Да и место не то - любой никс-форум достаточно открыть. Однако стоит записать вот что.
С гномом мне сейчас периодически работать приходится, и вот наткнулся я на странный баг, или фичу ;). Если в свойствах раскладки клавиатуры используются английская и русская раскадки, русская стоит умолчальной и в списке первой, то в эмуляторе консоли (любом) хрен ты напишешь конвейер, то есть |. В принципе логично, что его нельзя написать в русской раскладке, ибо у нас нет такого символа, но в английской то есть! А без конвейера жить невозможно в bash.
Решение простейшее - нужно просто поменять местами раскладки в вышеуказанных свойствах. Умолчальную галочку изменять не нужно, она может оставаться на русской раскладке, однако английская должна быть в списке первой. Тогда и конвейер есть, и русский язык при входе в систему наличествует.

15 мая 2008 г.

VirtualBox HOW-TO - Строим мосты

Сегодня мы поговорим о работе локалки в виртуальном окружении VirtualBox. Вводные слова на предмет "как я докатился до жизни такой" можно поглядеть здесь. С сетью здесь не так все гладко как в vmware. Если там уж нат, то нат, работает как часы сразу же после инсталляции. Гостевая ОС тут же начинает видеть Хост-систему, а то и дальше, в зависимости уже от настроек последней. Если мост (юзается отдельный ифейс), буть добр, в гостевой ОС пропиши требуемый ип, если он в вашей сети не выдается динамически, и работай. в VirtualBox'e не так все user-friendly. NAT здесь убогий донельзя. НА каждый ифейс выдается диапазон 10.0.x.0, где x=2,3,4.... Шлюзом становится нечто под адресом 10.0.x.15, оно же DHCP. Как со всем этим выйти во внешнюю относительно гостевой ОС сеть - непонятно, ибо по умолчанию никакх интерфейсов VBox не создает. А вручную чтой-то не попробовал. К тому же в руководстве что то блеется по поводу проброса нужных портов во "внешний мир". В общем, если NAT-вопрос допилю, то отдельный man будет иметь место.
Сейчас же речь пойдет о Host Interface Networking and Bridging, попросту о мостовом соединении гостевой и хостовой ОС. Здесь все более-менее понять можно, хотя до меня и не с первого раза осенило на предмет "как, бля, это запустить??". Поехали ;)
Эксурса в теорию не провожу ввиду того, что теория эта отлично изложена в User Manual, доступного для скачивания на той же странице, где и сам дистрибутив. Поэтому или мне тут безоговорочно верим, или идем читать ;)
Для работы моста в linux-системе требуется доступ пользователя, от имени которого будет запущен VBox, к туннельному устройству /dev/net/tun . С правами мучаться незачем, поэтому
delayer@inspire:~> ls -l /dev/net/tun
crw-rw-rw- 1 root root 10, 200 Окт 7 2007 /dev/net/tun
delayer@inspire:~> su
Пароль:
inspire:/home/delayer # chown root.vboxusers /dev/net/tun
То бишь всех пользователей, что будут рулить виртмашинами, пихаем в группу vboxusers. На собственность root'a посягать незачем.
Пару слов о том, что вообще престоит сделать.
Мост в VBox можно сделать постоянными (появляющимися при загрузке hostОS) - permanent, и динамическими, живущими только до ребута - dynamic. Я думаю, понятен момент, что мост создается на базе физического сетевого устройства, например eth0. Далее создается виртуальное устройство vbox0 (1,2,3...), которое будет нами включено в мост (bridge) с eth0. Управление vbox-интерфейсами осуществляется с помощью трех утилит:
  • VBoxAddIF, которая создает перманентные TAP ифейсы
# VBoxAddIF vbox0 user bridge0
где user - тот, кто будет это ифейс юзать (в моем случае пользователь virtual), а bridge0 - мостовой интерфейс, созданный ранее;
  • VBoxDeleteIF, которая, соответственно, делит созданные ранее vboxX устройства
# VBoxDeleteIF vbox0
  • VBoxTunctl - с ее помощью можно создавать/удалять временные (dynamic) интерфейсы
# VBoxTunctl -t vbox0 -u user ## создали
# VBoxTunctl -d vbox0 ## удалили

Теперь чуть больше частности.
В качестве hostOS будет openSuSE. Для создания моста нам потребуется пакетик bridge-utils, поэтому его нужно установить =)
# yast2 --install bridge-utils
Для того, чтобы можно было управлять мостовым интерфейсом через ifup/ifdown, требуется создать конфиг-файл для bridge0 (естественно с правами root'a) и внести туда следующие изменения:
создать конфиг файл для ифейса моста /etc/sysconfig/network/ifcfg-bridge0 c примерно таким текстом
inspire:/# vi /etc/sysconfig/network/ifcfg-bridge0
BOOTPROTO='static' #IP-адрес задается статически
#DHCLIENT_TIMEOUT=20 # если выбрана DHCP-раздача, раскомментить
BROADCAST='' # оставляем на
MTU='' # усмотрение ОС
NAME='bridge interface' # произвольное имя интерфейса
BRIDGE='yes' # ифейс выполняет функции моста
BRIDGE_PORTS='wlan0' # "моститься" будем на базе wlan0
IPADDR='169.254.0.1' # IP-адрес
NETMASK='255.255.255.0' # маска подсети (в моем случае я просто
# беру параметры настроек wlan0
REMOTE_IPADDR=''
STARTMODE='auto' # интерфейс поднимается при старте hostOS
USERCONTROL='no' # контроль осуществляется системой
То бишь мы указываем, что наш интерфейс будет иметь статический адрес такой-то, маску такую-то (если подразумевается DHCP, то BOOTPROTO='dhcp' это будет bridge-интферфейс, стартующий при запуске системы. А дальше ifdown wlan0 && ifup bridge0.
В моей системе wlan0 - беспроводной интерфейс, на котором висит DHCP-сервер, раздающий адреса для подключаемых в режиме ad-hoc пользователей. Так как вновь появившийся bridge0 взял на себя все параметры wlan0 (сам wlan0 запускается без адреса, маски и так далее, см. ifconfig), то и DHCP-сервер пришлось переконфигурировать на прослушивание brigde0. В этом двойная выгода - и wi-fiподключения не остались без адресов, и все создаваемые vboxX интерфейсы (а соответственно и внутренние интерфейсы гостевых ОС виртуальной машины) видят DHCP, тем самым могут без проблем получить адрес. После этого они будут находиться в раных условиях с wi-fi подключениями - в моем случае это маршрутизация как внутри локалки, так и сразу в интернет. Ну разве не сказка? ;)
Однако, отвлеклись. Далее создается хост-интерфейс vbox0 согласно вышеизложенной теории
inspire:/# VBoxAddIF vbox0 virtual bridge0
После этого он аттачится к вирт машине или консольно
inspire:/# VBoxManage modifyvm "Debian_4.0_r0" -hostifdev1 vbox0
или графически
Машина - Свойства - Сеть - Включить Адаптер, и в поле Имя интерфейса впаять vbox0
Все, стартуем виртуальную машину, запускаем там любой конфигуратор сети и говорим имеющемуся там сетевому интерфейсу получить данные по DHCP. Или выставляем статически, исходя из IP-конфигурации brigde0 (в том плане, чтобы они друг друга видели).
Каждая гостевая ОС использует свой vboxX интерфейс, поэтому если машин несколько, то насоздавать виртуальных интерфейсов следует согласно потребностям. Bridge0 дублировать не нужно.

11 мая 2008 г.

NX@Etersoft on Debian HOW-TO

Для многих задач наиболее актуальным, а зачасту и единственным, является решение терминальной работы приложения, которое разработано по принципу клиент-серверной архитектуры. Если речь идет о nix-сервере, то резонным встает вопрос о терминальном сервере. В принципе удаленный доступ можно организовать с помощью разным протоколов: ssh, vnc, rdp, nx... У каждого есть свои преимущества и недостатки, а также соотвествующая область применения. Далее будет рассмотрена установка и базовая настройка FreeNX сервера с наработками от компании Etersoft - RX@Etersoft, на базе дистрибутива Debian 4.0_r0. Цепляться к нему будем удаленно из openSuSE10.3 с помощью NX-клиента от компании NoMachine.
Почему решение от Etersoft'a? Уж не знаю что они допилили по сравнению с авторской реализацией, однако обещается (разработчиком естественно) корректная работа с рендерингом кириллических шрифтов. При использовании обычного freenx'а шрифты (замечено на многих win-приложениях - WinRAR, 1С, etc) накладываются друг на друга и получается каша. Если отключить рендеринг на стороне клиента (винды то бишь), то резко возрастает обмен трафиком и тормозится работа - вследсвие того что все фонты начинают передаваться bitmap'ами, что нехило по размеру. Решением спецы с Etersoft'a предлагают свой пакет NX'a. С ним и будем работать.
Качаем отсель собранные для нашего дистриба пакеты (freenx_0.7.2-1_i386.deb и nx_3.1.0-1_i386.deb). Затем устанавливаем их, перейдя в соответствующий каталог.
interra:/home/delayer/# cd .\!/rx
dpkg -i *.deb
Так же уже должен стоять пакет openssh-server. Если нет, то следует установить и его.
apt-get install openssh-server
В принципе все - далее займемся конфигурацией.
Для успешной авторизации клиентов нам нужны ключи. Их созданием занимается утилита nxkeygen
interra:/home/delayer/!/rx# nxkeygen
Unique key generated; your users must install
/var/lib/nxserver/home/.ssh/client.id_dsa.key
on their computers.
Далее этот файлик нам пригодится для пользовательских машин, сей ключ мы импортируем nx-клинентам для успешной авторизации на сервере.
Создаем пользователя (или пользователей =)) в системе любым удобным методом, например с помощью adduser.
Запускаем собственный инсталлер сервера, который произведет его настройку и запуск. На "выхлопе" получим примерно следующее:
interra:/home/delayer/!/rx# nxsetup
------> You did select no action.
FreeNX guesses that you want to _install_ the server.
Type "y" to abort the installation at this point in time.
"N" is the default and continues installation.
Use "/usr/bin/nxsetup --help" to get more detailed help hints.

Do you want to abort now? [y/N] n
------> It is recommended that you use the NoMachine key for
easier setup. If you answer "y", FreeNX creates a custom
KeyPair and expects you to setup your clients manually.
"N" is default and uses the NoMachine key for installation.

Do you want to use your own custom KeyPair? [y/N] nSetting up /etc/nxserver ...done
Generating public/private dsa key pair.
Your identification has been saved in /etc/nxserver/users.id_dsa.
Your public key has been saved in /etc/nxserver/users.id_dsa.pub.
The key fingerprint is:
81:a9:42:ea:97:59:51:41:c3:e4:f0:63:29:cc:d8:10 root@interra
Setting up /var/lib/nxserver/db ...done
Setting up /var/log/nxserver.log ...done
Setting up known_hosts and authorized_keys ...done
Setting up permissions ...done
Setting up cups nxipp backend ...done

----> Testing your nxserver configuration ...
Warning: Could not find nxdesktop in /usr/bin. RDP sessions won't work.
Warning: Could not find nxviewer in /usr/bin. VNC sessions won't work.
Warning: "/usr/lib/cups/backend/smb" is not executable.
Users will not be able to enable printing.
Warning: Invalid value "DEFAULT_X_SESSION=/etc/X11/xdm/Xsession"
Users might not be able to request a default X session.
Warning: Invalid value "COMMAND_START_KDE=startkde"
Users will not be able to request a KDE session.
Warning: Invalid value "COMMAND_START_CDE=cdwm"
Users will not be able to request a CDE session.
Warning: Invalid value "COMMAND_SMBMOUNT=smbmount". You'll not be able to use SAMBA.
Warning: Invalid value "COMMAND_SMBUMOUNT=smbumount". You'll not be able to use SAMBA.
Error: expect necessary for /usr/bin/nxnode-login could not be found in '/usr/bin/expect'. Please install it or change nxnode-login accordingly.

Errors occured during config check.
Please correct the configuration file.
На сообщения об опасности особого внимания обращать не стоит, часть из них, что ругается на Invalid value, есть следствие того, что указанные переменные не определены ввиду отсутствия установленных компонентов (CUPS, samba), остальные уведомляют, что не могут найти некоторые компоненты nx-пакета. Однако ни RDP, ни VNC протокол мы использовать не будем, поэтому нам это не вредит ничуть %).
По поводу второго вопроса (с первым я думаю все ясно), связанного с KeyPair, выбираем вариант использования ключей специально для NoMachine, который и будет использоваться в качестве клиента. Хотя по сути, если мы создаем ключ заново nxkeygen'ом, а затем его импортируем клиентам, то смысл ответа n в принципе то теряется. Но подумал я об этом только сейчас, когда уже все работает ;). Так что по уму стоит поставить y, если мы хотим использовать свои ключи, сгенеренные на этой системе, и n, если планируется работать с NoMachine nx-клиентом и его дефолтными ключами. Тогда этап отработки nxkeygen'a выпадает.
Теперь зарегистриуем пользователя для nx-соединения через nxserver. Это делается через примерно следующий диалог:
interra:/# nxserver --adduser delayer
NX> 100 NXSERVER - Version 2.1.0-72-SVN OS (GPL)
NX> 1000 NXNODE - Version 2.1.0-72-SVN OS (GPL)
NX> 716 Public key added to: /home/delayer/.ssh/authorized_keys
NX> 1001 Bye.
NX> 999 Bye
interra:/var/lib/nxserver/home/.ssh# nxserver --passwd delayer
NX> 100 NXSERVER - Version 2.1.0-72-SVN OS (GPL)
New password:
Password changed.
NX> 999 Bye
Для надежности перезапустим nxserver
interra:/home/delayer/!/rx# nxserver --restart
Eсли пользователя нет в ОС, то nxserver вернет ошибку, так как при регистрации используется домашний каталог пользователя.
После этого на стороне клиента настраиваем NX-клиент, в данном примере от NoMachine - http://www.nomachine.com/download-client-linux.php, доступны сборки как для deb-, так и для rpm-орентированных дистрибутивов, ну и tarball тоже имеется. Поддерживаются linux, BSD, MacOS, Win системы.
Создав подключение (пояснение не привожу, так как считаю что ничег осложного в этом нет, все исключительно user friendly), импортируем сохраненный ранее ключ. Вот так: Configure -
General -> Key... -> Import -> /path/to/dsa-key -> Save
Все, проверяем подключение.
Если для секурности есть желание изменить ssh порт, то это делается в /etc/ssh/sshd_config, меняя значение Port. Аналогично изменяется директива SHHD_PORT на желаемое значение в /etc/nxserver/node.conf. Там же стоит изменить уровень логирования с дефолтного 0 на 2 или 4 ( опция NX_LOG_LEVEL). Подробности прямо в конфигурационном файле. Это полезно при начальной настройке и обкатке. Впоследствии несложно отключить и рестартнуть nxserver
interra:/# nxserver --restart
После перезагрузки самой системы freenx поднимается сам, благодаря init-скриптам.

8 мая 2008 г.

enlarge your Speeddial

Еще один классный, найденный на просторах Сети Opera-ный трюк. Если тебе нравится Speed Dial (то ты знаешь что это такое и обяснения излишни), то возможно. ты не раз задавался(лась) вопросом - а как бы побольше быстрозапускаемых страничек налабать? Настройки оперы, включая about:config хранят нордическое молчание.. Но выход есть. И вот он. Для тех кому чтить лень, а хочется действовать, делаем так
delayer@inspire:~/.opera> echo -e "[Size]\nRows=3\nColumns=5\n" >> ~/.opera/speeddial.ini
где цифры - это желаемое количество строк и столбцов с иконками соответственно. Правда говорят, что при большом их количестве браузер начинает притормаживать, так что не переусердствуй ;)

17 апр. 2008 г.

Google Apps +GTalk + Jabber HOWTO

Потихоньку продолжаем осваиваться в вотчине http://delayer.org, точнее, в его админской части. С чего все началось, можно осведомиться тут и тут. За $10, которые я заплатил за регистрацию непосредственно домена в enom, в нагрузку мне был "даден" базовый пакет Google Apps, или Служб Гугла в отечественном переводе. В принципе, если доплатить ;), то можно и более продвинутые пакеты получить, с большими возможностями и техподдержкой, но это уже совсем другая история. Базовый же пакет предоставляет, напомню, следующее - почту в домене @delayer.org со всем Gmail'овскими приблудами (до ста аккаунтов), включая 6 Gb места; так называемая Стартовая страница, то есть "корпоративный аналог igoogle; сервис Pages - онлайн создание веб-страниц того или иного наполнения (гугломастер прилагается )); Google Calendar, GoogleTalk и GoogleDocs до кучи. Сегодня остановимся на GoogleTalk'e.
Кто не в курсе, гугл предлагает каждому имеющему учетную запись @gmail.com собственную разработку IM с возможностью телефонии - GoogleTalk, причем его IM-составляющая реализована на открытом протоколе XMPP, то есть любой клиент, знающий что такое Jabber, с легкостью может прицепиться к аккаунту Talk'a. При условии, что фирменный клиент существует только для масдая Windows, сие есть вери гут.
Однако не все так радужно. Аккаунт @gmail.com - это полностью работоспособный jabberID, разве что многие гейты в другие IM сети с крупных Jabber-серверов заблокированы, то есть прилинковать их не получится. Аккаунт же доменный, то бишь @delayer.org в моем случае, видит лишь все учетки внутри домена (более того, они автоматически добавляются в адресную книгу ящика и контакт-лист IM-пейджера при создании администратором), а также можно общаться с другими пользователями Служб Google. И только. Да и то, настройками службы чата можно запретить и это, оставив лишь внутридоменное взаимодействие. Чтобы сотрудники секреты корпоративные не слили ;). Но мне оно это не надо... Однако даже с поставленными разрешающими галками Service Discovery, запущенный в Psi, не выдает ничего, то есть связи с тем же jabber.org попросту нет.
Но тем не менее это прекрасно лечится, ибо есть такая штука, как федерация сети. В справочном центре читаем:
Если требуется предоставить пользователям возможность обмена мгновенными сообщениями с людьми, подключенными к сети Google Talk через объединенные в федерацию сети, то необходимо изменить записи служб (SRV).
Так как все мое хозяйство целиком и полностью находится в ведении гугла, то и правку DNS служб нужно делать через него.
Доменным регистратором, как я говорил выше, является Enom, он и предоставляет web-морду для работу с доменом и прилегающими сервисами. Попасть туда можно через админку Служб гугла для домена: Настройки домена - доменные имена - Дополнительные настройки DNS - Войдите в консоль DNS. При этом выдается логин (поле Территория) и одноразовый пасс. Попав в админку, следует ввести следующие SRV записи:

_xmpp-server._tcp.gmail.com. SRV 5 0 5269 xmpp-server.l.google.com.
_xmpp-server._tcp.gmail.com. SRV 20 0 5269 xmpp-server1.l.google.com.
_xmpp-server._tcp.gmail.com. SRV 20 0 5269 xmpp-server2.l.google.com.
_xmpp-server._tcp.gmail.com. SRV 20 0 5269 xmpp-server3.l.google.com.
_xmpp-server._tcp.gmail.com. SRV 20 0 5269 xmpp-server4.l.google.com.
_jabber._tcp.gmail.com. SRV 5 0 5269 xmpp-server.l.google.com.
_jabber._tcp.gmail.com. SRV 20 0 5269 xmpp-server1.l.google.com.
_jabber._tcp.gmail.com. SRV 20 0 5269 xmpp-server2.l.google.com.
_jabber._tcp.gmail.com. SRV 20 0 5269 xmpp-server3.l.google.com.
_jabber._tcp.gmail.com. SRV 20 0 5269 xmpp-server4.l.google.com.
_xmpp-client._tcp.gmail.com. SRV 5 0 5222 talk.l.google.com.
_xmpp-client._tcp.gmail.com. SRV 20 0 5222 talk1.l.google.com.
_xmpp-client._tcp.gmail.com. SRV 20 0 5222 talk2.l.google.com.
_xmpp-client._tcp.gmail.com. SRV 20 0 5222 talk3.l.google.com.
_xmpp-client._tcp.gmail.com. SRV 20 0 5222 talk4.l.google.com.
Ужас, правда? =)
Однако в enom'e народ не дурной, поэтому вебморда там умная и все упрощено донельзя. Вот как оно все вводится:
Сохраняем, выходим, проверяем... Настройки Psi в плане соединения должны выглядеть следующим образом:
И все, теперь JID delayer@delayer.org по функционалу ничем не отличается от @gmail.com, пишите ;)
В подготовке статьи использованы следующие материалы: первый, второй, и еще один.

11 апр. 2008 г.

коротко о SysRq

Еще с времен win-систем всем известен так называемый "трехпальцевый салют",то бишь Alt+Ctrl+Del, кто-то еще помнит ctrl+shift+esc, вызываюший Диспетчер задач. А какие горячие, причем в буквальном смысле - требуемые, када фсе "горит", сочетания клавиш знаем мы в мире nix? Кроме сакраментального альтконтрлделета да at+ctrl+backspace, рестартующего иксы, в голову лезут только хоткеи или часто используемых приложений, или KDE. Что, в случае зависания системы по тем или иным причинам, малодейственно, ибо Х-сервер, вкупе с "кедами" висануть могут в первую очередь.
Однако UNIX на то и UNIX - и выход есть и из таких сложных задач. Да, всегда существует "семь бед - один RESET", однако часто это чревато или потерей данных, или некорректной записью на жесткий диск с возможным повреждением его структуры. Короче, с геморроем на наши головы. С помощью SysRQ клавиш, точнее, с сигналами, формируемыми ими ;), многих проблем можно попробовать избежать.
Кратенько опишем основные из них, которые могут пригодиться в жизни чаще остальных. Подробности как всегда есть в документации, например вот тут - /usr/src/linux/Documentation/sysrq.txt , ну или в рамках форума сообщества Вашего дистрибутива. Или просто в Google ).
Везде по-разному, и некоторые дистрибы могут по умолчанию отключать работу ядра с sysrq-комбинациями, поэтому для надежности включим их через procfs:
echo "1" > /proc/sys/kernel/sysrq
Теперь можно и поиграться. В общих чертах опишем, что произойдет при нажатии тех или иных сочетаний. Для тех, кто до сих пор в танке, поясняем, что клавиша SysRQ совмещена на клаве с PrtScr, с принтскрином то есть. Итак, поехали!

alt+sysrq+I - посылка SIGKILL (SAK), то бишь в текущей консоли кирдык приходит всем приложениям, причем без сохранения.
alt+sysrq+E - посылка SIGTERM - в принципе аналогично предыдущему, только софту дается время на сохранение всех рабочих данных (естественно при условии, что данная софтина знает, что нужно делать при SIGTERM'е, иначе - тот же SIGKILL).
alt+sysrq+K - убивает все зависшие процессы в текущей виртуальной консоли, остальные вроде как живы останутся ;).
alt+sysrq+S - Очень важное сочетание - сброс содержимого дисковых буферов на хард, то бишь принудительная синхронизация всех устройств хранения. Ясно-понятно, что на это требуется время, поэтому следует дождаться вывода в STDOUT строки
Emergency Sync...OK
или, если уж совсем все знатно зависло, но клава все таки (хотя бы теоретически) способна переслать нажатие, то подождать секунд 5-10.
alt+sysrq+U - Размонтирование фсех фс. Опять же экстренное, кстати с синхронизацией вроде бы не связанное, так что следует 1) делать это после Emergency Sync 2) тоже покурить секунд 10-15 или дождаться
Emergency Umount... OK
alt+sysrq+B - reboot аля ресет, то есть жестко, сразу, без каких либо сохранений, синхронизаций и прочих прелюдий.
alt+sysrq+O - выключение питания без размонтирования фс. Похоже наверное на выдерживание Power'a в течение 4 секунд у ATX БП.

Ну вот, как то так ;)

26 мар. 2008 г.

Opera trick

Представим такую (зачастую утопичную, но иногда и реальную) картинку - ищу я, например, ЧТО_ТО, и по моему сабжевому запросу поисковик выплевывает стопицот результатов, однако сидя первую десятку/двадцатку ссылок, я понимаю, что нада проглядеть фсе (я не жадный, просто так получилось ;)). Что я делаю? ЗАжимаю ctrl+shift и методично обтыкиваю все интересные линки, и курю, пока опера их все в отдельные вкладки рассует и откроет. Так вооот, сегодня с утреца наткнулся, разгребая новостную ленту, на преинтереснейший элемент оптимизации данного подчас рутинного труда. Нактнулся на это, а элемент - вот этот.
Элемент сей есть java-script, скормив который опере (естественно активировав поддержку Java-Script по адресу Tools -> Preferences -> Advanced -> Content -> Enable Java-Script), что делается указанием браузеру папки, в которой этот (и возможно, еще какие, если есть) скриптец нами послезагрузки определен, мы получаем SnapLinks. Кстати, указание папки с пользовательскими скриптами делается по адресу Tools -> Preferences -> Advanced -> Content -> Java-Script Options -> User Java-Script Files - Choose. У меня других нет, поэтому ничтоже сумняшеся я закинул сабж в ~/.opera .
Теперь, получив (возвращаюсь к началу) страницу с обязательными к посещению ссылками я просто зажимаю левую кнопу манипулятора типа мышь и выделяю нужный мне объем ссылок (зацепленные прямоугольничком выделяются красным), и по отпускании кнопы получаю все их открытые в отдельных табах. Причем открываются они в фоне, что немаловажно!
Вот такая вот ляля. Must Have всем opera-водам.

19 февр. 2008 г.

"бесшовная" виртуализация

Интересная статейка из оперы виртуальной дружбы win в lin. Правда, самому пока полноценно заюзать сабж не позволяют технические возможности. Поэтому линк вмемориз, то есть в блог ;), а как в железном плане обогатюсь, то обязательно попробую и свои впечатления означу.

13 февр. 2008 г.

немного Mac-style'a с ksmoothdock

Добавим в KDE чуток Mac-style'a...

Это вместо скучного и неинтересного нагромождения значков часто запускаемых приложений из quickLaunch'a. Теперь, благодаря софтинке ksmoothdock, я переместил их в нижнюю часть рабочего стола, поставил поверх всех окон, сделал фон полностью прозначным (зеленые символы - ето отображаемый на рабочем столе лог vsftpd через софтинку root-tail... об этом я уже писал), включил параболический эффект увеличения, подобрал из имеющейся в системе коллекции красивые и масштабируемые (SVG походу) иконки...
В общем, вышло по-моему классно. То, что доктор прописал! Рекомендую. Все перечисленные выше действия выполняются за пару минут в легкопонятном меню опций, приложения на панель добавляются в отдельном меню. Также, кроме быстрого запуска, данный докер умеет показывать текущее содержание taskbar'a (обращаться к уже запущенным приложениям, закрывать их одним кликом), часы (правда, без секунд, но зато с возможностью установить 24-часовой формат) и pager, аля KDE-шный kpager. Правда мне все это было не нужно, поэтому отключил нафиг. Однако функционал порадовал. Софтинку вмемориз и автозапуск ;)
Да, зависимостей не просит, весит мало (300+ Kb), ставится быстро. Enjoy!

6 февр. 2008 г.

compiz-fusion memo

Памятка: для корректной работы compiz-fusion следует..
  • нахер послать дрова nvidia 169ой версии (я откатился 94-ые)
  • внести в /etc/X11/xorg.conf следующие изменения:
Section "Screen"
<....>
DefaultDepth 24
Option "AllowGLXWithComposite" "True"
Option "RenderAccel" "True"
Option "AddARGBGLXVisuals" "True"
<....>
Section "Extensions"
option "Composite" "on"
  • создать симлинк (ln -s) на compiz-manager в ~/,kde/Autostart
Фсе ;)

5 февр. 2008 г.

Заводим свой домен с помощью google apps

Возвращаясь к переезду на www.delayer.org...
возникли у народа вопросы типа "как ты, сцуко, такое сотворил, и хде можно так же, а главное, каким образом." Что ж, дабы умерить их любопытство и свое графоманство, сделаем мини-guide в картинках. Итак, поехали.
Перво-наперно топает на главную страницу Google Apps (Служб Google) и жмем большую синюю кнопку вверху справа ;)
Далее следует определить версю пакета. Чем предлагаемые пакеты служб друг от друга отличаются, читаем тут же:
Не сказал бы, что выбор особо велик ;) В общем, берем базовый пакет, возмоэностей которого хватит за глаза, и едем дальше...А дальше начинается самое интересное. Чтобы пользоваться Службами Гугла, будь то чат, календарь, веб или почта. нужно же куда-то обращаться ;) А посему идем регить домен (если у нас его нет, а если есть - там проще, завязываем пакет на уже имеющийся домен и пользуем, однако эта история остается сегодня за рамками повествования).
Опускаю в скриншотировании следующее диалоговое окно, ибо там все понятно... вводим в строку желаемое имя домена, выбираем зону (.com, .net, .biz, .info, .org) и проверяем его доступность. Если мы были оригинальны, то получаем вот что-то такое:

...ну а если не повезло, пробуем снова и снова до достижения вышеизложенной картинки ;)
В следующем окне заполняем обязательно все поля, и желательно достоверной информацией. Ну хотя бы такой, чтобы whois'ать домен было не стыдно ;). Ну вот как-то так хотя бы...
Ставим галку "Обновлять ежегодно", дабы раз в год Google сам снимал с моего счета десять баксов для продления регистрации домена и кликаем баттон Принимаю. Дальше - самое интересное, переходим к Google Checkout. Для работы с ним обязательно нужен Аккаунт Google, так что если хто этим еще не озаботился, прерываемся для регистрации. Иначе, если вход до этого произведен не был (как в моем случае на скрине внизу), входим в систему и заполняем все поля.
Опять же, далее кликаем баттон внизу, подтверждая что де "я на все согласная, гони уже домен". После этого ждем какое то время (секунда 20-30), и если все было введено верно, то на мыло падает пара писем - сначала о подтверждении действий, и потом - с ссылкой в админку домена ;) We're Victorians!
Сразу оговорюсь, дабы не возникало вопросов, другие платежные системы (WebMoney, PayPal, тем более все наши) идут лесом. По крайней мере сколько по линкам туда-сюда не ходил, кроме Checkout'a недоступно ничего. Так что стоит обзавестить банковской картой любой из обозначенных (смотри скрин) платежных систем. И тогда все будет айс.
Удачи! ;)

3 февр. 2008 г.

Взгляд на веб через Prism'у

Дошли наконец-таки руки попробовать такую штуку как Mozilla Prism. Слыхал про него уже давно, еще в конце осени, однако тогда и времени особо не было, и релиз у них был только виндовый. Сегодня чтой-то вспомнил про него, и правильно сделал, товарищи зарелизили призму для линукса и мака. Качаем! В двух словах, что это.
Сим поделием мы онлайновые веб-сервисы, как-то почту, новостные ленты, любимые сайты, етс "локализуем" на рабочем столе в виде ярлыков. То бишь, когда я кликаю к примеру на ярлычок с надписью "Гугломыло", то открывает окошко с приглашением войти в почту. По сути, как я догадываюсь, запускается сильно урезанный огнелис (или что-то, на его костях собранное), открывающий заданный в настройках URL. Ну так это в принципе мне и надобно ;). Можно возразить, что де если понатыкать таких ярлыков на все нужные в повседневном браузинге сайты, то по сути произойдет возвращение ко временам IE без вкладок - куча окон и минимум возможностей в каждом. Сие возможно, если не знать меры ;)
Со своей стороны, я пользуюсь Opera'ой, и отказываться от нее не собираюсь, данный браузер устраивает меня во всем и с ним мой браузинг наиболее комфортен. Однако я вынужден постоянно держать открытым Firefox, дабы иметь стабильный и неглючащий доступ к G-сервисам, в основном это igoogle, gmail и blogger, изредка picasa. Так вот а опера худо бедно переваривает только гугломыло, с остальными же сервисами может вытворить все что угодно. Но на нее и не покатишь бочку, ведь Google предупреждает честно, что опера не являается полностью поддерживаемым им браузером, а ввиду этого - уж чо выйдет, мы предупредили.
Хотя что-то мне подсказывает, что сей поддержки не будет еще долго, если будет вообще. Ведь сейчас даже поиск по умолчанию, что в "большой" опере, что в mini - yahoo! Ну да не об этом сказ.
В общем, скачав тарболл, распаковываем привычным tar -xjvf prism-0.8-linux.tar.bz2 и, зайдя в prism/ запускаем бинарник. Как говорится, "все уже скомпилено до нас ;)". Запустив, имеем вот чего:

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

Удобно, не правда ли ;)
Теперь, фанатам норвежского браузера, угораздившим влиться и застрять в G-сервисах, аки я, не нужно держать ФФ постоянно включенным, призма делает это намного лучше и интереснее. Да и судя по ps aux, еще и чуть экономичнее в плане памяти.
Если не ошибаюсь, сабж пока еще в статусе беты, так что косяки в принципе возможны. Будем следить за рекламой ;)
PS: если при создании призмы какого то приложения "чо-то не то нажалось" (в адресе там косяк, галки не нужные поставили или наоборот, поставили ненужные), то все проще поправить ручками в ~/.prism .
delayer@inspire:~> ls ~/.prism/2798xkm2.default/webapps/
blogger@prism.app gmail@prism.app igoogle@prism.app
в каждой из папок (по одной на каждое приложение) есть файлы localstore.json и webapp.ini, первый из которых отвечает за окно (его положение на столе, координаты, видимость и так далее), второй - конфиг приложения, параметры которого полностью повторяют параметры окна создания призмы. Вот там все на ура и правится. После перезапуска приложения настройки ясен пень перечитываются.

linux+directX9.0c

Обновил wine до 0.9.54 и решил инсталлить в него DirectX9.0c какой там у нас последний... вроде Nov07. Самому велосипед без надобности изобретать не хотелось, поэтому первым делом был спрошен тандем гуглояндекса по сабжу. Нашел статейку (в принципе видел и перевод хде та, но предпочел следовать оригиналу). Добавить к изложенному в принципе нечего, скачав все предложенное и следуя инструкцию, установил "директрису" без особых проблем. dxdiag работает ;) Значит все окей. Статейки хорошие, так что вмемориз. Ну а если какие игрушки удастся путево позапускать под дирексованным вайном,.... что ж, сообщу отдельно ;)

локальный поиск далеких пакетов

Интересную вещичку откопал. Для кого то может и окажется бояном, но для меня новость. велкам - Webpin, можно сказать персональный консольный йандекс по поводу поиска пакетов. Ведь как было - нужен пакет, yast запускать или лень, или нет там. Поэтому отправляюсь я на rpm.pbone.net и пытаю там щастья. Когда везет, когда нет.... это всегда бывает. Куча действий ;) Терь можно упростить. Webpin позволяет прямо "не выходя из домашнего каталога" найти нужный пакет, и получить сцылко для его поимения ;) выглядит это следующим образом:
Ключики можно поглядеть в man'e, там все просто. На скриншоте команда выводит найденные пакеты только по имени файла (-n), версия их только для последней выпущенной ОС, то есть openSuSE10.3 (-l), найденные результаты сравниваются с имеющейся базой данных пакетов (-r), естественно, работает только от рута, также выводится и полный путь, откуда найденный пакет можно скачать (-u). Для вывода используется "темная" тема (--theme=dark), как наиболее удобоваримая для черного фона консоли, ну и в качестве backend'a пользуем zypper (--zypper). Все просто и быстро. И поэтому во многих случаях удобно. Enjoy!

[MicRO@work]:USB Fingerprint + Debian

Продолжением совместной с MicRO работы я думал запостить USB Fingerprint + Debian HOWTO, но оно, хауту ето, уже оказалось в свободном доступе на Опеннете. Я чо, рыжий шоле, лишним флудом заниматься... Делаем по-хитрому, даем линк. Ну и отражаем в топике, чтобы самому найти, если вдруг какая-нить сволочь любимая кто-то подарит подобный девайс. Тыдыщь, а я уже знаю, че с ним, девайсом, делать ;)

[MicRO@work]: HPLJ 1018 + Debian

Подарили нам на 2-летие принтер HPLJ1018 - ну нужно приручать, просто так он не давался (бескнопочный гад Ж)), на пробные печати тоже не реагировал. Немножко подумав, порыскав в инете, решение нашлось и так:

1. Ставим cups, foomatic, hpijs, foo2zjs (из этого у меня не стояло тока foo2zjs) {гыгы, даже у тру атцоф не всегда стоит... ;) всё}. Для тех кто в танке:
apt-get install cupsys cupsys-bsd hpijs foomatic-filters-ppds hpijs-ppds foomatic-db foo2zjs
Но тут нас ждёт подводный камень: foo2zjs чот както не правильно работает, не так как хочет принтер {тут не так, здесь не эдак... пересобрать нах!}, лечение нашлось сборкой из исходников .

2. Ну а дальше как по ману{а по какому, сопсно? ;)}:
$ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz
$ cd foo2zjs
Compile:
$ make
$ ./getweb 1018
$ su
# make install
# make install-hotplug
# make cups

3. Ну и наконец заходим на http://localhost:631/, после удаляем принтер HPLJ1018 если он есть и добавляем его заново, будет чтото типа: HP_LaserJet_1018_USB_1 добавляем именно его, после чего выключаем, включаем принтер и, о чудо, всё должно работать Ж) {от не нравится мне это "должно", право слово...но, внемлем}
——————————————————————————————
Не успев написать эту статью, пришлось приручать принтер в обраную сторону :) То есть Винда (тут принтер) — Линукс (Debian(хочет печатать)). Решение таково:

1. Ставим самбу клиента: apt-get install smbclient smbfs

2. На всякий случай поствим дрова foo2zjs, почти всё как выше
# make
# make install install-hotplug cups
После этого заходим например в Управление компьютером -> переферия -> принтер -> добавить -> другие и пишем:
smb://workgroup/user:pass@ipadress/name_printer
Ну или через Cups
Радуемся... {а ты - радуешься?? ;)}
MicRO©
P.S.: курсивом это я покомментил чуток ;) если кто в танке, хехе