Я работаю над преобразованием установки Ubuntu (14.04 LTS) в киоскоподобную систему с отключенным USB-накопителем. Однако это не мешает пользователю установить устройство MTP, такое как телефон Android.
Эта проблема отличается от , препятствующей автоматической установке устройств MTP, что было решено в других вопросах в AskUbuntu.
-
edit: я должен добавить, что я отключил USB-накопитель, отменив права доступа для рассматриваемой группы с помощью команды chown'ing / media для admin: myusbaccessgroup. Очевидно, что пользователи / группы, которые я хочу запретить использовать USB, не входят в myusbaccessgroup.
-
Обновление:
За этот ответ была назначена награда, но не было найдено успешного решения. Пожалуйста, ознакомьтесь с ответами до того, как последует обсуждение в чате .
Отказавшись, я вместо этого установил Ubuntu 12.04, поскольку он не поддерживает MTP из коробки. Тем не менее, устройства PTP все еще монтируются.
Это должно работать на обе Единицы & Gnome, протестированный в Ubuntu 14.04.
, Добавляет новое Изменение группы
addgroup myusbaccessgroup
, группа владельца мониторов gvfs
chown root:myusbaccessgroup /usr/lib/gvfs/gvfs-*-monitor
Удаляет разрешение считать & выполнитесь для общественности/других
chmod 750 /usr/lib/gvfs/gvfs-*-monitor
Помещенный user1 в группе & пропустите user2 или удалите его из Выхода из системы группы
adduser user1 myusbaccessgroup
deluser user2 myusbaccessgroup
Я не мог заставить это работать с помощью полномочий пользователя/группы ни один, которого я знаю, как libmtp монтируют объемы телефонов.
Это - решение проверить группу пользователей от udev
сторона.
Переключитесь на корень
sudo -i
Создайте универсальный сценарий для проверки пользователя GUI и если это находится в указанной группе
nano /lib/udev/check_gui_user_group.sh
Добавьте их строка к нему:
#!/bin/bash
export GUI_$(grep -z USER /proc/$(pgrep -nx $1)/environ)
groups $GUI_USER | grep -qFw "$2"
Добавьте выполняющееся разрешение
chmod +x /lib/udev/check_gui_user_group.sh
Устройства MTP: Позвольте переопределению libmtp правила в /lib/udev/rules.d/
.
cp /lib/udev/rules.d/69-libmtp.rules /etc/udev/rules.d/69-libmtp.rules
Затем откройте его для редактирования:
nano /etc/udev/rules.d/69-libmtp.rules
Добавьте эту строку сразу после LABEL="libmtp_usb_rules"
:
PROGRAM!="check_gui_user_group.sh gnome-session myusbaccessgroup", GOTO="libmtp_rules_end"
Для Ubuntu 14.04 Unity & Gnome можно использовать gnome-session
. Для других рабочих столов проверьте использование pstree -u
или ps aux | grep -i session
Значение правила: Каждый раз, когда пользователь gnome-session
НЕ находится в myusbaccessgroup
пропуск группы все правила libmtp.
Устройства PTP: Добавьте другой файл правил
nano /etc/udev/rules.d/99-usb-storage-remove.rules
Добавьте правило
ACTION=="add", ENV{GPHOTO2_DRIVER}=="PTP", ENV{DRIVER}!="", PROGRAM!="check_gui_user_group.sh gnome-session myusbaccessgroup", RUN+="/bin/sh -c 'echo -n %k >/sys%p/subsystem/drivers/%E{DRIVER}/unbind'"
Другие устройства хранения USB: Добавьте это правило к файлу правил предыдущего шага.
ACTION=="add", DRIVER=="usb-storage|uas|ums-*", PROGRAM!="check_gui_user_group.sh gnome-session myusbaccessgroup", RUN+="/bin/sh -c 'echo -n %k >/sys%p/driver/unbind'"
Для знания от того, где я получаю список драйверов попробуйте это:
ls /lib/modules/$(uname -r)/kernel/drivers/usb/storage/
Перезагрузите правила
udevadm control -R
Повторно включите свой телефон.
Тестирование и Поиск и устранение неисправностей:
Установите группу, если она уже не сделана
addgroup myusbaccessgroup
Удалите пользователя из группы.
deluser user myusbaccessgroup
Выполненный монитор udev
udevadm monitor -u
Переразъем то устройство
Проверьте то, что было выполнено
udevadm test /sys/device/...
Добавьте пользователя к группе
adduser user myusbaccessgroup
Восстановление, начинающее с шага 3.
Примечания:
Я использовал Kubuntu 15.04 (реальная машина) и Ubuntu 14.04 (новая установка в VirtualBox) для тестирования.
Ссылки:
man udev
искать PROGRAM
использование.У меня было то же требование в моем конце.
Лучший способ к MTP Блока, PTP для андроида должен отключить сервис в человечности.
Вводят это местоположение, поскольку корневой/usr/lib/gvfs
"sudo наутилус" будет легок, если Вы будете склонны использовать GUI
"sudo наутилус", и n перешли к computer/usr/lib/gvfs
То будет список сервисов, Удаляют выполнить разрешение путем щелчка правой кнопкой по соответствующему сервису-> свойства->, разрешение-> unckeck "выполняет" и изменяет доступ только для чтения от "только для чтения" ни до "одного"
Удаляют выполнить разрешение для
gvfsd-mtp
gvfs-mtp-volume-monitor (для более безопасной стороны)
gvfsd-gphoto2
gvfs-gphoto2-volume-monitor (для более безопасной стороны)
<час>, настолько любезно Удаляют выполнить разрешение для gvfsd-afp
gvfs-afc-volume-monitor (для более безопасной стороны)
, некоторые мобильные телефоны андроида могут использовать режим массового хранения, чтобы смонтировать там, что SD-карта изменяет разрешение папки в/media/user к 400
пользователь - созданный пользователь в человечности.
chmod 400
или удаляют разрешение монтирования для пользователя..
0
уже присоединен к tty - таким образом, содержание файла просто сразу читается терминалом. Если Вы хотите использовать дескриптор файла для чтения данных в некоторый другой процесс, you' d обычно присваивают его неиспользованному дескриптору такой как exec 3<file
и затем читают , что , например, в bash
можно использовать эти -u
флаг как read -r -u3 line ...
. Если Ваш процесс может [только 117] чтение от stdin, то необходимо будет перенаправить 0
к другому FD сначала и восстановить его после, я думаю.
– steeldriver
3 December 2016 в 02:47
python my_python_program.py
. Другие предлагают опцию читать из файла вместо того, чтобы читать из stdin, напримерwget -i file_with_urls.txt
. Если программа рассматриваемый doesn' t предлагают любому из тех, можно перенаправить stdin:whatever_program < input_data.txt
. Но it' s довольно трудно для ответа на вопрос, не зная, какой программе Вы хотите вручить данные. – Henning Kockerbeck 3 December 2016 в 02:50