* [Comm] Отключение USB-накопителей @ 2011-03-03 5:57 Alexey Petrakov 2011-03-03 9:43 ` Dmitry Chistikov 2011-03-03 12:34 ` Sergey Vlasov 0 siblings, 2 replies; 7+ messages in thread From: Alexey Petrakov @ 2011-03-03 5:57 UTC (permalink / raw) To: ALT Linux Community general discussions Здравствуйте. Возникла такая задача: отключить на определённых машинах возможность пользоваться флешками и прочими USB-накопителями. Ломаю голову как это сделать. Первой идеей было написать правило для udev, которые выставит на создаваемое устройство права 0000. Написал, выставило. Однако, монтироваться это флешке ничуть не мешает. Думаю дальше. Сделал правило, которое для usb-storage устройств делает OPTIONS+="ignore_device". Вроде нужного эффекта добился, однако рытьё в интернете показало, что в ближайшей будущей версии udev опции ignore_device из каких-то непонятных соображений больше не будет. Таким образом, вроде простая и распространённая вещь породила неожиданно много геморроя. Научите пожалуйста, кто знает, как правильно реализовать эту задачу. И очень бы хотелось понять почему hal (ведь это он монтирует диски по заданию от KDE?) полностью игнорирует права доступа к устройству, которое он монтирует. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Отключение USB-накопителей 2011-03-03 5:57 [Comm] Отключение USB-накопителей Alexey Petrakov @ 2011-03-03 9:43 ` Dmitry Chistikov 2011-03-03 10:20 ` Alexey Petrakov 2011-03-03 12:34 ` Sergey Vlasov 1 sibling, 1 reply; 7+ messages in thread From: Dmitry Chistikov @ 2011-03-03 9:43 UTC (permalink / raw) To: ALT Linux Community general discussions Alexey Petrakov, Mar. 03, 2011, 11:57 +0600: > Возникла такая задача: отключить на определённых машинах возможность > пользоваться флешками и прочими USB-накопителями. Ломаю голову как это > сделать. Чисто теоретически: отправить usb_storage в blacklist не пробовали? -- Дмитрий Чистиков ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Отключение USB-накопителей 2011-03-03 9:43 ` Dmitry Chistikov @ 2011-03-03 10:20 ` Alexey Petrakov 0 siblings, 0 replies; 7+ messages in thread From: Alexey Petrakov @ 2011-03-03 10:20 UTC (permalink / raw) To: ALT Linux Community general discussions В сообщении от 3 марта 2011 15:43:13 автор Dmitry Chistikov написал: > Alexey Petrakov, Mar. 03, 2011, 11:57 +0600: > > Возникла такая задача: отключить на определённых машинах возможность > > пользоваться флешками и прочими USB-накопителями. Ломаю голову как это > > сделать. > > Чисто теоретически: отправить usb_storage в blacklist не пробовали? Пробовал. Но: 1) Не получилось. Модуль всё равно проболжал грузиться. "depmod -a" сделать не забыл. 2) Полумера, т.к. может завтра понадобится запрещать не все подряд флешки, а для каких-то сделать исключение, или пускать, но в ReadOnly режиме или ещё что-нибудь подобное. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Отключение USB-накопителей 2011-03-03 5:57 [Comm] Отключение USB-накопителей Alexey Petrakov 2011-03-03 9:43 ` Dmitry Chistikov @ 2011-03-03 12:34 ` Sergey Vlasov 2011-03-04 3:30 ` Alexey Petrakov 1 sibling, 1 reply; 7+ messages in thread From: Sergey Vlasov @ 2011-03-03 12:34 UTC (permalink / raw) To: community [-- Attachment #1: Type: text/plain, Size: 1015 bytes --] On Thu, Mar 03, 2011 at 11:57:57AM +0600, Alexey Petrakov wrote: > Возникла такая задача: отключить на определённых машинах возможность > пользоваться флешками и прочими USB-накопителями. Ломаю голову как это > сделать. > Первой идеей было написать правило для udev, которые выставит на > создаваемое устройство права 0000. Написал, выставило. Однако, > монтироваться это флешке ничуть не мешает. Для монтирования права доступа к блочному устройству не требуются. Правильный на сегодняшний день способ ограничения доступа к USB-устройствам (работающий с любыми устройствами, а не только с usb-storage) описан в документации ядра (Documentation/usb/authorization.txt): http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/usb/authorization.txt;hb=HEAD Попытки оформить это в виде правил udev: http://permalink.gmane.org/gmane.linux.hotplug.devel/16602 (и другие сообщения в этом обсуждении - окончательный вариант правил там пока не сформировали). [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Отключение USB-накопителей 2011-03-03 12:34 ` Sergey Vlasov @ 2011-03-04 3:30 ` Alexey Petrakov 2011-03-04 15:10 ` Sergey Vlasov 0 siblings, 1 reply; 7+ messages in thread From: Alexey Petrakov @ 2011-03-04 3:30 UTC (permalink / raw) To: community В сообщении от 3 марта 2011 18:34:54 автор Sergey Vlasov написал: > On Thu, Mar 03, 2011 at 11:57:57AM +0600, Alexey Petrakov wrote: > Для монтирования права доступа к блочному устройству не требуются. Жаль. Такой удобный механизм, очень печально что его похерили. > Правильный на сегодняшний день способ ограничения доступа к > USB-устройствам (работающий с любыми устройствами, а не только с > usb-storage) описан в документации ядра > (Documentation/usb/authorization.txt): > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f= > Documentation/usb/authorization.txt;hb=HEAD > Попытки оформить это в виде правил udev: > http://permalink.gmane.org/gmane.linux.hotplug.devel/16602 > (и другие сообщения в этом обсуждении - окончательный вариант правил > там пока не сформировали). Спасибо. Ознакомился. На мой взгляд, это в некоторой мере стрельба из пушки по воробьям. И, к тому же, там, как я понял, реализован принцип "сначала запретим всё что каается УСБ, а потом будем разрешать что можно", а мне нужно наоборот "можно всё, кроме указанного", да и разгребать баги с отвалившимися мышами, клавиатурами и принтерами не хочется совсем. На данный момент наиболее адекватным считаю следующее правило удева: SUBSYSTEM=="block", DRIVERS=="usb-storage", NAME="" Если я в чём-то не прав - с радостью приму замечания. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Отключение USB-накопителей 2011-03-04 3:30 ` Alexey Petrakov @ 2011-03-04 15:10 ` Sergey Vlasov 2011-03-08 10:24 ` Alexey Petrakov 0 siblings, 1 reply; 7+ messages in thread From: Sergey Vlasov @ 2011-03-04 15:10 UTC (permalink / raw) To: community [-- Attachment #1: Type: text/plain, Size: 4358 bytes --] On Fri, Mar 04, 2011 at 09:30:22AM +0600, Alexey Petrakov wrote: > В сообщении от 3 марта 2011 18:34:54 автор Sergey Vlasov написал: > > On Thu, Mar 03, 2011 at 11:57:57AM +0600, Alexey Petrakov wrote: > > Для монтирования права доступа к блочному устройству не требуются. > > Жаль. Такой удобный механизм, очень печально что его похерили. На самом деле его там никогда и не было - в любом случае фактическое монтирование выполняется от root, а обычный пользователь может что-то смонтировать либо через suid-программу, либо через обращение к другому процессу, имеющему права root (hald, udisks-daemon). Ограничения типа опций owner и group в fstab на самом деле реализованы в /bin/mount; у hald есть свои правила, udisks-daemon не имеет собственных файлов конфигурации и управляется через установку переменных окружения в правилах udev. [...] > > (Documentation/usb/authorization.txt): [...] > Спасибо. Ознакомился. На мой взгляд, это в некоторой мере стрельба > из пушки по воробьям. И, к тому же, там, как я понял, реализован > принцип "сначала запретим всё что каается УСБ, а потом будем > разрешать что можно", а мне нужно наоборот "можно всё, кроме > указанного", да и разгребать баги с отвалившимися мышами, > клавиатурами и принтерами не хочется совсем. По-другому сделать просто нельзя - после обнаружения устройства, если authorized_default не установлено в 0, к нему сразу привязывается драйвер, если соответствующий модуль загружен. Единственный надёжно работающий способ - ничего не делать с устройством, пока не будет получено разрешение от userspace. Логику "можно всё, кроме указанного" можно попробовать реализовать на уровне правил udev - вместо записи сразу в ATTR{authorized} можно сначала устанавливать значение какой-нибудь переменной окружения (первым правилом установить в 1 для всех USB-устройств, последующими правилами сбросить в 0 для ненужных), а в последнем правиле записать окончательное значение переменной в ATTR{authorized}. Хотя тут возникает проблема из-за того, что атрибут authorized находится на уровне устройства, а привязка драйверов происходит к интерфейсам, находящимся уже на следующем уровне иерархии объектов sysfs (кстати, из-за этого ещё возникнет вопрос, что делать с многофункциональными устройствами, имеющими одновременно с интерфейсом Mass Storage и другие интерфейсы - через атрибут authorized можно запрещать доступ только к устройству целиком). > На данный момент наиболее адекватным считаю следующее правило удева: > > SUBSYSTEM=="block", DRIVERS=="usb-storage", NAME="" Менять NAME в документации уже давно не рекомендуются, и вроде бы тоже грозились совсем запретить (раньше это было нужно для некоторых устройств, для которых ядро не выдавало полные имена самостоятельно, но сейчас это уже починено в самом ядре). Уже сейчас при обнаружении установки NAME udevd сыпет ошибками. > Если я в чём-то не прав - с радостью приму замечания. Есть ещё один вариант - выставить /sys/bus/usb/drivers_autoprobe в 0, а потом в случае обнаружения разрешённого устройства записывать его bus_id либо в /sys/bus/usb/drivers_probe (разрешая ядру самостоятельно выбрать подходящий драйвер), либо в bind для конкретного драйвера. http://www.kernel.org/pub/linux/kernel/people/gregkh/driver_core/2.6/2.6.21/driver-core-udev-triggered-device-driver-binding.patch Правда, в этом варианте тоже изначально отключается всё - без правил udev, разрешающих привязку драйверов к нужным устройствам, ничего работать не будет. Однако, в отличие от варианта с authorized, есть возможность разрешать использование только части интерфейсов устройства. Кроме того, этот способ работает не только с USB. Есть и совсем грубый способ - запретить загрузку модуля usb-storage через /etc/modprobe.d/*.conf: install usb-storage /bin/true При этом могут появиться сообщения об ошибках в случае подключения устройств, обслуживаемых не самим модулем usb-storage, а другими модулями, зависящими от него (поддержка некоторых "странных" устройств сейчас вынесена в отдельные модули ums-*); из-за наличия таких модулей недостаточно написать "blacklist usb-storage" (blacklist действует только на запросы указанного модуля, но не блокирует загрузку его по зависимостям из других модулей). При наличии USB 3.0 надо блокировать и модуль uas. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Отключение USB-накопителей 2011-03-04 15:10 ` Sergey Vlasov @ 2011-03-08 10:24 ` Alexey Petrakov 0 siblings, 0 replies; 7+ messages in thread From: Alexey Petrakov @ 2011-03-08 10:24 UTC (permalink / raw) To: community В сообщении от Пятница 04 марта 2011 21:10:47 автор Sergey Vlasov написал: > On Fri, Mar 04, 2011 at 09:30:22AM +0600, Alexey Petrakov wrote: > > В сообщении от 3 марта 2011 18:34:54 автор Sergey Vlasov написал: > По-другому сделать просто нельзя - после обнаружения устройства, если > authorized_default не установлено в 0, к нему сразу привязывается > драйвер, если соответствующий модуль загружен. Единственный надёжно > работающий способ - ничего не делать с устройством, пока не будет > получено разрешение от userspace. Спасибо за подробную лекцию. Всё-таки, на мой взгляд, такие сложные и нетривиальные манипуляции для достижения такой простой цели - это слегка неадекватно. Посему, получается что наиболее человеческий метод решения задачи - это "install usb-storage /bin/true" в /etc/modprobe.d/*.conf ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-03-08 10:24 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-03-03 5:57 [Comm] Отключение USB-накопителей Alexey Petrakov 2011-03-03 9:43 ` Dmitry Chistikov 2011-03-03 10:20 ` Alexey Petrakov 2011-03-03 12:34 ` Sergey Vlasov 2011-03-04 3:30 ` Alexey Petrakov 2011-03-04 15:10 ` Sergey Vlasov 2011-03-08 10:24 ` Alexey Petrakov
ALT Linux Community general discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 community community/ http://lore.altlinux.org/community \ mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com public-inbox-index community Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.community AGPL code for this site: git clone https://public-inbox.org/public-inbox.git