Como obtenho o udev para montar certos discos USB quando eles estão conectados ou após uma reinicialização?

2

Acabei de atualizar para o Fedora 15. Usei o Bacula como backup há alguns anos e ele funciona bem. Mas agora acabei de me deparar com um problema, provavelmente porque o Bacula agora está rodando como usuário bacula ao invés de root.

Minha mídia de backup é duas unidades de disco USB (eu mantenho um local externo e troco-o uma vez por mês ou mais). No entanto, o Fedora monta automaticamente a unidade USB com seu ponto de montagem de propriedade do meu UID com o modo 700, presumivelmente porque eu estou conectado e isso seria a coisa certa para a maioria dos armazenamentos USB. No entanto, neste caso, não é porque Bacula não pode acessá-lo.

Se eu entendi a seqüência de eventos corretamente, o udev cria os nós de dispositivos / dev / sdb e / dev / sdb1, e estes são montados automaticamente pelo udisk (que é um componente do Gnome). É o udisk que decide quais são os parâmetros de montagem.

O que eu quero é que qualquer disco rotulado como "BACKUP *" seja montado com seu ponto de montagem de bacula: bacula, modo 700. Eu acho que preciso de um arquivo de regras do udev customizado em /etc/udev/rules.d. Eu li a página do udev (7) e " Escrevendo as regras do udev ". Aqui está o que eu tenho até agora, em um arquivo chamado "10-backup-disk.rules". Ele está sendo analisado pelo udev OK, mas não está funcionando: o disco ainda acaba sendo de minha propriedade. Alguém pode me dizer o que estou fazendo errado?

Obrigado.

KERNEL!="sd[a-z][0-9]", GOTO="backup-disk_auto_mount_end"
ENV{ID_FS_LABEL}!="BACKUP*", GOTO="backup-disk_auto_mount_end"

# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Get disk label
ENV{dir_name}="%E{ID_FS_LABEL}"

# Global mount options
ACTION=="add", ENV{mount_options}="relatime,rw"
# Filesystem-specific mount options
ACTION=="add", ENV{mount_options}="$env{mount_options}"

# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

# Exit
LABEL="backup-disk_auto_mount_end"
    
por Paul Johnson 08.06.2011 / 20:53

1 resposta

6

Eu não sei nada sobre o udev , mas como você está usando o Fedora 15 você pode realizar a mesma coisa com systemd muito mais simplesmente.

Supondo que você tenha uma unidade USB rotulada como BACKUP_ONE, crie o seguinte arquivo:

/etc/systemd/system/mnt-backup1.mount :

[Mount]
What=/dev/disk/by-label/BACKUP_ONE
Where=/mnt/backup1
Options=uid=bacula,gid=bacula,mode=0700

Observe que o nome do arquivo deve terminar em .mount e ter um nome que corresponda ao ponto de montagem (na linha Where= do arquivo da unidade), com barras ( / ) alteradas para traços ( - ). Para mais informações, consulte man systemd.unit .

Além disso, você pode impedir que ele monte a unidade até que o Bacula execute um backup (ou tente acessar a unidade) criando /etc/systemd/system/mnt-backup1.automount :

[Automount]
Where=/mnt/backup1
[Install]
WantedBy=remote-fs.target

Repita isso para sua outra unidade e, em seguida, execute systemctl enable mnt-backup1.automount e systemctl daemon-reload para informar systemd das alterações. (Eu me certificaria de que eles estão desconectados neste momento para que não fique confuso.)

udisks agora vai adiar para a sua configuração systemd e montá-lo com as opções que você definiu.

    
por 12.06.2011 / 08:30

Tags