Предыстория: я пытаюсь смонтировать диск USB только для чтения, но моя установка Ubuntu монтирует его rw, когда я подключаю диск.
Я могу размонтировать диск вручную и перемонтировать его вручную только для чтения с помощью команд umount и mount, но это не интересно. Может кто-нибудь дать мне быстрое объяснение того, как именно монтируются usb автоматически в типичной системе linux (udev? Историческая справка тоже хороша) и, возможно, как я могу настроить этот процесс, чтобы позволить мне читать диск ro?
Благодарю.
Редактировать: я использую GNOME, если это вообще помогает.
Edit2: в спешке я забыл предоставить немного больше информации. Вот как выглядит диск из вывода 'mount'.
/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Edit3: это также может быть относительным по-своему. В выводе mount у меня также есть следующее:
gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)
Я думал, что это может быть связано с вышеупомянутым креплением fuseblk, но я обнаружил, что это так.
Gvfs - это виртуальная файловая система Gnome. Это виртуальная файловая система, созданная поверх уже существующего ядра VFS. gvfs использует библиотеку GIO (которая является API-интерфейсом VFS) для доступа к файлам, устройствам, удаленным сетевым расположениям и т. д. В этом случае выше ('gvfs-fuse-daemon') gvfs использует FUSE для монтирования файлов / расположений / устройств. По сути, это то, что происходит, когда вы монтируете удаленное сетевое соединение в Nautilus. Он будет использовать FUSE для монтирования (внутри?) Каталога .gvfs, а затем будет связываться с уровнем виртуальной файловой системы gnome для связи с новым монтированием.
По сути, эта структура позволяет пользователю динамически монтировать новые локации и взаимодействовать с ними через nautilus.
Просто для справки: FUSE - это файловая система пользовательского пространства, она также позволяет пользователю запускать монтирование, даже если этот пользователь не является пользователем root)
Так, где это оставляет меня? Ну, диск LaCie монтируется с типом fuseblk. Это просто блочное устройство с предохранителем. Таким образом, какой-то демон автоматически обнаружил диск, когда он был подключен, а затем пошел вперед и запустил fuse для монтирования моего блочного устройства. Так что же это за демон и как он настроен (я думаю, это какая-то внутренняя вещь гнома) - это самый важный вопрос. Вторичный вопрос - как система автоматически обнаружила недавно вставленный USB-диск, но я думаю, что это немного в стороне и гораздо более низкий уровень здесь (читай: udev?).
Ссылки:
источник
Ответы:
Я пытался сделать это на моем компьютере, и это работает :)
Сначала я получаю имя для моего устройства:
В моем случае это / proc / disk / by-id / usb-09a6_8001
Я добавил эту строку в / etc / fstab:
И это работает, когда я подключаю свой usbkey, он монтируется ro и принадлежит моему пользователю.
источник
В настоящее время решения по умолчанию - насколько я знаю
udisk
, демон, обеспечивающий API- интерфейс dbus, а также интерфейс командной строки . Есть также несколько обёрток udisks и автомонтер.Как правило, вы не конфигурируете
udisk
себя, поскольку он просто делает то, что ему говорят, поэтому вам нужно заглянуть в Gnome. Возможно, Gnome Disk Utility позволяет вам изменять / изменять флаги монтирования.источник
Как сказал Ульрих Дангел, в настоящее время удиски должны быть эталоном. Я еще не видел, как он уведомляется (udev-> dbus-> udisks?), Но вручную его можно использовать для подключения устройства с нужными вам опциями.
Udisks говорит с polkit, чтобы узнать, что пользователю разрешено делать с томами. Я предполагаю здесь, но если бы мы могли найти место для установки свойств для именованного диска / устройства, оно должно работать.
Используя udisksctl, ваш пользователь должен иметь возможность смонтировать устройство с нужными вам опциями, примерно так:
udisksctl mount -b / dev / sdxy -o ro / точка монтирования
Пока не знаю, где разместить варианты.
ОБНОВЛЕНИЕ: Следуя советам Ульриха, я обратился к дисковой утилите Gnome и достиг того, что вам нужно, но не уверен, является ли это наиболее элегантным решением или нет. Я использую Kororaa 17 (на основе Fedora 17) с Cinnamon + Gnome3, перешел к утилите «Диски» и изменил параметры монтирования для моего usb-накопителя, добавил «ro» и сохранил.
Он добавляет запись в fstab (вот где я не рассматриваю это как элегантное решение, я думаю, что он должен оставаться в конфигурации пользователя, а не для всей системы), я подключаю диск, и он автоматически монтируется в выбранной точке монтирования с опциями Я сохранил в Gnome диски утилиту.
источник
udev→dbus→udisk
толькоudev/uevent→udisk→dbus
ro
возможностью.На тему того, как ядро обнаруживает аппаратное обеспечение,
вот очень хорошая статья о том, что происходит.В итоге:
/sys/
./dev/
На данный момент устройство готово к использованию в пространстве пользователя. Gvfs и FUSE - это пользовательские файловые системы.
источник
udev
как правило, не уведомляет приложения,dbus
это делается сторонними приложениями. Если вы используете,qdbus --system
вы не увидите никаких имен udev. Обычно приложения просто подписываютсяuevents
или отправляют свои собственные правила