I’ve been having trouble with getting a 2TB Fat32 formatted USB drive to work nicely in Ubuntu 24.04.1

I’m very new to Linux and have only gotten this far by reading old message boards and tutorials, but here’s where I’m at with it.

I created a .rules file named 90-usb-disks.rules

It lives in /etc/udev/rules.d

Inside it says:

/# UDEV Rules to change the permission of USB disks

KERNEL==“sd*[0-9]”, ATTR{removable}==“1”, ENV{ID_BUS}==“usb”, MODE=“0022”

Now this works… for my user. I have ownership of any USB storage device as soon as I plug it in. I can rwx, but my group (with the same name as my user) can only read.

Trying to change access from the Nautilus permissions pane just starts an endless progress bar that never passes “preparing” as it asks for my password every 90 seconds.

There must be a way to edit this to allow the group to allow rwx access as well, but I just copy/pasted this solution from a forum, I have no idea what those settings actually mean. Please help; thanks in advance :)

  • Mongostein@lemmy.caOP
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    2 months ago

    From what I understand this is a problem with FAT32 formatted drives specifically since it doesn’t use the Linux file system. Reformatting is not an option at the moment.

    What this does is give my user ownership when you plug in a usb device, which allows rw.

    I have it set up to mount on startup, but it mounts to root ownership. Now, I remount it and the owner becomes my user.

    I honestly can’t remember what I did to make it happen, but it always mounts to /mnt/drivename

    I’m using this for a Jellyfin server. Before I added this rule, I couldn’t add folders past the drive itself as a library, so I see this as progress. I just want to edit meta data now.

    Edit: I do have it in my fstab file listed by device ID with these settings:

    LABEL=drivename /mnt/drivename/ auto rw,user,exec,nofail,x-gvfs-show,dev,auto 0 0

    • AbidanYre@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      2 months ago

      Like the other guy said, this doesn’t seem like it should be necessary. But I haven’t had to deal with fat formatted disks in a while so who knows.

      The issue you’re having is in the mode. You’ll have to Google what the right setting is. It’s like the inverse of the permission mask or something.

    • lorentz@feddit.it
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 months ago

      FAT32 doesn’t support unix file permission, so when you mount the disk linux has to assign a default ownership which usually is to root. And this is the issue you are facing.

      You confused the disk permission with the filesystem permission. The udev rule you wrote gives you permission to write the disk (in other words, you can format it or rewrite the whole content) but doesn’t give you permission on the files stored inside because they are on a higher abstraction level.

      If you use this computer in interactive mode (in other words if you usually sit in front of it and plug the disk on demand) my suggestion is to remove that line in /etc/fstab and let the ubuntu desktop environment mounting the external hard drive for the current logged in user.

      If you use this computer as a server with the USB disk always connected (likely since you mention Jellyfin) you need to modify the fstab line to specify which user should get permission on the files written on the disk.

      You can see the full list of options at https://www.kernel.org/doc/Documentation/filesystems/vfat.txt

      You either want uid=Mongostein (assuming that’s your username on your computer too) to assign to yourself the ownership of all the files, or umask=000 to give everyone all the permissions to the files and directories while ownership will remain to root. You should prefer the second option if jellifin runs as a different user, while the first one is better if there are other users on your computer which shouldn’t access your external disk.

      To summarize, the line in /etc/fstab should be one of these two.

      LABEL=drivename /mnt/drivename/ auto rw,user,exec,nofail,x-gvfs-show,dev,auto,umask=000 0 0
      
      LABEL=drivename /mnt/drivename/ auto rw,user,exec,nofail,x-gvfs-show,dev,auto,uid=Mongostein 0 0