Fix 'Permission Denied' When Mounting USB on Linux

Linux & Unix Beginner 👁 0 views 📅 May 26, 2026

Can't mount a USB drive on Linux? Here's the real fix—no faffing with chmod. Stop frustration fast.

Yeah, that 'Permission denied' message when you try to mount a USB drive—it's a classic Linux headache. I've had clients nearly throw their laptops across the room over this. But the fix is dead simple once you know what's happening.

Straight to the fix: use udisksctl

Don't bother with chmod or chown on the device file—that's a rabbit hole that rarely works long-term. The real magic is udisksctl. Open a terminal and run:

sudo apt install udisks2   # if not already installed, rarely needed
udisksctl mount -b /dev/sdb1

Replace /dev/sdb1 with your actual USB partition. Find that by running lsblk first. The output will show something like sdb1 under a size that matches your stick. If you're not root, this command works perfectly because it talks to the system's udisks daemon—no sudo needed.

Had a client last week on Ubuntu 22.04 whose USB wouldn't mount via the GUI file manager. That command mounted it instantly. The GUI then worked afterward too.

Why your original command failed

The typical mount /dev/sdb1 /mnt fails because regular users don't have permission to call the mount system call directly. That's a kernel-level restriction. The device file /dev/sdb1 might have wrong ownership—often root:root with 0660 permissions. But chmod'ing that to 0666 is a security nightmare and doesn't survive a re-plug. The real solution is to use udisksctl which runs through polkit and grants the mount privilege to your user session. It also handles mounting under /media/yourusername/ with proper permissions.

Another scenario: you try sudo mount /dev/sdb1 /mnt and it still fails with 'wrong fs type' or 'bad superblock'? That's a different beast—usually a corrupt filesystem or missing driver. But if it's purely a permission denied, udisksctl is your hammer.

Less common variations of the same core issue

1. Permissions on the mount point itself

If you're mounting to a custom directory like /mnt/usb, the mount point must exist and be writable by you. You can fix that with:

sudo mkdir -p /mnt/usb
sudo chmod 755 /mnt/usb   # or 777 if you're sloppy

But honestly, just use udisksctl and skip the custom mount point unless you need it for scripts.

2. Polkit rules blocking udisksctl

On some enterprise Linux distros (RHEL, CentOS, Rocky), polkit rules might restrict mounting for non-root users. You'll see a polkit error in syslog. Fix by adding a custom rule in /etc/polkit-1/rules.d/:

// 50-udisks-mount.rules
polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.filesystem-mount" &&
        subject.isInGroup("storage")) {
        return polkit.Result.YES;
    }
});

Add your user to the storage group afterwards: sudo usermod -aG storage $USER. Log out and back in.

3. Filesystem type not auto-detected

Old USB sticks formatted as FAT32 or exFAT sometimes confuse the kernel. You might need explicit -t vfat or -t exfat with mount, but udisksctl usually handles this. For exFAT, ensure exfat-fuse or exfatprogs is installed.

4. The device is already mounted somewhere

Check mount | grep /dev/sdb1. If it's mounted read-only or at a weird path, unmount first with sudo umount /dev/sdb1, then retry udisksctl.

Prevention for future plugs

Once you fix it with udisksctl once, the GUI file manager usually remembers the configuration. But to prevent this recurring, do two things:

  • Install udisks2 and udisks2-lib if not present. On Debian/Ubuntu: sudo apt install udisks2. On Fedora: sudo dnf install udisks2.
  • Add your user to the plugdev group: sudo usermod -aG plugdev $USER. Log out and back in. Most distros grant mount permission through that group.
  • Use a desktop environment that auto-mounts via udisks (GNOME, KDE, Xfce all do this). If you're on a minimal window manager like i3, you'll need udisksctl manually or a udev rule to auto-mount on insert.
Pro tip: If you're scripting mass USB operations, use udisksctl mount in a loop with lsblk -o NAME,TYPE | grep disk to detect new drives. It's safer than parsing /dev/.

One last thing—if you're still hitting permission denied after all this, check the USB itself. I've seen counterfeit drives that report wrong geometry. Use fsck or badblocks to verify. But 95% of the time, udisksctl is the answer.

Was this solution helpful?