правило udev для отслеживания подключённых флэшек

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

grimnir14
Сообщения: 1
ОС: CentOS

правило udev для отслеживания подключённых флэшек

Сообщение grimnir14 »

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 отображало время подключения флэшки и юзера, её подключившего?
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: правило udev для отслеживания подключённых флэшек

Сообщение eddy »

grimnir14, проще запретить выполнять mount явно, а повесить его на sudo. В логах sudo все и будет болтаться.
Второй вариант — сделать обертку над mount.
При помощи udev такое сделать невозможно, т.к., во-первых, не факт, что пользователь флешку смонтирует; во-вторых, не факт, что флешку будет монтировать пользователь, залогинившийся в иксах (он мог уйти и заблокировать экран, а другой пользователь — смонтировать флешку).
В общем, таки sudo — простейший способ.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: правило udev для отслеживания подключённых флэшек

Сообщение vr13 »

grimnir14 писал(а):
20.08.2013 00:28
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 придуман для реализации административных (или каких-л ещё прикладных) человеческих фантазий. 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

eddy писал(а):
25.08.2013 01:53
В общем, таки sudo — простейший способ.

конечно sudo - это просто (примерно так делалось в freebsd7), а как насчёт юзабилити?
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: правило udev для отслеживания подключённых флэшек

Сообщение eddy »

vr13 писал(а):
25.08.2013 18:55
конечно sudo - это просто (примерно так делалось в freebsd7), а как насчёт юзабилити?

Все равно же ntfs монтируется только при помощи sudo (т.к. "ядреный" модуль до сих пор по-человечески запись не поддерживает, а в ntfs-3g в большинстве попсовых дистрибутивов сломали опцию, позволяющую монтировать без sudo), поэтому просто достаточно всем пользователям сделать alias mount="sudo mount" (umount так же), а в sudoers прописать для всех mount/umount без пароля. И все будет работать.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: правило udev для отслеживания подключённых флэшек

Сообщение vr13 »

eddy писал(а):
25.08.2013 23:04
vr13 писал(а):
25.08.2013 18:55
конечно sudo - это просто (примерно так делалось в freebsd7), а как насчёт юзабилити?

Все равно же 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 для отслеживания подключённых флэшек

Сообщение eddy »

vr13 писал(а):
25.08.2013 23:23
у меня монтируется через fuse

А я что-то не придумал, как без sudo обойтись, не перекомпилируя ntfs-3g! Если просто mount наберешь, то матюгается, если suid-бит поставить, то при обновлении он "отвалится".
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали: