Настройка ivman (Еще одна статья на наболевшую тему :))

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Настройка ivman

Сообщение Bluetooth »

Ну или не совсем статья, а пока только зачаток, но тем не менее:

Став использовать вместо kde ion3, в очередной раз столкнулся с проблемой автомонтирования :)
Ну, полез в гугл, попробовал несколько решений, самое лучшее решение(потому что самое быстрое и простое :) ) - это ivman
Запустил - и автомонтирование заработало как в kde. Был доволен как слон. Но то было автомонтирование cd и dvd дисков.
Сегодня, включив в комп флешку(да, я редко юзаю флешки :) ) был неприятно удивлен такой деталью, что флешка смонтировалась с umask = 022, и принадлежащая руту. Соответственно, запись была достуна только из-под рута. Что меня ни разу не устраивало.
"НУ, тут все просто - надо всего лишь залезть и поправить конфиг ivman" - подумал я. но оказалось все не так просто.
Варианты с записью в fstab я отбросил сразу - неудобно. В манах по ivman инфы по заданию опций для разных ФС я не нашел. Стал мучить гугль, из интересных вещей нашел только это:
http://www.freesource.info/wiki/AltLinux/S...show_comments=1
Там вроде то, что мне нужно, но вот только я не нашел, что такое этот subfs.
Пришлось включить мозг.
Стал ковырять конфигурационные файлы, ну и наковырял успешно.
Короче говоря, вот мое решение для монтирования флешек на fat и ntfs:
файл IvmConfigActions.xml (находится либо в ~/.ivman(запуск от пользователя), либо в /etc/ivman, проверено и там и там(ибо решение разрабатывалось, запуская ivman с ключем -d, а вообще я юзаю сервис)
вот его содержимое:

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<ivm:ActionsConfig version="0.2" xmlns:ivm="http://www.eikke.com/ivm">
    <!-- Read the IvmConfigActions.xml man page for details on how to edit this file. -->

    <ivm:Option name="checkOnInit" value="true" />

    <!-- mount everything we can -->
 <ivm:Match name="ivm.mountable" value="true">
        <ivm:Option name="mount" value="true" />
    </ivm:Match>

<!-- NTFS -->

<ivm:Match name="hal.volume.fstype" value="ntfs">
                <ivm:Option name="exec" value="halmount '$hal.block.device$' -o locale=ru_RU.UTF-8" />
        <ivm:Option name="mount" value="false" />
    </ivm:Match>

<!-- FAT -->

    <ivm:Match name="hal.volume.fstype" value="vfat">
                <ivm:Option name="exec" value="halmount '$hal.block.device$' -o umask=0,iocharset=utf8" />
        <ivm:Option name="mount" value="false" />
    </ivm:Match>

</ivm:ActionsConfig>


после этого у меня ФАТ стал монтироваться с нужными мне правами и без кракозябр. УРА! :)
Но вот НТФС я проверить не могу. Ибо флешками вообще не балуюсь, да и сейчас я эту всю кашу затеял ради копирования одного файла))
Поэтому я бы очень хотел, чтобы другие пользователи ivman не прошли мимо, а попробовали мое решение, если они озаботились такой же проблемой(особенно НТФС - есть большие подозрения, что в таком виде работать это не будет, надо, я думаю, добавить -t ntfs-3g, но у меня для нтфс уже реализовано другое решение(не факт, что и оно работать будет :crazy: ), да и проверить не на чем(поблизости НТФС нет).

И вообще, если этот пост кому-то пригодился, то сообщите об этом - хоть буду думать, что не зря потратил еще 20 минут на печать этого поста.

UPD. Проверил работу с ntfs, внес коррективы(см. пост № 4)
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: Настройка ivman

Сообщение uptime »

Я тут тоже на днях его ставил, под xmonad. Были те-же проблемы, но решение (не помню где вычитал) было такое: кроме iwman, запускаемого системой от рута, надо запускать ещё одну копию от пользователя. Тогда монтировать будет именно она и пользователь будет иметь права на запись и на размонтирование устройства.
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Настройка ivman

Сообщение Bluetooth »

uptime писал(а):
01.04.2009 00:31
Я тут тоже на днях его ставил, под xmonad. Были те-же проблемы, но решение (не помню где вычитал) было такое: кроме iwman, запускаемого системой от рута, надо запускать ещё одну копию от пользователя. Тогда монтировать будет именно она и пользователь будет иметь права на запись и на размонтирование устройства.

Точно, я про этот момент забыл - не понравилось мне юзать его от пользователя(честно говоря, я не понял зачем запускать две)
причины - конфликты, если пользователей несколько, плюс еще не открывался сидиром, пока я его ручками не отмонтировал(побороть не удалось).
и к тому же это снимает проблему с правами(и то ,если нужны права 700, а если другие - то не сснимает), и не снимает никакие другие проблемы, которые имеют место быть(а именно кракозябры)
Мое же решение, как мне сейчас кажется, предоставляет решение проблемы задания параметров автомонтирования в целом)
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Настройка ivman

Сообщение Bluetooth »

Несмотря на Отсутствие интереса у публики к данной теме(оно, в принципе, и не удивительно), все равно решил опубликовать поправки к инструкции в первом посте.
У меня наконец объявился съемный носитель с нтфс :)
Его монтировать ivman в конфигурации, приведенной в первом посте, монтировать не хотел, по двум причинам:
1. неправильно напечатал слово ntfs :)
2. halmount с опцией force(которая позволяет монтировать неправильно отмонтированные в винде разделы) работать не хотел, писал следующую ошибку:

Код: Выделить всё

Bluetooth@DIMM:~ > sudo halmount /dev/sdd1 -o force,locale=ru_RU.utf-8
/dev/sdd1: org.freedesktop.Hal.Device.Volume.InvalidMountOption: The option 'force' is not allowed for uid=0

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

в общем, вот рабочий вариант конфига для фат и нтфс(нтфс на работу с русскими названиями файлов не проверял по причине отсутствия оных, но память мне подсказывает, что данная опция должна работать правильно)
итак, вот конфиг /etc/ivman/IvmConfigActions.xml:

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<ivm:ActionsConfig version="0.2" xmlns:ivm="http://www.eikke.com/ivm">
    <!-- Read the IvmConfigActions.xml man page for details on how to edit this file. -->

    <ivm:Option name="checkOnInit" value="true" />

    <!-- mount everything we can -->
 <ivm:Match name="ivm.mountable" value="true">
        <ivm:Option name="mount" value="true" />
    </ivm:Match>

<!-- NTFS -->

<ivm:Match name="hal.volume.fstype" value="ntfs">
                <ivm:Option name="exec" value="halmount '$hal.block.device$' -o locale=ru_RU.UTF-8" />
        <ivm:Option name="mount" value="false" />
    </ivm:Match>

<!-- FAT -->

    <ivm:Match name="hal.volume.fstype" value="vfat">
                <ivm:Option name="exec" value="halmount '$hal.block.device$' -o umask=0,iocharset=utf8" />
        <ivm:Option name="mount" value="false" />
    </ivm:Match>

</ivm:ActionsConfig>


З.Ы. в первом посте тоже исправил, на всякий случай.
З.З.Ы. IvMan в моем представлении идеально подходит для программирования каких-то действий связанных с событиями с Любыми(ну, почти с любыми) устройствами. поэтому если кого-то это интересует - изучайте документацию к нему, дефолтные конфиги(там много интересных примеров есть), ну и можете задать мне вопросы в личку, или же в джаббер, ну или сюда.
Спасибо сказали:
Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Re: Настройка ivman

Сообщение shevan »

а почему отвергли pmount?
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Настройка ivman

Сообщение Bluetooth »

shevan писал(а):
08.05.2009 20:31
а почему отвергли pmount?

Ну, я с pmount не разбирался. в ivman по умолчанию приоритеты стоят так: halmount, pmount, mount.
и mount, если инфа есть в fstab(это если я не ошибаюсь)
Ну я и взял наиболее приоритетную утилиту.
А что, pmount лучше, чем halmount?
Спасибо сказали:
Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Re: Настройка ivman

Сообщение shevan »

я не знаю. я первый спросил :-)

вот это в мане нашел
If pmount is used, it will mount the device readable and writeable only for the current user; if no per-user instance of Ivman is running, the device will be mounted read/write for everyone in the same group as is required to use the pmount command, and read-only for everyone else.


Эх. где это было когда пользовал Icewm
Спасибо сказали:
lentay
Сообщения: 11
ОС: ALD 4.1

Re: Настройка ivman

Сообщение lentay »

У меня ivman при втыкании флэшки пишет:

Код: Выделить всё

Ошибка: /dev/sdb1 - не является съемным устройством
Ошибка: невозможно выполнить команду pmount
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Настройка ivman

Сообщение Bluetooth »

lentay писал(а):
08.05.2009 23:03
У меня ivman при втыкании флэшки пишет:

Код: Выделить всё

Ошибка: /dev/sdb1 - не является съемным устройством
Ошибка: невозможно выполнить команду pmount

А конфиг можно?)
Спасибо сказали:
lentay
Сообщения: 11
ОС: ALD 4.1

Re: Настройка ivman

Сообщение lentay »

Bluetooth писал(а):
08.05.2009 23:25
lentay писал(а):
08.05.2009 23:03
У меня ivman при втыкании флэшки пишет:

Код: Выделить всё

Ошибка: /dev/sdb1 - не является съемным устройством
Ошибка: невозможно выполнить команду pmount

А конфиг можно?)

Конфиг, пожалуйста. Полностью дефолтный из репозитория Убунту 9.04.
IvmConfigActions.xml

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<ivm:ActionsConfig version="0.2" xmlns:ivm="http://www.eikke.com/ivm">
    <!-- Read the IvmConfigActions.xml man page for details on how to edit this file. -->

    <ivm:Option name="checkOnInit" value="false" />

    <!-- mount everything we can -->
    <ivm:Match name="ivm.mountable" value="true">
        <ivm:Option name="mount" value="true" />
    </ivm:Match>

    <!-- rip CDs with audio tracks and no data tracks -->
    <!--
    <ivm:Match name="hal.volume.disc.type" value="cd_rom">
        <ivm:Match name="hal.volume.disc.has_audio" value="true">
            <ivm:Match name="hal.volume.disc.has_data" value="false">
                <ivm:Option name="exec" value="kaudiocreator" />
            </ivm:Match>
        </ivm:Match>
    </ivm:Match>
    -->

    <!-- When attaching a wireless card, if we connect to network with Nickname 'QUT-Wireless',
         start 'vpnc-connect' to connect to VPN; when we remove wireless card, disconnect
         from the VPN. Replace the 'NETID' with your own wireless network Nickname.
         As you can see, this script, being fairly big, is probably a good candidate to put into
         a separate little scriptlet. -->
    <!--
    <ivm:Match name="hal.info.category" value="net.80211">
        <ivm:Option name="exec" value="NETID=&apos;QUT-Wireless&apos;; i=0; while ! { /sbin/ifconfig $hal.net.interface$ | grep 'inet addr' &>/dev/null || [ $i -gt 45 ]; }; do sleep 1; i=`expr $i + 1`; done; ps aux | grep -v grep | grep vpnc &> /dev/null || { c=0; while ! { [ &quot;`/usr/sbin/iwconfig $hal.net.interface$ 2>&1 | sed -n -r -e 's/.*Nickname:\&quot;([^\&quot;]+)\&quot;.*/\1/ p'`&quot; = &quot;${NETID}&quot;] || [ $c -ge 10 ]; }; do sleep 1; c=`expr $c + 1`; done; [ $c -lt 10 ] && sudo vpnc-connect; }" />
        <ivm:Option name="execun" value="sudo vpnc-disconnect" />
    </ivm:Match>
   -->

    <!-- autoplay video DVDs in Xine (change PLAYER and PLAYEROPT to use a different media player -->
    <!--
    <ivm:Match name="hal.volume.disc.is_videodvd" value="true">
        <ivm:Option name="exec" value="PLAYER='xine'; PLAYEROPT='-f dvd://'; pumount '$hal.volume.mount_point$' && ${PLAYER} ${PLAYEROPT}$hal.block.device$" />
    </ivm:Match>
    -->

   <!-- ======================= KDE notifications ========================== -->
   <!-- If you would like a little box to pop-up in KDE and notify when a new
        device is detected, Windows-style, uncomment this entire block.
        Feel free to add entries for devices which aren't handled yet... -->
   <!--
   <ivm:Match name="hal.info.category" value="storage">
       <ivm:Match name="hal.storage.bus" value="usb">
           <ivm:Option name="exec" value="kdialog --passivepopup 'USB storage device detected: $hal.info.vendor$ $hal.info.product$' 4" />
       </ivm:Match>
   </ivm:Match>
   <ivm:Match name="hal.info.category" value="scanner">
       <ivm:Match name="hal.storage.bus" value="usb">
           <ivm:Option name="exec" value="kdialog --passivepopup 'USB scanner detected: $hal.info.vendor$ $hal.info.product$' 4" />
       </ivm:Match>
   </ivm:Match>
   <ivm:Match name="hal.info.category" value="printer">
        <ivm:Match name="hal.info.bus" value="usb">
           <ivm:Option name="exec" value="kdialog --passivepopup 'USB printer detected: $hal.info.vendor$ $hal.info.product$' 4" />
        </ivm:Match>
   </ivm:Match>
   -->
   <!-- ======================= end of KDE notifications =================== -->

</ivm:ActionsConfig>

Самому разбираться очень лениво, т.к. монтирование флешки уже давно прописано в alias. А если что, то есть pcmanfm. Но тем не менее, хотелось бы автомоунт :rolleyes:
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Настройка ivman

Сообщение Bluetooth »

lentay писал(а):
09.05.2009 11:51
Самому разбираться очень лениво, т.к. монтирование флешки уже давно прописано в alias. А если что, то есть pcmanfm. Но тем не менее, хотелось бы автомоунт :rolleyes:

Ага, мне тоже хотелось. хотя на деле это глупость и совершенно ненужно))
А покажите другие конфиги. просто есть одна идея
Спасибо сказали:
lentay
Сообщения: 11
ОС: ALD 4.1

Re: Настройка ivman

Сообщение lentay »

Пожалуйста )
IvmConfigBase.xml

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<ivm:BaseConfig version="0.2" xmlns:ivm="http://www.eikke.com/ivm">

    <!-- Whether or not to daemonize.  If you start Ivman automatically when
         you log on, you should probably have this equal to false so that it
         will close when you log off. -->
    <ivm:Option name="fork" value="false" />

    <!-- Whether or not to output debugging information.  Leave this as false
         unless you have problems. -->
    <ivm:Option name="debug" value="false" />

    <!-- mount command.  default is autodetected.  Must be specified with
         umountcommand. -->
    <!--
    <ivm:Option name="mountcommand" value="mount '$hal.block.device$'" />
    -->

    <!-- umount command.  default is autodetected.  Must be specified with
         mountcommand. -->
    <!--
    <ivm:Option name="umountcommand" value="umount '$hal.block.device$'" />
    -->
</ivm:BaseConfig>


IvmConfigConditions.xml

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<ivm:ConditionsConfig version="0.1" xmlns:ivm="http://www.eikke.com/ivm">

    <!-- See 'man IvmConfigConditions.xml' for info on how to edit this file. -->

</ivm:ConditionsConfig>


IvmConfigProperties.xml

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<ivm:PropertiesConfig version="0.1" xmlns:ivm="http://www.eikke.com/ivm">

    <!-- Please see 'man IvmConfigProperties.xml' for details on how to edit this file. -->

    <ivm:Option name="checkOnInit" value="false" />

    <!-- ======================= KDE notifications ========================== -->
    <!-- If you would like little notifications to pop up in KDE when interesting
         things happen on your system, uncomment this block of options. -->
    <!--
    <ivm:Match name="hal.linux.subsystem" value="net">
        <ivm:Property name="hal.net.interface_up">
            <ivm:Action value="true" exec='kdialog --passivepopup "Network connection established on interface $hal.net.interface$" 4' />
            <ivm:Action value="false" exec='kdialog --passivepopup "Network connection lost on interface $hal.net.interface$" 4' />
        </ivm:Property>
    </ivm:Match>
    -->
    <!-- ======================= end of KDE notifications =================== -->
</ivm:PropertiesConfig>
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Настройка ivman

Сообщение Bluetooth »

ну, как вариант, вы можете изменить в IvmConfigBase команду монтирования на, к примеру, halmount.
а еще как вариант - воспользоваться моим конфигом, он использует halmount и, по-идее, должен работать :)
Спасибо сказали:
lentay
Сообщения: 11
ОС: ALD 4.1

Re: Настройка ivman

Сообщение lentay »

Bluetooth
Не получается использовать Ваш конфиг, т.к. в репах Убунту нет halmount, а где скачать deb так сходу не нашел :(
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Настройка ivman

Сообщение Bluetooth »

lentay писал(а):
09.05.2009 21:06
Bluetooth
Не получается использовать Ваш конфиг, т.к. в репах Убунту нет halmount, а где скачать deb так сходу не нашел :(

Странно, у меня halmount входит в состав пакета ivman. а вы попробуйте в мой конфиг прописать вместо halmount - pmount или mount.
Кстати, а ручками через pmount - нормально монтируется?
Спасибо сказали:
lentay
Сообщения: 11
ОС: ALD 4.1

Re: Настройка ivman

Сообщение lentay »

Нашел свободный часик и решил проблему.
Дело в том, что во многих дистрибутивах в целях безопасности (имхо маразм) юзеру запрещено через pmount монтировать съемные носители, именно поэтому при использовании ivman с pmount получается следующая ошибка:

Код: Выделить всё

Ошибка: /dev/sdb1 - не является съемным устройством
Ошибка: невозможно выполнить команду pmount

Чтобы такого не происходило, нужно от рута в файле /etc/pmount.allow "разрешить" монтировать это устройство, т.е. туда его прописать, в данном случае просто добавляем в файл

Код: Выделить всё

/dev/sdb1

Ну а дальше, при возникновении проблем с ФС смотрите посты Bluetooth ;) , в Убунту проблем не возникло.
P.S. А halmount в Убунту, почему-то, все-таки отсутствует.
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Настройка ivman

Сообщение Bluetooth »

lentay писал(а):
15.05.2009 16:00
Нашел свободный часик и решил проблему.
Дело в том, что во многих дистрибутивах в целях безопасности (имхо маразм) юзеру запрещено через pmount монтировать съемные носители, именно поэтому при использовании ivman с pmount получается следующая ошибка:

Код: Выделить всё

Ошибка: /dev/sdb1 - не является съемным устройством
Ошибка: невозможно выполнить команду pmount

Чтобы такого не происходило, нужно от рута в файле /etc/pmount.allow "разрешить" монтировать это устройство, т.е. туда его прописать, в данном случае просто добавляем в файл

Код: Выделить всё

/dev/sdb1

Ну а дальше, при возникновении проблем с ФС смотрите посты Bluetooth ;) , в Убунту проблем не возникло.
P.S. А halmount в Убунту, почему-то, все-таки отсутствует.

ИМХО маразм тут не в настройках, запрещающих пользователю монтировать, а в идиостком сообщении об ошибке, которое ни о чем не говорит.

А насчет halmount - скорее всего, ivman в репе убунты собран без него
Спасибо сказали:
Аватара пользователя
ishitori
Сообщения: 502
ОС: gentoo -> archlinux

Re: Настройка ivman

Сообщение ishitori »

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

p.s. обнаружил эту тему после того, как сделал пост в гентушном разделе. хотя ему, скорее, здесь место, а не там )
морнинг круассан..
Спасибо сказали:
Аватара пользователя
ishitori
Сообщения: 502
ОС: gentoo -> archlinux

Re: Настройка ivman

Сообщение ishitori »

о, да! оно заработало -- путём даунгрейда до 0.6.13.
морнинг круассан..
Спасибо сказали:
Аватара пользователя
CCRko60
Сообщения: 25
ОС: Gentoo

Re: Настройка ivman

Сообщение CCRko60 »

Вобщем решил сделать себе автозапуск kppp при подключении мобильного телефона. Нагуглил, что это можно реализовать при помощи ivman. Но не нащел инструкции, как это можно осуществить. Вот отрывок из вывода hal-device:

Код: Выделить всё

3: udi = '/org/freedesktop/Hal/devices/usb_device_fce_d076_3573920292636700_if1_serial_unknown_0'
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:02.2/usb1/1-6/1-6:3.1/tty/ttyACM0'  (string)
  info.category = 'serial'  (string)
  info.subsystem = 'tty'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_fce_d076_3573920292636700_if1'  (string)
  info.capabilities = { 'serial', 'modem' } (string list)
  serial.originating_device = '/org/freedesktop/Hal/devices/usb_device_fce_d076_3573920292636700_if1'  (string)
  info.product = 'Serial Port'  (string)
  serial.device = '/dev/ttyACM0'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_fce_d076_3573920292636700_if1_serial_unknown_0'  (string)
  serial.port = 0  (0x0)  (int)
  linux.hotplug_type = 2  (0x2)  (int)
  serial.type = 'unknown'  (string)
  linux.subsystem = 'tty'  (string)
  linux.device_file = '/dev/ttyACM0'  (string)
  modem.command_sets = { 'V.250' } (string list)
Я не могу понять, что из этого указывать в name. Подскажите, пожалуйста, как это сделать, или предложите альтернативный вариант решения проблемы, не использующий ivman
Желание - тысяча возможностей.
Нежелание - тысяча причин.
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Настройка ivman

Сообщение Bluetooth »

CCRko60 писал(а):
09.01.2010 02:47
Я не могу понять, что из этого указывать в name. Подскажите, пожалуйста, как это сделать, или предложите альтернативный вариант решения проблемы, не использующий ivman

Честно говоря, тут подумать надо. Но сейчас я бы решил проблему через udev. Например, вот правила для запуска madwimax при подключении юсб модема samsung swc-200u:

Код: Выделить всё

# udev rules file for madwimax supported devices
SUBSYSTEM!="usb_device", GOTO="madwimax_rules_end"
ACTION!="add", GOTO="madwimax_rules_end"

# run madwimax
ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6761", RUN+="/sbin/madwimax -df --exact-device=$attr{device/busnum}/$attr{device/devnum}"
ATTRS{idVendor}=="04e9", ATTRS{idProduct}=="6761", RUN+="/sbin/madwimax -df --exact-device=$attr{device/busnum}/$attr{device/devnum}"
ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6731", RUN+="/sbin/madwimax -d --exact-device=$attr{device/busnum}/$attr{device/devnum}"
ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6780", RUN+="/sbin/madwimax -df --exact-device=$attr{device/busnum}/$attr{device/devnum}"

LABEL="madwimax_rules_end"

Честно говоря, от такого стиля программирования меня просто плющит, но оно и не важно.
Тут Вам нужно поменять idVendor, idProduct(их можно выяснить из lsusb):
Bus 005 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
а дальше поменять значение RUN на нужную Вам программу.
Я вот не помню, нужно ли перезапускать udev после изменения правил, боюсь ошибиться, но, кажется, нет.
Спасибо сказали: