My Experience with systemd-homed
I read about systemd-homed and I found the concept behind it interesting.
There was no personal need for it, but I wanted to try it out.
The points that peaked my interest:
- Portable home directory? Meh
- Encrypted home directory locked during sleep? Sounds good!
Setup
systemctl enable systemd-homed.servicesystemctl start systemd-homed.servicesudo homectl create <username>sudo homectl update <username> --shell=/usr/bin/zshhomectl update username --member-of=sudo
So far so good. PAM authentication isn’t working by default tho. We have to change that.
After changing my PAM configs and rebooting for at least 4 times, I was able to login via GDM.
Issue #1: Adding User to Group
How do I add a user to a group without manually copying the user’s current groups?
The command homectl update --member-of=<...> overrides all current groups.
So if the user currently is in the sudo group and I want to add it to the docker group, I need to write:
sudo homectl update <user> --member-of="sudo,docker"Either I am too dumb to read a manual or a “append” command does not exist.
With some scripting and after installing jq to parse homed’s output — which is in json — I came up with a terrifying oneliner to append a user to a group:
sudo homectl update <user> $(homectl inspect <user> --json=short | jq '.memberOf | join(",")'),<group to add>Issue #2: Lockscreen not Working
Coming back to my desktop after locking it, I am trying to login. It fails. I must have messed up the pam config again.
*Kill xsecurelock via another terminal*
After some testing I found out that only xsecurelock is not able to login. GDM and virtual terminals work.
Seems like I hit on another bug.
Issue #3: Where Did My Storage Space Go?
- *Trying to copy huge libvirt image to
/var/lib/…* cp: error writing '/var/lib/…': No space left on devicedf -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/sdb5 118G 118G 0 100% /
/dev/mapper/home-<user> 90G 20G 70G 22% /home/<user>
🤦♂️🤦♂️
Ok, maybe quickly resizing it?
# homectl update <user> --disk-size=50G`
Operation on home sh failed: File systems of this type can only be shrinked offline