Partitioning /home for desktop workstation (HDD+SSD)
Solution 1:
The following steps describe how to mount the partition on your HDD
below /mnt/archive
and then add bind mounts to the home directories
of two users, alice and bob. The home directories themselves are
still on another partition.
All commands must be issued as user root
.
-
Determine UUID of
archive
partition:lsblk -fs NAME FSTYPE LABEL UUID MOUNTPOINT sda5 ext4 slash 467ddc36-vvvv-xxxx-yyyy-zzzzzzzzzzzz / └─sda sda6 ext4 home a87c2c2d-vvvv-xxxx-yyyy-zzzzzzzzzzzz /home └─sda sdb8 ext4 archive 291bd44c-vvvv-xxxx-yyyy-zzzzzzzzzzzz └─sdb ...
In my case, I have
/
and/home
onsda
and an unmounted partition labelledarchive
onsdb8
. For the purpose of this post we assumesda
is an SSD andsdb
is an HDD. -
Mount the archive partition into an empty directory, say
/mnt/archive
:mkdir /mnt/archive mount UUID=291bd44c-vvvv-xxxx-yyyy-zzzzzzzzzzzz /mnt/archive chown root:root /mnt/archive chmod 750 /mnt/archive
-
Create user specific folders below
/mnt/archive
(i.e. on the HDD) for users alice and bob and adjust the permissions so that only they can access these directories. Note that the directories are now on the partitionarchive
on the HDD:mkdir /mnt/archive/alice chown alice:alice /mnt/archive/alice chmod 750 /mnt/archive/alice mkdir /mnt/archive/bob chown bob:bob /mnt/archive/bob chmod 750 /mnt/archive/bob
-
Create
archive
folders in their home directories. Don't worry because the directories are owned byroot
. This does not hurt because alice isnt't supposed to put anything in that directory. The directory/home/alice/archive
only serves as a location where to bind-mount the actual/mnt/archive/alice
to and when it is mounted, the permissions and ownership of/mnt/archive/alice
apply.mkdir /home/alice/archive mkdir /home/bob/archive
-
bind mount
/mnt/archive/alice
to/home/alice/archive
:mount -o bind /mnt/archive/alice /home/alice/archive mount -o bind /mnt/archive/bob /home/bob/archive
-
When satified, add the following lines to
/etc/fstab
to mount the partition automatically upon boot:# The /archive partition UUID=291bd44c-vvvv-xxxx-yyyy-zzzzzzzzzzzz /mnt/archive ext4 defaults 0 2 # bind mounts for alice and bob: /mnt/archive/alice /home/alice/archive none bind 0 0 /mnt/archive/bob /home/bob/archive none bind 0 0
Before the bind mount is done, alice will just see a directory owned by root in her home directory. The directory is empty and she cannot (and should not) put files in there:
alice@ubuntu:~$ ll
total 16
drwxr-xr-x 2 root root 4096 Jan 25 12:51 archive
-rw-r--r-- 1 alice alice 8980 Jan 25 12:43 examples.desktop
After the bind mount is done (mount -o bind /mnt/archive/alice /home/alice/archive
),
alice will see the directory /mnt/archive/alice
in her home directory instead, including
the permissions of /mnt/archive/alice
:
alice@ubuntu:~$ ll
total 16
drwxr-x--- 2 alice alice 4096 Jan 25 13:06 archive
-rw-r--r-- 1 alice alice 8980 Jan 25 12:43 examples.desktop
She can do whatever she likes in and with that archive
directory and everything
will happen on the partition on the HDD.
To undo the above steps, use the following commands:
# undo bind-mounts:
umount /home/alice/archive
umount /home/bob/archive
# unmount actual partition:
umount /mnt/archive