Ok, faz muito tempo, mas ainda responderei a minha pergunta com a melhor opção que encontrei a partir de agora.
A melhor maneira é criar uma regra udev
, associada a alguns scripts (que criarão / removerão diretórios e montar / desmontar dispositivos removíveis) e anexados ao tipo de evento partition
udev
device.
1 - Criando scripts para adicionar / remover
Adicione este script storage-automount.sh
em /lib/udev/
e defina-o como executável ( sudo chmod +x /lib/udev/storage-automount.sh
):
#!/bin/sh
# set the mountpoint name according to partition or device name
mount_point=$ID_FS_LABEL
if [ -z $mount_point ]; then
mount_point=${DEVNAME##*/}
fi
# if a plugdev group exist, retrieve its gid set & it as owner of mountpoint
plugdev_gid="$(grep plugdev /etc/group|cut -f3 -d:)"
if [ -z $plugdev_gid ]; then
gid=''
else
chown root:plugdev $mount_point
gid=",gid=$plugdev_gid"
fi
# create the mountpoint directory in /media/ (if not empty)
if [ -n $mount_point ]; then
mkdir -p /media/$mount_point
# other options (breaks POSIX): noatime,nodiratime,nosuid,nodev
mount -t $ID_FS_TYPE \
-o rw,flush,user,uid=0$gid,umask=002,dmask=002,fmask=002 \
$DEVNAME /media/$mount_point
fi
Adicione este script storage-autounmount.sh
em /lib/udev/
e defina-o como executável ( sudo chmod +x /lib/udev/storage-autounmount.sh
):
#!/bin/sh
# set the mountpoint name according to partition or device name
mount_point=$ID_FS_LABEL
if [ -z $mount_point ]; then
mount_point=${DEVNAME##*/}
fi
# remove the mountpoint directory from /media/ (if not empty)
if [ -n $mount_point ]; then
umount -l /media/$mount_point
rm -R /media/$mount_point
fi
2 - Criando a regra udev
para anexar esses scripts a eventos
Por fim, adicione uma regra udev
em /etc/udev/rules.d
, por exemplo 85-storage-automount.rules
:
ENV{DEVTYPE}=="partition", RUN+="/lib/udev/storage-automount.sh", ENV{REMOVE_CMD}="/lib/udev/storage-autounmount.sh"
E é isso.
Agora, quando você conecta um dispositivo de armazenamento, um diretório será criado em /media/
de acordo com o nome da partição (não lembro, mas acho que também funciona com partições NTFS) e sua partição será montada afim disso. É R / W para usuários se você tiver um grupo plugdev
em seu sistema. Além disso, os dispositivos são montados em modo síncrono para limitar os riscos de perda de dados em caso de desconexão a quente.
Quando o dispositivo é removido, ele é desmontado e o diretório é removido de /media
.
Além disso, a ferramenta para monitorar os eventos udev
é udevadm monitor
, com opções como --env
ou --property
:
$ udevadm monitor --env
Isso é testado e funciona bem no Debian e no Arch, mas provavelmente funciona em todas as distribuições que dependem do udev
.