Método Rápido e Sujo
Para uma desativação de força bruta de todos os dispositivos de armazenamento em massa ativos:
rmmod usb_storage
Impedir que qualquer dispositivo carregue o módulo usb_storage
Encontrei o seguinte link, basicamente perguntando o mesmo pergunta como esta . Se você quiser evitar que o kernel seja montado automaticamente usando usb_storage
:
echo "blacklist usb_storage" | sudo tee /etc/modprobe.d/blacklist-usb-storage.conf
Impedir que um único dispositivo carregue o módulo usb_storage
Em vez de desativar todos os dispositivos, você pode segmentar um dispositivo específico para ignorar usando as regras do udev. Existe um exemplo específico aqui .
Eu passei muito tempo tentando fazer isso funcionar no Ubuntu 10.04, mas parece que essa funcionalidade era desativado em versões mais recentes do udev .
"Remover Disco com Segurança" Unbind / Unclaim Source Code
A última publicação deste tópico funcionou como um encanto.
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/ioctl.h>
#include <linux/usbdevice_fs.h>
int main(int argc, char**argv)
{
struct usbdevfs_ioctl command;
int ret;
int fd;
int i;
if (argc>1) {
fd = open(argv[1],O_RDWR);
if (fd<1){
perror("unable to open file");
return 1;
}
for (i=0;i<255;i++){ // hack: should fetch how many interface there is.
command.ifno = i;
command.ioctl_code = USBDEVFS_DISCONNECT;
command.data = NULL;
ret = ioctl(fd, USBDEVFS_IOCTL, &command);
if(ret!=-1)
printf("un claimed interface %d %d\n",i,ret);
}
}else {
printf ("usage: %s /dev/bus/usb/BUS/DEVICE\n",argv[0]);
printf("Release all interfaces of this usb device for usage in virtualisation\n");
}
}
Script simples para dispositivo de ligação / desobstrução
O exemplo anterior é um caso interessante, mas também encontrei um método muito simplificado. Você pode usar a interface do driver usb-storage para ligar e desligar dispositivos .
O seguinte comando funcionou, assim como o código-fonte acima:
echo -n "1-2.4:1.0" | sudo tee unbind