Fix 'Permission Denied' When Mounting USB on Linux
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
udisks2andudisks2-libif not present. On Debian/Ubuntu:sudo apt install udisks2. On Fedora:sudo dnf install udisks2. - Add your user to the
plugdevgroup: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, useudisksctl mountin a loop withlsblk -o NAME,TYPE | grep diskto 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?