File permissions change when transfering between external drives and laptop

I noticed a few years ago that when I transfer files back and forth between my laptop and my external drive all the files that I have transfered have changed permissions.

I format all my external drives as exFAT so I can use larger files.

Why does this happen?

Is there a better way to keep the file permissions intact when transfering files back and forth between external drives?

The test file: Fantastic Fungi (2019).mkv

+++++++++++++++++++++++++++++++++++++++++++++++++++

This is what the file permssions looks like before I transfer it to my external hard drive

ls -l

-rw-r–r-- 1 user user 577761580 May 2 2024 ‘Fantastic Fungi (2019).mkv’

+++++++++++++++++++++++++++++++++++++++++++++++++++

This is what the file permssions looks like after I transfer it back to my laptop

ls -l

-rwxr-xr-x 1 user user 577761580 May 2 2024 ‘Fantastic Fungi (2019).mkv’

When I right click file permissions dialogue box. The “Allow this file to run as a program” is ticked.

+++++++++++++++++++++++++++++++++++++++++++++++++++

The way have overcome this is to run a simple one liner to reset the permissions for directories and files.

Open a terminal in the directory of the folders and files you want to change

All directories will be 775. All files will be 664

find . -type d -exec chmod 0755 {} ;

find . -type f -exec chmod 0644 {} ;

Directory permission 0755 is similar to “drwxr-xr-x”

File permission 0644 is equal to “-rw-r–-r–-“.

-type d = directories

-type f = files

+++++++++++++++++++++++++++++++++++++++++++++++++++

  • SavvyWolf@pawb.social
    link
    fedilink
    English
    arrow-up
    53
    ·
    22 days ago

    Exfat does not support permissions, so when it gets moved to the drive, that information is lost.

    If permission information is important to you and compatibility with non-linux devices isn’t, you can reformat the device as ext4 to support all linux features.

  • Eugenia@lemmy.ml
    link
    fedilink
    English
    arrow-up
    21
    ·
    22 days ago

    This is absolutely normal. FAT/exFAT do not support unix permissions (let alone Linux ext4’s any special flags etc). So each time you copy files there, the permissions and all other flags are lost or get bad in general.

    To save your permissions you have two options:

    1. Zip/targzip or xz your linux files before you copy them on your fat drives. Preferably on files that overall aren’t larger than 1 gb, just to avoid other weird problems.

    2. Use ext4 on your external drives.

  • pitiable_sandwich540@feddit.org
    link
    fedilink
    arrow-up
    7
    ·
    21 days ago

    exfat or fat32 is great for interoperability between linux and windows but has limited functionality under linux.

    If you’re using your external drive only under linux, I suggest switching to a filesystem that works better with unix like permissions and special bits.

    Also, like others, depending on your use-case I would suggest something with journaling like ext3 or ext4. If you happen to power of your system while writing something to that drive, the fs does not get corrupted/can automatically recover.

    For backups with rollback maybe a FS with copy on write and automatic compression like btrfs or zfs would be better.

    With btrfs borg backups allows you to create incremental backups of btrfs subvolumes. I use it to backup my home, etc and /subvolumes on my “backup server” (old pc with two raid1 hdds).

    I have a friend who administeres backups for his company (afaik ~100-200GB delta per week) and he swears by zfs. I found btrfs simpler though.

  • Hack3900@lemy.lol
    link
    fedilink
    arrow-up
    6
    ·
    22 days ago

    ExFat doesn’t support file permissions so a default value is used, I believe you can only change the permissions at mount time

  • nyan@sh.itjust.works
    link
    fedilink
    arrow-up
    6
    ·
    22 days ago

    exFAT is a Microsoft creation that (unsurprisingly) doesn’t understand or preserve Linux-style file permissions. Neither did any of the FAT varieties before it. So the permissions on the files when you get them back relate to the mount options you pass to the exFAT drive (in this case, you probably want to set dmask and fmask), or the permissions on the directory it’s mounted to.

    If you don’t want to twiddle with mount options, you could reformat the external disks using Linux-native filesystems like ext4, but you’ll lose the ability to mount them on Windows if you do that.

    • N0x0n@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      22 days ago

      but you’ll lose the ability to mount them on Windows if you do that.

      One viable solution to that, is to mount that drive as SMB share, best of the two worlds !

  • SteveTech@programming.dev
    link
    fedilink
    English
    arrow-up
    3
    ·
    21 days ago

    If it’s an external SSD, I like to format my drives as f2fs, which is a filesystem designed for flash memory, so it might be a bit faster and last longer than ext4. But that’s just personal preference and ext4 should always work fine.

      • SteveTech@programming.dev
        link
        fedilink
        English
        arrow-up
        2
        ·
        20 days ago

        Oh no worries!

        Also hdparam/nvme-cli will let the drive erase itself, and should be faster than operating through a computer. Like it can take seconds on some SSDs since it wipes the chips in parallel, and some drives are self encrypting, so it just deletes the key, leaving the scrambled data. But those usually won’t work on USB drives.

  • MonkderVierte@lemmy.zip
    link
    fedilink
    arrow-up
    1
    ·
    22 days ago

    Thunars “allow this file to run as a program” is generally bugged. Always set to on for me on files like xml, md, json, so they execute on single-click instead of opening the default action. chmod -x doesn’t change that checkmark either or only sometimes.

    Btw, any file manager that is similiar in features (custom actions) and look but less crashy.