montar automaticamente qualquer unidade externa sob / media com acesso de leitura / gravação para todos

9

Aqui está o meu problema:

Meu computador tem 4 portas USB e está executando o Ubuntu 12.10. Eu recebo USBs diferentes todos os dias, conecto ao meu computador, dados de leitura / gravação para eles e os mando.

O que eu quero é montar automaticamente qualquer USB que eu conecto ao meu computador. O primeiro USB detectado irá para /media/HDD1 , o segundo irá para /media/HDD2 e assim por diante. Ou seria ótimo se o USB conectado à porta 1 fosse para /media/HDD1 , o USB conectado à porta 2 fosse para /media/HDD2 e assim por diante.

O caminho /media não é importante, mas eu gostaria dos diretórios HDD1-4 em um lugar para que eu possa acessá-los facilmente.

Os USBs são normalmente ext2, mas às vezes também recebo FAT32, USBs NTFS.

Também quero que o USB seja montado sem fazer login no Ubuntu, pois geralmente acesse /media/HDD.. de outro computador com Windows.

Como posso fazer isso? Qual alteração em udev regras, fstab devo fazer? Qualquer sugestão é muito apreciada.

    
por Kiwi 08.03.2013 / 12:44

2 respostas

7

Bem, aqui podemos usar o mesmo truque que fstab usa para mídia Ótica (também conhecida como CDs e DVDs):

/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

A primeira coluna indica o sistema de arquivos, tenho certeza que seus USBs terão valores fixos, então vamos presumir que tudo depois de sda é um USB, e como você só pode ter 4 USB's ao mesmo tempo, a lista vai de sdb , sdc , sdd e sde .

$ ls /dev/sd*
/dev/sda   /dev/sdb   /dev/sdb3  /dev/sdb6  /dev/sdc  /dev/sdf
/dev/sda1  /dev/sdb1  /dev/sdb4  /dev/sdb7  /dev/sdd
/dev/sda2  /dev/sdb2  /dev/sdb5  /dev/sdb8  /dev/sde

(No meu caso eu uso um leitor de memória, então meus drivers USB começam em sdg , mas vamos continuar.)

Agora, presumimos que cada USB tenha uma e apenas uma partição, portanto, as linhas necessárias para nosso fstab são:

/dev/sdb1
/dev/sdc1
/dev/sdd1
/dev/sde1

Então você disse que seus pontos de montagem precisam ser consertados, então depois de criar seus diretórios, vamos adicioná-los:

/dev/sdb1 /media/HDD1
/dev/sdc1 /media/HDD2
/dev/sdd1 /media/HDD3
/dev/sde1 /media/HDD4

Como você pode ter quase todos os tipos de sistemas de arquivos, vamos usar o auto so fstab para adivinhar o tipo de arquivo a ser usado:

/dev/sdb1 /media/HDD1 auto
/dev/sdc1 /media/HDD2 auto
/dev/sdd1 /media/HDD3 auto
/dev/sde1 /media/HDD4 auto

Ok, agora vamos resumir as opções, que serão as mesmas para os CD's com mais permissões de leitura / gravação:

/dev/sdb1 /media/HDD1 auto rw,users,noauto,allow_other,umask=0
/dev/sdc1 /media/HDD2 auto rw,users,noauto,allow_other,umask=0
/dev/sde1 /media/HDD3 auto rw,users,noauto,allow_other,umask=0
/dev/sde1 /media/HDD4 auto rw,users,noauto,allow_other,umask=0

rw informa que queremos permissão de leitura e gravação, users permite que qualquer usuário monte um dispositivo, noauto evita que o driver seja montado automaticamente quando mount -a for chamado, como acontece na inicialização, evitando boot ERRORS e WARNINGS, allow_other permite que outros, mas o usuário que montou o driver tenha as mesmas permissões, e umask=0 impede que o padrão umask seja aplicado.

Agora, os dois únicos campos restantes são praticamente os dump order e fsck order, que podem estar em 0 , deixando-nos com o resultado final:

/dev/sdb1 /media/HDD1 auto rw,user,noauto,allow_other 0 0
/dev/sdc1 /media/HDD2 auto rw,user,noauto,allow_other 0 0
/dev/sdd1 /media/HDD3 auto rw,user,noauto,allow_other 0 0
/dev/sde1 /media/HDD4 auto rw,user,noauto,allow_other 0 0

Com isso, cada vez que você conectar um dispositivo USB, ele será montado automaticamente no ponto de montagem sem a intervenção do usuário. Você deve modificar de acordo com suas necessidades.

    
por Braiam 04.08.2013 / 20:52
3

Aqui está a solução que encontrei:

Primeiramente eu instalo o autofs no meu PC linux:

sudo apt-get install autofs

Ele criará o arquivo auto.master em /etc/auto.master

Adicione a seguinte linha no final desse arquivo:

/media/mount /etc/auto.mount --timeout=10 --ghost

/media/mount é um diretório no qual eu quero montar todas as unidades externas. /etc/auto.mount é o arquivo para colocar nas regras de montagem. --timeout=10 significa que desmontará automaticamente a unidade após 10 segundos de inatividade. --ghost significa que ainda deixa uma imagem do conteúdo quando é desmontado. Mude esta linha de acordo com suas necessidades.

Edite o arquivo /etc/auto.mount e adicione as seguintes linhas:

disk1  -fstype=auto,sync  :/dev/sdc1
disk2  -fstype=auto,sync  :/dev/sdd1
disk3  -fstype=auto,sync  :/dev/sde1
disk4  -fstype=auto,sync  :/dev/sdf1
disk5  -fstype=auto,sync  :/dev/sdg1
disk6  -fstype=auto,sync  :/dev/sdh1
disk7  -fstype=auto,sync  :/dev/sdi1
disk8  -fstype=auto,sync  :/dev/sdj1
DVD    -fstype=iso9660,ro :/dev/sr0

Para unidades normais, como USB ou eSATA, defina -fstype=auto,sync . Eu tenho 8 portas USB + eSATA, então eu declaro 8 pontos de montagem aqui. Meu computador já tem sda e sdb como discos locais, por isso coloquei sdc1 - > sdj1 para dispositivos externos. Eles são realmente nós de dispositivos em /dev quando você conecta suas unidades. Uma exceção à regra de montagem é a montagem em DVD, como você vê acima.

Quando insiro as unidades, elas aparecem como disk1, disk2, ... no diretório /media/mount e serão desmontadas automaticamente após 10 segundos. Eu não preciso tocar no meu PC e posso acessá-lo de algum outro lugar (como a máquina virtual)

    
por Kiwi 28.08.2013 / 19:06