Background: Estou tentando montar um disco USB como somente leitura, mas minha instalação do ubuntu está montando rw quando eu conecto o disco.
Posso desmontar o disco manualmente e remontá-lo manualmente como somente leitura com os comandos umount e mount, mas isso não é divertido. Alguém poderia me dar uma explicação rápida sobre como exatamente as montagens USB são feitas automaticamente em um sistema Linux típico (o histórico do udev? É bom também) e talvez como eu possa ajustar esse processo para que eu leia o disco ro?
Obrigado.
Edit: Estou usando o gnome, se isso ajuda em tudo.
Edit2: Na minha pressa, esqueci de fornecer um pouco mais de informação. É assim que o disco se parece com a saída de 'mount'.
/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Edit3: Isso também pode ser relevante à sua maneira. Na saída de montagem, também tenho o seguinte:
gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)
Eu pensei que isso poderia estar relacionado à montagem fuseblk acima, mas o que eu descobri foi isso.
Gvfs é o sistema de arquivos virtual do Gnome. É um sistema de arquivos virtual construído sobre os vfs do kernel já existentes. O gvfs usa a biblioteca GIO (que é uma API VFS) para acessar arquivos, dispositivos, locais de rede remota etc. Nesse caso acima ('gvfs-fuse-daemon'), o gvfs está usando o FUSE para montar arquivos / locais / dispositivos. Isso é basicamente o que acontece quando você monta uma conexão de rede remota no Nautilus. Ele usará o FUSE para montar o local (dentro?) Do diretório .gvfs e depois se comunicará com a camada do sistema de arquivos virtual do gnome para se comunicar com a nova montagem.
Basicamente, essa estrutura permite ao usuário montar dinamicamente novos locais e interagir com eles através do nautilus.
Apenas para referência: o FUSE é um sistema de arquivos do espaço do usuário, ou seja, ele permite que o usuário execute o mount mesmo quando esse usuário não é root)
Então, onde isso me deixa? Bem, o disco LaCie está sendo montado com o tipo fuseblk. Este é apenas um dispositivo de bloco montado com fusível. Portanto, alguns daemon detectaram automaticamente a unidade quando ela foi conectada e foram adiante e executaram o fusível para montar meu dispositivo de bloco. Então, que daemon é esse e como ele é configurado (acho que é uma coisa interna do gnomo) é a questão mais importante. Uma questão secundária é como o sistema detectou automaticamente um disco USB recém-inserido, mas acho que isso é um nível secundário e muito mais baixo aqui (leia-se: udev?).
Ligações:
fonte
Respostas:
Eu tentei fazer isso no meu computador e é trabalho :)
Primeiro, recebo um nome para o meu dispositivo:
No meu caso, é / proc / disk / by-id / usb-09a6_8001
Eu adicionei esta linha no / etc / fstab:
E está funcionando, quando conecto minha usbkey, ele é montado no ro e pertence ao meu usuário.
fonte
Atualmente, as soluções padrão são, até onde eu sei,
udisk
um daemon que fornece uma API Dbus , bem como uma interface de linha de comando . Também existem vários wrapper de udiscos e montador automático disponíveis.Normalmente você não se configura
udisk
, apenas faz o que é solicitado, então você precisa procurar no Gnome. Talvez o Gnome Disk Utility permita modificar / alterar os sinalizadores de montagem.fonte
Como disse Ulrich Dangel, os udiscos devem ser a referência hoje em dia. Ainda estou para ver como ele é notificado (udev-> dbus-> udisks?), Mas manualmente ele pode ser usado para montar um dispositivo com as opções necessárias.
O Udisks conversa com o polkit para ver o que um usuário pode fazer com os volumes. Eu estou supondo aqui, mas se pudéssemos encontrar um lugar para definir propriedades para um disco / dispositivo nomeado, ele deveria funcionar.
Usando o udisksctl, seu usuário deve poder montar o dispositivo com as opções necessárias, algo como isto:
udisksctl mount -b / dev / sdxy -o ro / mountpoint
No entanto, não sei onde colocar as opções.
ATUALIZAÇÃO: Seguindo as sugestões de Ulrich, fui ao utilitário de disco do Gnome e consegui o que você precisa, mas não tenho certeza se é a solução mais elegante ou não. Estou usando o Kororaa 17 (baseado no Fedora 17) com Cinnamon + Gnome3, fui para o utilitário "Disks" e modifiquei as opções de montagem para o meu drive USB, adicionei "ro" e salvei.
Ele adiciona uma entrada ao fstab (é aí que eu não a vejo como uma solução elegante, acho que deve permanecer como uma configuração do usuário que não seja o sistema inteiro), conecto a unidade e ela é montada automaticamente no ponto de montagem selecionado com opções Salvei no utilitário de discos do Gnome.
fonte
udev→dbus→udisk
masudev/uevent→udisk→dbus
ro
opçãoNo tópico de como o kernel detecta o hardware,
aqui está um artigo muito interessante sobre o que acontece.Em suma:
/sys/
./dev/
Nesse ponto, o dispositivo está pronto para ser usado pelo espaço do usuário. Gvfs e FUSE são sistemas de arquivos do espaço do usuário.
fonte
udev
normalmente não notifica aplicativos por meio de aplicativosdbus
de terceiros. Se você usarqdbus --system
, não verá nenhum nome do udev. Normalmente applicaitons apenas subscreve themself parauevents
ou enviar suas próprias regras