How to Completely Disable USB Storage Devices on a Linux System to Prevent Data Theft

If you are managing a secure Linux workstation—such as a point-of-sale terminal, a public library kiosk, or a server holding sensitive financial data—the physical USB ports are a massive security vulnerability. An unauthorized user can simply walk up, plug in a thumb drive, and silently copy gigabytes of proprietary data in seconds, bypassing all network firewalls and remote logging.

To secure a physical Linux machine, you must instruct the Linux kernel to completely ignore any mass storage device plugged into its USB ports. You can do this by explicitly blacklisting the kernel module responsible for handling USB drives.

The Target: usb-storage

When you plug a thumb drive into a Linux machine, the kernel automatically loads a module named usb-storage to read the filesystem. By blacklisting this specific module, Linux will still allow USB keyboards, mice, and printers to function perfectly, but it will absolutely refuse to mount any thumb drives or external hard drives.

Step 1: Create a Modprobe Blacklist File

We will create a custom configuration file in the /etc/modprobe.d/ directory. This directory dictates which kernel modules are allowed to load during boot.

  1. Open your terminal.
  2. Create a new configuration file using a text editor with root privileges (we will use nano):
    sudo nano /etc/modprobe.d/disable-usb-storage.conf
  3. Paste the following line into the empty file:
    install usb-storage /bin/true
  4. Save the file and exit the editor (in nano, press Ctrl+O, Enter, then Ctrl+X).

Why “/bin/true”?

You might wonder why we didn’t use the standard blacklist usb-storage command. The standard “blacklist” command is weak; if another allowed kernel module explicitly requests usb-storage as a dependency, the kernel will load it anyway, bypassing the blacklist.

The install usb-storage /bin/true command is a heavy-handed hack. It intercepts the kernel’s attempt to load the USB driver, and instead tells the kernel to run the command /bin/true (which does absolutely nothing and immediately exits successfully). The kernel thinks the driver loaded successfully, but in reality, nothing happened.

Step 2: Update the Initramfs

Because USB drivers are loaded extremely early in the Linux boot process, we must rebuild the initial ramdisk (initramfs) so the kernel is aware of the blacklist the moment the computer turns on.

  • On Debian/Ubuntu systems:
    sudo update-initramfs -u
  • On RHEL/CentOS/Fedora systems:
    sudo dracut -f

Step 3: Reboot and Test

For the kernel to purge the currently loaded driver, you must restart the machine.

sudo reboot

Once logged back in, plug in a USB flash drive. Open a terminal and type lsblk. The drive will not appear. The physical port provides power, but the operating system is entirely blind to the storage medium, rendering data theft via USB physically impossible.

RELATED POSTS

  • How to Use the Linux lsof Command to Identify Open Files and Network Sockets
  • How to Use the Linux lsof Command to Identify Open Files and Terminate Locked Processes
  • How to Quickly Create an Empty File in Linux Using the ‘touch’ Command
  • How to Display a Custom ASCII Art Welcome Message on Linux SSH Login (MOTD)
  • How to Use the ‘networkquality’ Command in macOS Monterey or Later
  • Get the best tech tips delivered straight to your inbox.

    Join thousands of readers mastering Apple, Google, Microsoft, and Linux.