Eu tenho um requisito para montar certas unidades USB somente leitura - não todas as unidades, apenas aquelas que contêm dados arquivados. Desejo evitar alterações acidentais ou maliciosas.
Muito já foi escrito udev
e parece ser possível, mas minhas regras não parecem ser executadas. Eu estudei como posso criar uma regra udev para montar uma unidade USB somente leitura? - Não tenho gvfs e as outras respostas não ajudam.
Aqui está o meu /etc/udev/rules.d/25-usb-read-only.rules
arquivo. Para teste, estou usando uma unidade com o nome de volume SCRATCH. A unidade é montada em /dev/sda, mas é sempre gravável.
#SUBSYSTEM=="usb", ACTION=="add", ENV{ID_FS_LABEL}=="SCRATCH", ENV{UDISKS_MOUNT_OPTIONS}="ro"
SUBSYSTEM=="usb", ACTION=="add", ENV{ID_FS_LABEL}=="SCRATCH", MODE="0550"
#SUBSYSTEMS=="usb", ACTION=="add", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_FS_LABEL}=="SCRATCH", ENV{UDISKS_MOUNT_OPTIONS}="ro"
# The RUN here just to test the rule is executed
#KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_FS_LABEL}=="SCRATCH", RUN+="/home/test-udev.sh"
As linhas de comentário são tentativas anteriores com falha. Eu me lembrei sudo udevadm control --reload
entre os testes.
Observe que até mesmo o comando RUN falhou. O script grava apenas um arquivo de depuração e funciona quando executado na linha de comando.
Ativei a depuração e examinei /var/log/syslog
– existem dezenas de milhares de linhas apenas para alguns segundos de um teste. Não encontrei nada útil.
Meu sistema é o Linux Mint 21.1 Cinnamon, mas todos os itens acima foram do bash.
Qualquer ajuda seria apreciada.
A (pré-
systemd
) implementação original deudev
acabou sendo poderosa demais: introduziu condições de corrida e outros problemas de segurança. Como resultado, o modernosystemd-udevd
é mais bloqueado do que seus predecessores e não pode fazer as mesmas coisas que as versões anteriores faziam. Há muitas informações sobre como montar discos removíveis usando discos antigosudev
, mas a recomendação atual é que você não faça isso , eudevd
sandboxing e outras restrições de segurança implementadas em distribuições mais recentes estão tornando isso cada vez mais difícil ou impraticável de fazer.O entendimento atual é essencialmente que o trabalho principal
udev
do é criar e gerenciar os nós de dispositivo em tempo hábil com propriedades e permissões apropriadas e, opcionalmente, fornecer alguns metadados adicionais nos nós de dispositivo para os outros serviços usarem; qualquer outra coisa que possa comprometer o trabalho principal deve ser evitada. Portanto, qualquer coisa que cause o início de processos de longa duração está fora de questão.udev
A montagem de um sistema de arquivos pode levar um tempo arbitrariamente longo, especialmente se o sistema de arquivos for grande ou corrompido e, portanto,
udevd
deve ser deixado para outros serviços, comoudisks2
em vez de fazê-lo diretamente.Se o Mint 21.1 tiver
udisks2
a versão 2.9.0 ou posterior (o nome do pacote pode serlibudisks2-0
, pois costumava haver outraudisks
implementação antes da atual),/etc/udisks2/mount_options.conf
seria um lugar melhor para fazê-lo.Você poderia fazer algo assim:
Este documento
mount_options.conf
inclui vários exemplos, incluindo exemplos de regras udev para correspondência de um determinado dispositivo de armazenamento USB por número de série do dispositivo, que é mais seguro do que usar o rótulo do sistema de arquivos como você deseja: http://storaged.org/doc/udisks2-api/latest/mount_options.htmlNormalmente, os dispositivos de mídia removíveis obtêm uma
TAG+="uaccess"
regra udev, que fornece aos usuários logados localmente acesso de gravação aos dispositivos. Isso significa que eles têm automaticamente todos os privilégios necessários para alterar os rótulos do sistema de arquivos em qualquer dispositivo de mídia removível. Isso significa que sua estratégia proposta de usar o rótulo do sistema de arquivos para proteger contra alterações maliciosas pode ser contornada trivialmente e não é segura.