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

Переключение раскладки в KDE

Статья взята отсюда

Небольшое, совсем маленькое руководство для тех, кто ещё мучается или совсем маленько мучается с переключением раскладки в KDE с русской на латиницу и наоборот. Цель: сделать «как в винде». А именно, кроме переключения раскладки, добиться сохранения её состояния в каждом окне.


1. Чиним переключалку.


Чтобы заработало само переключение, идём по следующему пути: «Меню KDE» => «System Settings» => «Regional & Language» => «Раскладка клавиатуры».
Здесь удаляем всё, кроме нашей родной Russia. Не бойтесь, латинская раскладка будет. Просто поставьте галочку «Включить латинскую раскладку». Всё, проблема переключения решена. И тут возникает другая проблема: флажки стран не меняются при переключении раскладки.



2. Настраиваем индикатор.


Здесь нам на помощь приходит замечательная программа kkbswitch замечательного украинского программиста Леонидна Цейтлина. Например, в Kubuntu, она устанавливается так:
sudo apt-get install kkbswitch

После установки появится значок в трее. У меня по-умолчанию почему-то вместо российского триколора был белый квадратик с цифрой «2». В настройках можно сменить значок.
А можно поставить буквенную индикацию, если вам не нравятся флажки.



3. Сохранение состояния раскладки в разных окнах.


Тут дело вкуса. Для тех, кому это надо, лезем в настройки kkbswitch, и в списке «Раскладка действует для:» выбираем нужный вам вариант. Теперь при переключении, например, в консоль, вам не надо будет переключать раскладку на латиницу, если вы только что писали на русском письмо в вашем почтовом клиенте.

4. Меняем иконки флажков.


Мне «родные» иконки kkbswitch показались не красивыми. Если вы тоже так считаете, то за симпатичными флажками далеко ходить не надо. Они находятся в пределах Хабра: http://habrahabr.ru/blog/iconoskaz/33750…
Скачайте, распакуйте и в настройках поменяйте иконки.



5. Ещё немного.


К пункту «1»:
Не забудьте выбрать в списке «Вариант раскладки» пункт «winkeys», иначе у вас запятая будет на «семёрке», буква «э» на тильде и так далее.

Настроить сочетания клавиш (например, многим привычное Ctrl+Shift) можно там же, во вкладке «Параметры ХКВ». Здесь же можно включить индикацию светодиодами на клавиатуре (включённый Scroll Lock — русский, выключённый — латиница).

Также поставьте галочку «Игнорировать параметры системы».

P.S. Естесственно, это руководство касается не только русской раскладки. На её месте может быть любая другая, которую вы используете. Знаю, что тема уже тёрта-перетёрта, но эта проблема весьма популярна на фоне массовой «убунтунизации» и чтобы не объяснять каждый раз людям одно и то же, можно «кидаться» в них ссылкой на это руководство.

Допольнительно:
  • Настройка xkb — стандартной системы переключения раскладок в KDE.

  • Частичное решение проблемы нерабочих сочетаний при русской раскладке от посмотреть профиль m11: с помощью установки в Control Center => Keyboard Shortcuts => Application Shortcuts в качестве альтернативных сочетаний клавиш для "Вставить" — Ctrl+М, для "Вырезать" — Ctrl+Ч и так далее.
  • среда, 15 октября 2008 г.

    Настройка тачпада в LINUX

    Так как я являюсь облодателем ноута мне пришлось столкнуться с некоторой очень интересной проблемой.
    Скорочть мышки подключенной по USB и тачпада не то что бы не совподают
    они просто совершенно разныею
    Чтобы провести указатель из одного угла экрана в другой надо раз 10-15 провести пальцем по тачпаду.
    решение было найденно быстро
    немного погуглив я нашел следующий выход из сложившейся ситуации
    в файле /etc/X11/xorg.conf
    добовляем в секцию

    "InputDevice"
    где
    Identifier "Synaptics Touchpad"

    следующие три строки

    Option "MinSpeed" "0.7"
    Option "MaxSpeed" "1.2"
    Option "AccelFactor" "0"

    Тобиш
    прим медленном движении пальца по тачпаду
    при быстром
    и степень ускорения

    Еще есть пакет называется он
    gsynaptics
    Много полезной информации по настройке тачпада можно посмотреть здесь

    мой конфиг для тачпада следующий...

    Section "InputDevice"
    Identifier "Synaptics Touchpad"
    Driver "synaptics"
    Option "SendCoreEvents" "true"
    Option "Device" "/dev/psaux"
    Option "Protocol" "auto-dev"
    Option "HorizScrollDelta" "0"
    Option "MinSpeed" "0.7"
    Option "MaxSpeed" "1.2"
    Option "AccelFactor" "0"
    Option "MaxTapTime" "180"
    Option "MaxTapMove" "220"
    Option "VertScrollDelta" "100"
    Option "SHMConfig" "true"
    EndSection


    Но скроллинг и таппы не заработали
    поиски продалжаются
    Как победю так сразу статью и допишу

    пятница, 12 сентября 2008 г.

    Если устройство в Linux работать не хочет...

    Еще одна помоему ОЧЕНЬ нужная статья все с тогоже ресурса.

    Если устройство в Linux работать не хочет...

    ... то не надо сразу кричать "Linux - отстой, Windows рулит", потому как часто решение - в шаге от вас. Немного терпения, и всё скорее всего получится.

    Устройство в Линукс не работает - что делать?
    Для того, чтобы попробовать решить проблему, требуется:

    1. Точно узнать название устройства и подробности его работы. Лучший способ - посмотреть логи, большинство которых находится в каталоге /var/log (они доступны для просмотра только пользователю root)
    • Если устройство подключается к USB - пишем в консоли lsusb > lsusb.txt
    • Если это встроенное устройство или подключено к ISA/PCI, пишем lspci > lspci.txt
    • Так же для обращения в поиск и форум потребуется вывод команды dmesg
    • Если проблема с видеокартой или вообще видеоподсистемой - сохраняйте /var/log/X.org.conf или /var/log/XFree86.conf (у кого он остался)

    2. Учитесь читать и анализировать логи - в них часто не только ответ на ваш вопрос, но и путь к его решению. Это приходит с опытом, но надо же с чего-то начинать...
    Пример: пользователь жалуется, что в ноутбуке при подключении USB-мыши Линукс зависает. Это в общем не характерное для Линукс поведение, тем более в случае USB-шины, может быть вызвано:
    а) кривым драйвером (что редко) или
    б) кривым оборудованием (что чаще).

    Опытный факт: если в оборудование работает неправильно, ядро об этом будет сыпать сообщениями типа Warning и FATAL часто, пока проблема не решится.

    Смотрим логи dmesg: одна из строк выглядит так

    PCI: BIOS Bug: MCFG area at e0000000 is not E820-reserved
    Кто владеет английским на уровне школы, тот может догадаться, что в BIOS какая-то ошибка. Смотрим дальше:

    PCI: Bus #03 (-#06) is hidden behind transparent bridge #02 (-#03) (try 'pci=assign-busses')
    Please report the result to linux-kernel to fix this permanently
    Так и есть: а вот и возможное решение нашей проблемы! Об этой проблеме ядро "скажет" ещё не раз:

    PCI: Using ACPI for IRQ routing
    PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
    PCI: Cannot allocate resource region 3 of device 0000:00:00.0
    Какой-то регион 3, какие-то устройства... не сразу можно понять. Интересно, где это себя проявляет?

    ACPI: PCI Interrupt 0000:00:13.2[A] -> GSI 19 (level, low) -> IRQ 17
    ehci_hcd 0000:00:13.2: EHCI Host Controller
    ehci_hcd 0000:00:13.2: new USB bus registered, assigned bus number 1
    Это USB-устройства - всё сходится. Зависание Линукса при втыкании USB-мыши происходит благодаря кривизне рук программистов, написавших BIOS. Теперь понятно не только кто в этом виноват и куда копать, но и один из возможных методов решения.

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

    3. Локализуем проблему. Что именно не работает?
    • Если это принтер, за это отвечает подсистема CUPS, поэтому официальный сайт в помощь: проверьте, поддерживается ли ваш принтер и если да, то в какой степени. Попробуйте установить более свежую версию CUPS, походите по форумам - желательно с логами, версией ядра и подробным описанием проблемы.
    • Если это сканер - наш рулевой это подсистема SANE и гугление по словам sane linux _модель_сканера_.
    • Работу звуковых карт обеспечивает проект ALSA, где можно так же узнать о поддержке оборудования. Для этого имеет смысл так же попробовать установить или собрать самому более свежее ядро Линукс (в ядре содержится большое количество драйверов).
    • За сенсоры и термодатчики на материнских платах отвечает проект lm85, который состоит из драйверов ядра и утилит работы с ними.
    • Источники бесперебойного питания (UPS) поддерживаются пакетом apcups.

    Попытаться устранить проблему при помощи гугления по методу _имя_проекта_ linux _название устройства_. Очень и очень часто решение есть и ждёт своего часа. Если гугление и прочие методы не принесли желаемого результата - остаётся подождать, пока проблему решат и / или добавят драйвер устройства в ядро или программы связанных с устройством проектов. В конце концов, двойную загрузку (dual boot) с другими операционными системами никто не отменял.

    Ссылки и благодарности

    Пост был вдохновлён комментарием _Yuriy_ на opennet, в котором говорилось, что "написать обзор может каждый дурак, а вот что делать, когда устройство не пашет?" Насчёт первой части утверждения можно и поспорить, а во второй части есть сермяжная правда - надеюсь, кому-нибудь этот пост пригодится.

    Волшебная клавиша SysRq / Printscreen

    Еще одна статейка взятая вот ОТСЮДА!!!

    Достаточно редко, когда я провожу над своей системой бесчеловечные ядерные эксперименты, она зависает наглухо - ничто не совершенно в этом мире. Именно для этих целей в ядре Линукс имеется замечательная возможность: Волшебная клавиша SysRq.



    Что это такое?

    Если внимательно посмотреть на клавиатуру, там обнаружится кнопка PrtSc / SysRq. Подавляющее большинство виндоуз-пользователей полагают, что она специально присутствует на клавиатуре для скриншотов - забывая, что эта кнопка появилась на клавиатуре задолго до появления редмонтовской конторы.
    На самом деле эта клавиша - наша единственная прямая связь с ядром, которая работает всегда. При помощи некоторых комбинаций клавиш можно заставить систему аварийно сбросить данные на диски, размонтировать все файловые системы в режим "только-чтение" и перезагрузиться даже при наглухо зависшей системе.



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


    Как ей пользоваться?
    Сначала нужно убедиться, что она включена: в конфиге ядра CONFIG_MAGIC_SYSRQ должно иметь значение Y (по крайней мере в дефолтном ядре Дебиана это так). Дальше применение такое: нажимаем и держим ALT, нажимаем SysRq, отпускаем всё и нажимаем одну из "командных" клавиш - ниже их краткое описание.


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

    Одновременное нажатие клавиш Alt + SysRq +

    'H'elp - выводит все доступные возможности SysRq, выделяя большой буквой клавишу действия;

    loglevel'0'-'8' - позволяет менять уровень подробности вывода от 0 (только критические сообщения) до 8 (самый подробный режим);

    re'B'oot - немедленная перезагрузка системы, прямо как клавиша RESET (без синхронизации и размонтирования файловых систем);

    'C'rashdump - выполняет директиву kexec для перезагрузки, чтобы получить сведения об ошибках;

    hol'D's - показывает все блокировки, которые держат устройства или файлы;

    power'O'ff - корректно выключает систему (если настроено и поддерживается, обычно это прямая команда отключения);

    'S'ync - пытается синхронизировать все примонтированные файловые системы, при этом пишет в консоли "Emergency Remount R/O" - когда этот процесс закончится, должно написать "Emergency Remount Complete";

    'U'nmount - пытается перемонтировать все примонтированные файловые системы в режим "только-чтение";

    show'T'asks - выдаст список текущих задач и информацию о них в текущую консоль;

    'N'ice - используется для того, чтобы сделать задачи реального времени с изменяемым приоритетом;

    sho'W'-blocked-tasks - выдаст список всех непрерываемых (заблокированных, ждущих окончание ввода-вывода) задач;

    show'M'em - выдаст информацию о доступной и занятой оперативной памяти, а так же степени использования своп-файла;

    'F'ull - вызвать oom_kill (out-of-memory kill) для прерывания приложений, забравших слишком много памяти (может занять продолжительное время);

    secure acces 'K'ey - убивает все программы на текущей консоли, но не применяйте её на консоли, где запущены иксы (графический сервер будет остановлен и вы не сможете увидеть то, что печатаете и то, что ответит SysRq);

    un'R'aw - забирает контроль над мышью и клавиатурой у Х-сервера, что полезно, если Х-севрвер завис: так можно перейти в консоль, убить Х-сервер или проверить логи;

    t'E'rm - послать сигнал завершения работы SIGTERM всем процессам, кроме init.

    K'I'LL - послать сигнал немедленного завершения работы SIGKILL всем процессам, кроме init.


    То есть, например, для аварийной синхронизации данных жмём ALT+SysRq + s, далее ALT+SysRq + u и после этого можно жать на ресет или, что тоже самое ALT+SysRq+b

    Ссылки
    Помимо документации к ядру, можно почитать об этом тут и здесь.

    Как сделать бекап при помощи dd: используем dd для backup

    Еще одна статейка из хорошего блога.

    Оригинал взят ОТСЮДА.

    Для того, чтобы сделать backup (бэкап, резервная копия) винчестера для последующего восстановления вовсе не нужны коммерческие, проприетарные утилиты - есть старый, как мир, dd. С помощью dd очень удобно и просто делать бекапы, и всё, что нужно сделать - просто правильно его использовать.


    Эпиграф
    Только зануды делают резервные копии:
    настоящие мужчины просто
    закачивают все важное на ftp,
    позволяя остальным отзеркалировать это.
    Линус Торвальдс



    Утилита dd есть в любом дистрибутиве, и даже в Knoppix, который можно использовать для восстановления данных, и вам не потребуются разные платные примочки типа Paragon backup или Symantec backup. То есть с помощью dd можно делать backup системы, в том числе backup сервера. Для этого так же потребуется любой архиватор, в данном примере это gzip. Приведён вариант с архивированием на другую машину по сети с использованием SSH или netcat.


    1. Приготовления

    Загружаемся с любого LiveCD диска с Linux / BSD, залогиниваемся под root-аккаунтом.
    Убеждаемся, написав в консоли df, что ни один из тех разделов, что мы собираемся копировать, не примонтирована на запись. Решаем, куда будем архивировать данные: это может быть другой раздел на винчестере, внешний жёсткий диск или по сети.


    2. Создаём резервную копию

    В данном примере /dev/hda это винчестер, который архивируем, а /dev/sda1 - это раздел внешнего винчестера или другая партиция, на которую архивируем, hda.img.gz - получившийся сжатый файл-образ.

    2.1 Внешний винчестер или другой раздел диска

    Монтируем устройство, куда мы будем архивировать данные
    # mount -t vfat /dev/sda1 /mnt/sda1
    Перегоняем данные с одного винчестера на другой. Так как данных много, полезно их сжать - и никс-системы позволяют это делать "на лету". В примере использван GZip, но подойдёт и любой другой (например, bzip2 или p7zip).
    Для этого:
    # dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.img.gz
    Здесь происходит архивирование с одновременным сжатием, результат чего записывается в файл hda.img.gz
    Параметр "conv=sync,noerror" указывает dd не читать блок, если при этом происходит ошибка, но записать в архивируемый файл-образ данные, чтобы размер блока не менялся.
    Параметр "bs=64K" это размер блока в килобайтах - использование такого большого размера блока ускоряет процесс копирования. Параметр bs можно сделать ещё больше, а именно равным размеру кеша копируемого диска (например bs=8m), это сильно ускорит весь процесс.
    Выходной поток передаётся по конвейеру для сжатия gzip, результат выводится в файл на другом диске.

    2.2 Удалённо по сети
    Всё то же самое, что в п.2.1, но с добавлением в конвейер SSH:
    # dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c | ssh -c blowfish user@hostname "dd of=hda.img.gz bs=64k"
    Архивный файл появится в домашней директории пользователя user на машине hostname. Если сеть маленькая, лучше вместо hostname использовать просто ip-адрес. Опция -c blowfish заставляет SSH выбрать алгоритм шифрования Blowfish, который быстрее остальных шифрует данные.

    Вариант с netcat, если данные копируются по локальной сети и шифрование не нужно:
    # dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c | nc 192.168.1.1 3333
    На удалённой машине должен быть запущен netcat:
    # nc -l -p 3333 > hda.img.gz
    Вариант с SAMBA, если копирование производится на оффтопичную машину: примонтировать удалённо сетевой ресурс
    smbmount //192.168.1.100/shared /mnt/remoteshare -o username=имяпользователя,password=пароль
    и далее всё то же, что и в п.2.1.



    3. Восстанавливаем данные из бекапа
    Пример тот же: /dev/hda это винчестер, который архивируем, hda.img.gz - архивный сжатый файл-образ, а /dev/sda1 - это раздел внешнего винчестера или другая партиция, с которого восстанавливаем данные.

    3.1 Внешний винчестер или другой раздел диска

    Копируем и распаковываем файл-образ одновременно:
    # gzip -x /mnt/sda1/hda.img.gz | dd of=/dev/hda conv=sync,noerror bs=64K
    Все параметры в п.2 уже объяснены.


    3.2 Удалённо по сети
    Сетевой вариант с восстановлением из файл-образа:

    dd if=hda.img.gz | ssh -c blowfish user@deadhost "gunzip -c | dd of=/dev/hda1 bs=64k"

    Следует помнить, что в данном случае не следует использовать опцию conv=sync,noerror в опциях dd - если вы всё-таки включите эту опцию, в большинстве случаев это исказит записываемые данные (это заставляет dd не дожидаться данных, приходящих по сети, если целый блок недоступен).


    Ссылки
    Этот пост является переводом этой замечательной статьи, дополненной и расширенной этой и этой статьями. Так же это применимо к утилитам восстановления данных, описанных здесь.

    Швейцарский нож для сетей - netcat

    Уж очень мне понравился один блог. Парочка статей от туда. Авось и пригодится когданибудь.

    Оригинал статьи взят ОТСЮДА!!!

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


    Утилита netcat (или nc) должна быть в любом дистрибутиве, и даже в Knoppix она тоже есть. Если вдруг её нет, установка netcat проблем не составляет:

    apt-get install netcat
    Работать с ней очень просто, и на примере далее я покажу, как легко и просто передавать файлы при помощи nc. Идея netcat очень проста: он просто перенаправляет поток данных в порт сетевого устройства, а на другом конце поток перенаправляется в файл. Отсюда и название: NETcat - тот же cat, но сетевой. При передаче файлов следует первым запускать nc на сервере (куда будут передаваться данные), а потом уже с клиента (откуда передаются данные) пересылать файлы.


    На стороне сервера (куда передаём данные):
    Нужно запустить netcat так, чтобы он слушал определённый порт, и перенаправлял получаемый поток в файл. Вот так:
    nc -l -p 3333 > file.txt
    Это откроет на прослушивание порт 3333, и сохранит полученные данные в файл file.txt в текущем каталоге. При этом программа не вернёт управление консоли, и будет ждать, пока вы вручную завершите её.


    На стороне клиента (откуда передаются данные):
    Для этого передаём по конвейеру файл nc так:
    cat file.txt | nc 192.168.1.1 3333
    Это передаст файл file.txt на машину с IP-адресом 192.168.1.1, где уже запущен nc, слушающий порт 3333.

    А кроме того
    Можно с помощью nc устроить чат с пользователем на другой машине. Со стороны клиента просто пишете
    nc 192.168.1.1 3333
    и на том конце будет видно всё, что вы печатаете, в том числе кириллицу.


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

    Эффективная конвертация растра в EPS или PDF

    Только что остро стал вопрос о конвертации .bmp (.jpg etc) в .pdf занялся поиском и наткнулся (практически сразу) на хорошую статью.

    Оригинал статьи ТУТ!!!

    Чтобы использовать растровое изображение в документе LaTeX есть два пути: пользоваться PDFLaTeX, позволяющим включать изображения форматов PNG и JPEG непосредственно, или конвертировать растровые изображения в EPS, а потом работать с ними как обычно. Необходимость конвертировать растр в EPS возникает и при желании использовать другие средства вёрстки и векторные графические редакторы.


    К сожалению, обычный способ конвертации с помощью ImageMagick (convert) или распространённых графических редакторов даёт EPS файлы довольно большого размера. Есть программы, которые делают эту работу лучше.

    Одна из них — sam2p — есть в репозиториях Debian, и полученные с помощью её EPS файлы действительно довольно маленькие.

    Для конвертации в EPS команда будет выглядеть примерно так:

    $ sam2p image.png EPS: image.eps


    Соответственно для конвертации в PDF:
    $ sam2p image.png PDF: image.pdf


    Среди полезных опций программы sam2p есть выбор версии PostScript, разрешения получаемого файла (в dpi) и алгоритма сжатия (LZW, ZIP, RLE, FAX, DCT, JPEG).

    Вот, к примеру, результат конвертирования скриншота программы Google Earth с помощью sam2p и с помощью ImageMagick:
    $ ls -rSsk1 google-earth-screenshot*
    1756 google-earth-screenshot.png
    3016 google-earth-screenshot-(sam2p).eps
    4304 google-earth-screenshot-(convert).eps

    EPS, конечно, получился больше, чем PNG (кто бы удивилялся). Интереснее сравнить полученные EPS между собой. В данном случае разница в 1,5 раза. Может показаться, что это не существенно, но если таких изображений много, то накопится прилично. А если изображения попроще, чем спутниковые фотоснимки, разница более заметна.

    Например, вот такая картинка в формате PNG:


    И вот такие результаты конвертации в EPS:
    $ ls -rSs1k pooh-pooh*
    84 pooh-pooh.png
    156 pooh-pooh-(sam2p).eps
    872 pooh-pooh-(convert).eps

    Разница между convert и sam2p в 5,5 раз, в пользу последнего!

    Есть ещё на CTAN пакет bmeps, который, по слухам, тоже неплохо справляется с задачей конвертации растра в EPS — но его я пока не пробовал.

    Ссылки по теме:
    страница sam2p
    страница bmeps

    четверг, 11 сентября 2008 г.

    FTP сервер на базе VSFTPD и MySQL

    непомню уже откуда статья но я устанавливал по ней немного подправив под свои нужды

    Установка виртуального хоста с использованием vsftpd и MySQL в Debian etch

    Обычно Vsftpd устанавливается и конфигурируется под пользователей зарегистрированных в системе. В этом руководстве предполагается установка vsftpd сервера под виртуальных пользователей, зарегистрированных в MySQL базе данных, взамен реальных системных пользователей.
    Такое решение позволяет открыть и управлять до тысячи ftp пользователей на одном сервере.
    Управлять MySQL базой вы можете с помощью пакета phpMyAdmin.
    Он имеет достаточно удобный графический интерфейс, который позволяет не применять коммандную строку.

    1 Введение

    Использовался дистрибутив Debian etch

    Все пакеты взяты из штатных репозитариев.

    Отмечу, что как всегда я отрабатывал это руководство на локальном сервере, т.е. имя хоста localhost, web сервер- http://localhost или IP адрес 127.0.0.1. Вы можете применить свои установки, в т. ч. и реальные.

    2 Установка vsftpd, MySQL и phpMyAdmin

    Vsftpd собран без поддержки MySQL, по этой причине неоходимо установить пакет libpam-mysql для PAM аутентификации в MySQL базе данных. таким образом мы должны установить следующие пакеты libpam-mysql совместно с vsftpd, MySQL, и пакет phpMyAdmin:

    Код:
    apt-get install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin

    Назначить пароль для пользователя root для управления MySQL (замените слово yourrootsqlpassword на ваш настоящий пароль):

    Код:
    mysqladmin -u root password yourrootsqlpassword

    проверим все ли получилось?

    Код:
    netstat -tap | grep mysql
    xtq-nsf
    должно написать:

    Код:
    tcp        0      0 localhost.localdo:mysql *:*                     LISTEN     2713/mysqld

    Это если у вас имя хоста только локальное localhost.localdomain, в противном случае вы увидите что-то типа:

    Код:
    tcp        0      0 *:mysql *:*                     LISTEN     2713/mysqld

    Для смены пароля вашей базы данных MySQL под ваш hostname, примените следующую комманду:
    Код:
    mysqladmin -h server1.example.com -u root password yourrootsqlpassword

    3 Создаем в терминале суперпользователя MySQL базу данных под vsftpd

    Код:
    mysql -u root -p
    в появившемся окне выполняем следующие команды (т.е. находясь в командной оболочке MySQL создадим базу):
    Их можно скопировать выделить и затем вставить, нажав среднюю кновку мыши.

    Код:
    CREATE DATABASE vsftpd;
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
    FLUSH PRIVILEGES;

    Далее таблицу для этой базы:

    Код:
    USE vsftpd;

    Код:
    CREATE TABLE `accounts` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `username` VARCHAR( 30 ) NOT NULL ,
    `pass` VARCHAR( 50 ) NOT NULL ,
    UNIQUE (
    `username`
    )
    ) ENGINE = MYISAM ;
    выходим из оболочки:
    Код:
    quit;

    Т. .е. последняя команда (quit), позволит выйти из командной оболочки MySQL.

    Запустив в браузере ссылку- http://localhost/phpmyadmin/ (или ваш- например: server1.example.com, или можно вставить IP адрес вашего сервера) вы попадете в утилиту phpmyadmin.
    С помощью этой утилиты вы можете создать или изменить эту же базу данных (vsftpd), и тут же просмотреть её.
    Позже с помощью неё вы сможете управлять вашим vsftpd сервером.

    4 Конфигурируем vsftpd

    В начале создаем непривилегированного пользователя vsftpd (с домашней директорией: /home/vsftpd) входящего в группу: nogroup. Домашние директории виртуальных пользователей, в дальнешем будут расположены в этой /home/vsftpd директории (например: /home/vsftpd/user1, /home/vsftpd/user2, и т.д.).

    Код:
    useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

    Сохраняем оригинальный /etc/vsftpd.conf файл и создаем другой:

    Код:
    cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
    cat /dev/null > /etc/vsftpd.conf
    gedit /etc/vsftpd.conf

    Вставляем в открывшееся окно следующий текст:

    Код:
    listen=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    nopriv_user=vsftpd
    chroot_local_user=YES
    secure_chroot_dir=/var/run/vsftpd
    pam_service_name=vsftpd
    rsa_cert_file=/etc/ssl/certs/vsftpd.pem
    guest_enable=YES
    guest_username=vsftpd
    local_root=/home/vsftpd/$USER
    user_sub_token=$USER
    virtual_use_local_privs=YES
    user_config_dir=/etc/vsftpd_user_conf
    сохраняем созданный файл.

    Посмотреть примеры можно по адресу: http://vsftpd.beasts.org/vsftpd_conf.html.


    Для использования в дальнейшем опций: user_config_dir, создадим вновь специальную директорию:

    Код:
    mkdir /etc/vsftpd_user_conf

    Так же должны сконфигурировать PAM для ваших виртуальных FTP пользователей с аутентификацией в MySQL базе данных вместо расположения в /etc/passwd и /etc/shadow. Конфигурационный файл для PAM под vsftpd должен находится в папке /etc/pam.d/vsftpd. Сохраняем оригинальный и создаем новый:

    Код:
    cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
    cat /dev/null > /etc/pam.d/vsftpd
    gedit /etc/pam.d/vsftpd

    Вставляем в открывшееся окно следующий текст:

    Код:
    auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
    account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2

    Сохраняем этот файл.

    Помните теперь что вы единственный, кто может восстановить ваш MySQL пароль !

    Перезапустим наш vsftpd сервер:

    Код:
    /etc/init.d/vsftpd restart

    5 Создаем первого виртуального пользователя

    Заходим опять под root в оболочку MySQL :

    Код:
    mysql -u root -p

    Пишем или копируем команду:

    Код:
    USE vsftpd;

    Создаем пользователяпод именем: testuser и паролем secret:

    Код:
    INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret')); quit;

    Домашняя директория testuser'а будет здесь /home/vsftpd/testuser.
    Если она не создалась автоматически, создадим эту директорию вручную в группе: nogroup:

    Код:
    mkdir /home/vsftpd/testuser
    chown vsftpd:nogroup /home/vsftpd/testuser

    Теперь через любой FTP клиент для Linux или Windows, или используя просто браузер, вы можете соединится c вновь созданным сервером, используя имя testuser и пароль secret.

    По той же схеме можно создать и остальных пользователей.

    6 Управление базой данных

    Используя пакет phpMyAdmin, для запуска которого нужно набрать в вашем браузере, примерно вот такую команду:
    http://server1.example.com/phpmyadmin/

    Используя эту утилиту вы можете администрировать vsftpd базу данных.



    В этих же целях можно использовать и пакет Webmin.

    Используя эти пакеты вы сможете редактировать, добавлять и удалять ваших FTP пользователей и их пароли и т.д.

    7 Ссылки

    http://vsftpd.beasts.org
    http://howtoforge.com/vsftpd_mysql_debian_etch

    Устанавливаем qip


    скачаем с оф. сайтаоследнюю версию QiP,
    Устанавливаем wine и winbind, устанавливаем его
    apt-get install wine winbind
    (есстественно от рута)
    от пользователя запускаем конфигурацию wine'a
    winecfg
    на вкладке "Приложения" внизу выбираем версию windows XP (можно и 2000)
    на вкладке "Графика" ставим галку "Разрешить менеджеру окон управлять окнами wine"
    Затем устанавливаем qip
    wine ~username/path_to_qip/qip8070.exe
    добавляем кнопку запуска QiP на рабочий стол (если она не добавилась автоматически), заходим в свойства этой кнопки и добавляем в команду запуска
    /oldgif
    т.е. полная строка будет выглядеть следующим образом:
    env WINEPREFIX="/home/user/.wine" wine "C:\Program Files\QIP\qip.exe" /oldgif
    Все готово, пускаем и наслаждаемся привычным QiP, но уже в линуксе

    четверг, 17 июля 2008 г.

    Создать ISO образ в linux? - Легко!

    genisoimage -o name_obraza.iso name_kataloga
    чтоб примонтировать iso образ:
    mount -t iso9660 -o loop имя_iso_файла /точка/монтирования
    Еще чтобы создать iso из cd:
    dd if=/dev/cdrom of=/mnt/.../my.iso bs=2048
    где /mnt/.../my.iso путь куда будет сделан образ. loopback устройства в ядре должны быть включены...

    еще чтобы создать iso из cd (dvd) команда:

    cp /dev/cdrom /mnt/.../my.iso

    где /mnt/.../my.iso путь куда будет сделан образ.

    понедельник, 14 июля 2008 г.

    Собираем ядро в Debian

    Этя статья была переведена мной лично (оригинал статьи взят от сюда)
    ---
    ---
    Рассмотрим вариант как собрать ядро получив в конечном итоге .deb пакет который можно будет установить в систему либо поделится с друзьями :)


    --Установка требуемых пакетов для компиляции ядра--

    -----------------------

    Для начала обновим базу данных пакетов

    ----------
    apt-get update
    ----------

    Затем устанавливаем все нужные нам пакеты
    ----------
    apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
    ----------


    --Получение исходников ядра--

    Затем нам требуестья скачать тебуемое нам ядро в /usr/src/
    переходим на
    www.kernel.org и выбираем ядро которое мы хотим установить
    например linux-2.6.21.3.tar.bz2 (вы можете найти все 2.6 ядра здесь http: // www.kernel.org/pub/linux/kernel/v2.6/) и переходим непосредственно к скачиванию ядра
    ----------
    cd /usr/src
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2
    ----------

    Затем распаковываем ядро и создаём симлинк на директорию с исходниками ядра
    ----------
    tar xjf linux-2.6.21.3.tar.bz2
    ln -s linux-2.6.21.3 linux
    cd /usr/src/linux
    ----------


    --Накладываем патчи на исходники (опционально)--

    Иногда вам требуются драйвера для оборудования которые не поддерживаются ядром по умолчанию, либо вам требуется поддержка виртуализации, либо еще чего-нибудь что так или иначе небыло включено в ядро по умолчанию. Для всего этого вап понадобится наложить патчи на исходники ядра (если таковые патчи имеются).
    Предположим что вы загрузили требуемый вам патч (назовем его для примера patch.bz2) в /usr/src
    теперь давайте наложим патч на наши исходники ядра (вы должны находится в директории /usr/src/linux)
    ----------
    bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch.bz2 | patch -p1
    ----------

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

    You can also apply kernel prepatches to your kernel sources. For example, if you need a feature that is available only in kernel 2.6.22-rc3, but the full sources haven't been released yet for this kernel. Instead, a patch-2.6.22-rc3.bz2 is available. You can apply that patch to the 2.6.21 kernel sources, but not to kernel 2.6.21.1 or 2.6.21.2, etc. This is explained on http://kernel.org/patchtypes/pre.html:

    Prepatches are the equivalent to alpha releases for Linux; they live in the testing directories in the archives. They should be applied using the patch(1) utility to the source code of the previous full release with a 3-part version number (for example, the 2.6.12-rc4 prepatch should be applied to the 2.6.11 kernel sources, not, for example, 2.6.11.10.)

    So if you want to compile a 2.6.22-rc3 kernel, you must download the 2.6.21 kernel sources (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2) in step 3 instead of kernel 2.6.21.3!

    This is how you apply the 2.6.22-rc3 patch to kernel 2.6.21:

    ----------

    cd /usr/src
    wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.22-rc3.bz2
    cd /usr/src/linux
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1

    ----------

    --Конфигурируем ядро--

    Неплохая идея использовать конфигурацию вашего текущего ядра как основу вашего нового ядра.
    Для этого мы копируем текущую конфигурацию в
    /usr/src/linux
    :
    ----------
    make clean && make mrproper
    cp /boot/config-`uname -r` ./.config
    ----------

    Затем запускаем
    ----------
    make menuconfig
    ----------

    что запустит конфигурационное меню ядра. Переходим в Load an Alternate Configuration File (загрузить альтернативный файл конфигурации) и выбираем .config (который содержит конфигурацию вашего текущего рабочего ядра) как конфигурационный файл.

    Затем можете переходить в меню конфигурирования ядра и делать свои изменения. Когда вы закончите и выбирете Exit ответьте на вопрос (Do you wish to save your new kernel configuration?) да (YES).

    -- Сборка ядра --

    Чтобы собрать ядро выполните две команды
    ----------
    make-kpkg clean
    fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
    ----------


    После --append-to-version= вы можете написать любую строку которая поможет вам идентифицировать ваше ядро, но она должна начинатся с минуса (-) и недолжна содержать пробелов.
    Теперь будте терпеливы сборка ядра процесс продолжителный и может продолжатся несколько часов. в зависимости от конфигурации ядра и скорости процессора.

    --Установка нового ядра--

    После того как ваше ядро удачно соберется вы найдете два пакета .deb в директории /usr/src
    ----------
    cd /usr/src
    ls -l
    ----------

    На моей тестовой системе были следующие файлы
    linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb (Который содержит актуальное ядро) и linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb (который содержит файлы которые вам понадобятся если вы захотите собрать дополнительные ядерные модули позже) устанавливаем их:
    ----------
    dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
    dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
    ----------

    (Вы можете скопировать эти файлы на другую Debian систему и установить их там таким-же способом чтобы не собирать ядро заново)

    Вот и все ! :)
    Конфигурационный файл загрузчика GRUB будет изменен автоматически, и рамдиск для нового ядра будет создан в /boot
    теперь перегружаем систему
    ----------
    shutdown -r now
    ----------

    В загрузочном меню выбирайте ваше новое ядро (будет выбрано по умолчанию):
    Если все нормально и вы загрузились в ваше новое ядро, надо проверить, действительно ли вы используете новое ядро
    ----------
    uname -r
    ----------

    должно появится чтото вроде..
    2.6.21.3-custom

    Если система не стартует - перегружайтесь и выбирайте в меню загрузки ваше старое ядро. Пробуйте пересобрать ядро снова но незабудте удалить строки о вашем не работающем ядре из /boot/grub/menu.lst.

    среда, 9 июля 2008 г.

    Это страшное слово ЯДРО

    в принципе-то ничего страшного в этом нету
    если в кратце то ...
    сначала конфигурим
    #cd /usr/src/linux-you_kernelversion/
    #make menuconfig
    если мы накатываем новую версию ядра то можно сделать так...
    Сначала сопируем файл .config из нашего текущего ядра в новое ядро которое мы собрались компилить
    #cp /usr/src/linux-you_OLD_kernelversion/.config /usr/src/linux-you_NEW_kernelversion/
    потом
    #make oldconfig
    при такой команде в процессе настройки ядра компилятор будет останавливаться ТОЛЬКО на тех функциях
    которые включены в новое ядро и которых небыло в старом
    !! ATTENTION !! при таком варрианте компиляция будет проходить в ТЕКСТОВОМ режиме
    потом ставим
    #make && make modules_install
    потом
    #mount /boot/ && cp .config /boot/config && cp System.map /boot/System.map && cp arch/i386/boot/bzImage /boot/gentoo && lilo && umount /boot/
    !! mount и umount делать ТОЛЬКО в том случае если /boot находится на отдельном разделе и примонтируется/отмонтируется при загрузге системы
    потом незабываем лилошку пересобрать
    #lilo

    Монтируем дискии образы CD

    !! Внимание!!! По умолчанию монтировать ресурсы может только root

    для монтирования NTFS-ного диска\раздела с правами на чтение всем пользователям надо сделать следующее
    mount -t ntfs -o uid=1000,gid=100,umask=000 /dev/sdb1 /where/mount/
    для автоматического монтирования ресурса надо в /etc/fstab прописать следующую строку
    /dev/sdb1 /home/qtronix/mount/ ntfs uid=1000,gid=100,umask=000 0 2
    !!!ВНИМАНИЕ!!! NTFS монтируется в режиме только для чтения !!! если желаете монтировать ее в режиме записи то следуетзнать следующее
    Запись в ядре есть для NTFSv4 (Win2k), а чтение для v4 и v5 (2k, XP, Vista, 2000, 2003)
    если хотим запись тогда надо накатить sys-fs/ntfs3g
    да и для удобства sys-fs/ntfsprogs не помешает

    для монтирования сетевого ресурса
    #mount -t smbfs -o username=you_username,password=you_password,workgroup=domain_or_workgroup //hostname/sharename /where/mount/
    параметр password можно опустить тогда при монтировании ресурса mount сама спросит у вас пароль что в принципе является более правильным
    с точки зрения безопастности
    для автоматического монтирования сетевого ресурса у меня в fstab'е прописанна следующая строка
    //server/share_name /home/ftp cifs codepage=cp866,username=qtronix,workgroup=my_workgroup,password=my_password,users,user,auto 0 0


    для монтирования ISO-шных образов делаем
    #mount -o loop /where/my/image.iso /where/mount/

    Чуток про SSH и иже с ним

    для ssh соеденения делаем так
    #ssh -p portnumber user@hostname
    напримет
    #ssh -p 22 root@192.168.1.7

    для копирования файлов через ssh делаем так
    #scp -P portnumber user@hostname:/your_dir/your_filename /where/copy/your/files
    или с удаленного хоста на удаленный хост
    #scp user@hostname:/your_dir/your_filename user@hostname:/your_dir/your_filename
    !!! ATENTION !!!
    копирование файлов с удаленного хоста на удаленный хост работает ТОЛЬКО если на обоих хостах ssh настроен на стандартный 22 порт

    Автостарт в KDE

    Для автозапуска програм в KDE нада добавить их в ~/.kde/Autostart/

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

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

    Это рекомендованный способ.
    Во многих системахиспользуется файл ~/.Xkbmap для личных настроек.
    например с таким содержимым:
    -------------------------------------------------------------------------------------------------------------------
    -layout en_US,ru(winkeys)
    -option -option grp:ctrl_shift_toggle,grp_led:scroll
    -------------------------------------------------------------------------------------------------------------------

    Другие популярные клавиши для переключения: caps_toggle, alt_shift_toggle

    В этом случае секция в xorg.conf будет выглядеть проще:

    -------------------------------------------------------------------------------------------------------------------
    Section "InputDevice"
    Identifier "Keyboard0"
    Driver "kbd"
    Option "XkbModel" "pc105"
    Option "XkbLayout" "en_US"
    EndSection
    -------------------------------------------------------------------------------------------------------------------

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

    И ещё, удобно использовать именно en_US вместо us, т.к. это более полная раскладка.

    Основные проблемы

    • Переключение происходит при нажатии, а не при отжатии установленной комбинации клавиш
    • Если для переключения раскладки задействована клавиша Shift, то ещё нужно отпускать и нажимать ещё раз, чтобы она сработала при вводе заглавной буквы
    • Нет однозначной взаимосвязи раскладки с языком -> приложение не может понять, на каком языке осуществляется ввод
    • Клавиши переключения и комбинации раскладок, которые можно выбрать в Иксах, не всегда пересекаются с консолью.
    • Способ переключения раскладки в Иксах не совпадает/конфликтует со способом переключения в менеджере окон (напр. KDE) – в KDE настройка идёт через XKB, но настраивается только данный сеанс через setxkbmap).

    * Консольный (текстовый) режим и графический (Иксы) имеют независимые механизмы обработки клавиатурных событий: свои раскладки, клавиши переключения и пр.

    вторник, 8 июля 2008 г.

    Немного про MySQL

    И так начнем с последнего
    а потом я буду добовлять суда свои уже наработанные материалы (некоторые из них взяты с разных сайтов поэтому сразу же хочу попросить прощетия у тех с чьих стониц это было скрадено).
    Итак...
    Q> как в MySQL посмотреть все имеющиеся базы данных и все привелегии поним ??
    A> Наиболее удобно это делать через mysql-administrator. Подаётся как отдельно, так и в виде цельного блюда с названием mysql-gui-tools. В ресторане по адресу mysql.org кормят бесплатно.
    Q>Где в мускуле покрутить шоп с удаленных хостов можно было заходить ?? Я вроде как пользователя добавил, дал ему разрешение с удаленных хостов логинится, а порты-то на ружу не торчат?? :(
    A> Мускул не может смотреть сразу и на 127.0.0.1 и на внешний IP. Чтоб это разрелизить надо юзать редиректы фаэрвола (сам недавно имел cекас на этой раскривушке). Куда он будет глядеть по дефолту рисуется в параметре bind-address в файле /etc/mysql/my.cnf Если в параметре указать несколько адресов через пробел - юзается первый, если через другой разделитель то ашипко :( , Если несколько параметров bind-address в файле то юзается последний.

    туби как говорится континуед !!

    Начало

    Ну вот и я обзавелся блогом :)
    В этом блоге я буду публиковать ответы на вопросы которые вызывали у меня некоторые затруднения и могут быть полезны другим пользователям.
    Но скорее это будет некоей записной книжкой моих нароботок которые мне потом могут пригодится (ну неможет-же человек помнить все).
    Так как я начинающий Linux'оид то скорее всего некоторые записи будут иметь вид
    мой вопрос>
    ответ гуру>
    вроде как некий фак или чаво.
    ну вобщем начнем....