ACTION=="add" KERNEL=="sd[a-z][0-9]" RUN+="/bin/sh -c '/bin/echo {ID_VENDOR} %E{ID_SERIAL} >> /var/log/my_usb_log'"
подскажите как грамотно завернуть, чтобы это правило udev отображало время подключения флэшки и юзера, её подключившего?
правило udev для отслеживания подключённых флэшек
Модераторы: SLEDopit, Модераторы разделов
-
grimnir14
- Сообщения: 1
- ОС: CentOS
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: правило udev для отслеживания подключённых флэшек
grimnir14, проще запретить выполнять mount явно, а повесить его на sudo. В логах sudo все и будет болтаться.
Второй вариант — сделать обертку над mount.
При помощи udev такое сделать невозможно, т.к., во-первых, не факт, что пользователь флешку смонтирует; во-вторых, не факт, что флешку будет монтировать пользователь, залогинившийся в иксах (он мог уйти и заблокировать экран, а другой пользователь — смонтировать флешку).
В общем, таки sudo — простейший способ.
Второй вариант — сделать обертку над mount.
При помощи udev такое сделать невозможно, т.к., во-первых, не факт, что пользователь флешку смонтирует; во-вторых, не факт, что флешку будет монтировать пользователь, залогинившийся в иксах (он мог уйти и заблокировать экран, а другой пользователь — смонтировать флешку).
В общем, таки sudo — простейший способ.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
vr13
- Сообщения: 887
- ОС: gentoo
Re: правило udev для отслеживания подключённых флэшек
почему-то большинство думает, что udev придуман для реализации административных (или каких-л ещё прикладных) человеческих фантазий. udev - это, строго говоря, совсем не гуманоидный device manager, способ динамически наполнять /dev (devfs), реагируя на события ядра согласно формальным правилам. так было придумано greg'ом kh, и в большинстве промышленных инсталляций это так, пока не будут широко реализованы планы г-на пётеринга
значит, оставляем udev в покое и смотрим на другие способы. например, если вы работаете в десктопном окружении, которое использует udisks (для манипуляций с removable media), стоит рассмотреть polkit. это наверняка есть и работает у вас на компьютере
журналирование манипуляции с флешками можно сделать правилами polkit. создадим например, такое (/etc/polkit-1/rules.d/10-udisks.rules):
Код: Выделить всё
polkit.addRule(function(action,subject) {
if(action.id == "org.freedesktop.udisks.filesystem-mount") {
polkit.log("mount");
}
if(action.id == "org.freedesktop.udisks.drive-eject") {
polkit.log("eject");
}
});при вставке флешки (которая автомонтируется средствами десктопа) в /var/log/messages (или куда сконфигурирован syslog) появится строчка:
Код: Выделить всё
Aug 25 16:52:13 polkitd[50635]: /etc/polkit-1/rules.d/10-udisks.rules:7: mountа при извлечении оной
Код: Выделить всё
Aug 25 16:52:37 polkitd[50635]: /etc/polkit-1/rules.d/10-udisks.rules:10: ejectинформацию про пользователя и другие атрибуты можно выделить из класса subject. приведённые правила намеренно сделаны примитивными, см polkit(8). также я не уверен, что выбрал правильные <action id=...> -- нужно внимательно порассматривать /usr/share/polkit-1/actions/org.freedesktop.udisks.policy
конечно sudo - это просто (примерно так делалось в freebsd7), а как насчёт юзабилити?
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: правило udev для отслеживания подключённых флэшек
Все равно же ntfs монтируется только при помощи sudo (т.к. "ядреный" модуль до сих пор по-человечески запись не поддерживает, а в ntfs-3g в большинстве попсовых дистрибутивов сломали опцию, позволяющую монтировать без sudo), поэтому просто достаточно всем пользователям сделать alias mount="sudo mount" (umount так же), а в sudoers прописать для всех mount/umount без пароля. И все будет работать.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
vr13
- Сообщения: 887
- ОС: gentoo
Re: правило udev для отслеживания подключённых флэшек
eddy писал(а): ↑25.08.2013 23:04
Все равно же ntfs монтируется только при помощи sudo (т.к. "ядреный" модуль до сих пор по-человечески запись не поддерживает, а в ntfs-3g в большинстве попсовых дистрибутивов сломали опцию, позволяющую монтировать без sudo), поэтому просто достаточно всем пользователям сделать alias mount="sudo mount" (umount так же), а в sudoers прописать для всех mount/umount без пароля. И все будет работать.
у меня монтируется через fuse: общий случай т.е:
Код: Выделить всё
Aug 25 19:21:53 polkitd[50635]: /etc/polkit-1/rules.d/51-udisks.rules:7: mount
Aug 25 19:21:54 ntfs-3g[50321]: Version 2012.1.15 external FUSE 29
Aug 25 19:21:54 ntfs-3g[50321]: Mounted /dev/sdb1 (Read-Write, label "era", NTFS 3.1)
Aug 25 19:21:54 ntfs-3g[50321]: Cmdline options: rw,nodev,nosuid,uhelper=udisks
Aug 25 19:21:54 ntfs-3g[50321]: Mount options: rw,nodev,nosuid,uhelper=udisks,allow_other,nonempty,relatime,fsname=/dev/sdb1,blkdev,blksize=4096
Aug 25 19:21:54 ntfs-3g[50321]: Ownership and permissions disabled, configuration type 1
Aug 25 19:23:09 ntfs-3g[50321]: Unmounting /dev/sdb1 (era)
Aug 25 19:23:12 kernel: [1836068.866989] usb 1-1.1: USB disconnect, device number 93-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: правило udev для отслеживания подключённых флэшек
А я что-то не придумал, как без sudo обойтись, не перекомпилируя ntfs-3g! Если просто mount наберешь, то матюгается, если suid-бит поставить, то при обновлении он "отвалится".
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка