Solving the USB Storage Permission Issue & Cross System Compatibility Problem

The GNU/Linux Solution (ext4)

Pros:

1. Filesystem supports files over 4GB in size
2. Filesystem supports partitions over 2TB in size
3. Works out of the box on GNU/Linux
4. No driver packages to install due to patent restrictions

Negatives:

1. Requires the installation of Ext2 File System Driver on Microsoft Windows
2. This will compromise security controls (but is what you want for ease of use)
3. It's not well supported by devices like printers, cameras, etc

Using Access Control Lists(ACL) any user on just about any GNU/Linux system system will be able to read and write data to your removable media. Access control list (ACL) provides an additional, more flexible permission mechanism for file systems.

Note: # indicates an instruction, not necessarily a line or command you need to execute

Commands to run:

# This command will show you an output of the drives on the
# system and the partitions on each drive thereof.
#
# sudo fdisk -l | grep /dev/sd
#
# An example of the output from running this command is:
#
# Disk /dev/sda: 1.8 TiB, 2000398932012 bytes, 3907029261 sectors
# /dev/sda1 2048 1054653 1048576 512M EFI System
# /dev/sda2 1050623 2549719 1499134 732M Linux filesystem
# /dev/sda3 2549761 3903029341 3902459132 1.8T Linux filesystem
# Disk /dev/sdb: 14.5 GiB, 15518954810 bytes, 30315420 sectors
# /dev/sdb1 2048 30310329 30308452 14.5G 83 Linux
#
# If you know that you have a 16GB USB flash drive connected look for
# the drive that shows a disk that is about 16GB in size. As long
# as you don't have multiple 16GB hard drives the hard disk location
# that you want to format should be pretty apparent. In this example
# the 16GB flash drive that we have connected showed up as /dev/sdb
# and is 14.6 GiB and shows /dev/sdb1 as the only partition on the
# the drive of which we're going to want to format to ext4

# to get a list of drives that are connected and the partitions thereof run

sudo fdisk -l | grep /dev/sd

# To format the drive replace /dev/sdX1 below with the drive and partition you want to format
# in the above example we saw /deb/sdb was the flash drive and the first and only partition
# on that flash drive was /dev/sdb1 so to format this flash drive we would run sudo mkfs.ext4 /dev/sdb1

sudo mkfs.ext4 /dev/sdX1

# enable acl on the drive
# replace /dev/sdX1 with the drive and partition information discovered above hereon out

sudo tune2fs -o acl /dev/sdX1

# label partition as Penguin
sudo tune2fs -L Penguin /dev/sdx1

# mount the drive and set yourself as owner
sudo mount /dev/sdX1 /mnt
sudo chown username: /mnt

# make readable, writable and executable by everyone
sudo chmod 777 /mnt
sudo setfacl -m d:u::rwx,d:g::rwx,d:o::rwx /mnt

# unmount the drive
sudo umount /mnt

The Maximum Compatibility Solution: GNU/Linux & Other Operating Systems (fat32)

Pros:

1. Works out of the box on near all modern operating systems
2. No driver packages to install due to patent restrictions

Negatives:

1. Filesystem does not support files over 4GB in size
2. Major operating system support limits partitions to 2TB in size
3. No security controls (but is probably what you want)

This is by far the best supported solution, but may not be desirable for users with drives over 2TB in size or needing to write files larger than 4GB in size.

# Use your package manager (example: Software Center) or appropriate distribution command to install gparted
sudo apt-get install gparted

# Open gparted
sudo gparted

# Select your drive from the drop down menu on the right

# Go to Device > Create Partition Table

# Select a partition table type (msdos or gpt) and click apply

# Go to Partition > New

# Select fat32 under File system, enter a partition name, and label (or whichever fields are available) and click Add

# Click Apply

# When pending operations are completed click Close and exit out of the application

Decent Compatibility Solution for Larger Drives: GNU/Linux & Other Operating Systems (ntfs)

Pros:

1. Works out of the box on near all major modern desktop operating systems
2. No driver packages to install due to patent restrictions
3. Supports files over 4GB
4. Supports drives up 256TB
5. No permission issues

Negatives:

1. Read only support on some operating systems (GNU/Linux has support for read & write)
2. Relies on a reverse engineered driver that may introduce a slight risk to data
3. Not supported on many devices such as digital cameras, printers, etc

This is a decent solution for users who need to format a large drive over 2TB in size and maintain compatibility with Microsoft Windows.

# Use your package manager (example: Software Center) or appropriate distribution command to install gparted
sudo apt-get install gparted

# Open gparted
sudo gparted

# Select your drive from the drop down menu on the right

# Go to Device > Create Partition Table

# Select a partition table type (gpt) and click apply

# Go to Partition > New

# Select ntfs under File system, enter a partition name, and label (or whichever fields are available) and click Add

# Click Apply

# When pending operations are completed click Close and exit out of the application