| <?xml version='1.0'?> <!--*-nxml-*--> |
| <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" |
| "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> |
| <!-- SPDX-License-Identifier: LGPL-2.1-or-later --> |
| |
| <refentry id="systemd-homed.service" conditional='ENABLE_HOMED'> |
| |
| <refentryinfo> |
| <title>systemd-homed.service</title> |
| <productname>systemd</productname> |
| </refentryinfo> |
| |
| <refmeta> |
| <refentrytitle>systemd-homed.service</refentrytitle> |
| <manvolnum>8</manvolnum> |
| </refmeta> |
| |
| <refnamediv> |
| <refname>systemd-homed.service</refname> |
| <refname>systemd-homed</refname> |
| <refpurpose>Home Area/User Account Manager</refpurpose> |
| </refnamediv> |
| |
| <refsynopsisdiv> |
| <para><filename>systemd-homed.service</filename></para> |
| <para><filename>/usr/lib/systemd/systemd-homed</filename></para> |
| </refsynopsisdiv> |
| |
| <refsect1> |
| <title>Description</title> |
| |
| <para><command>systemd-homed</command> is a system service that may be used to create, remove, change or |
| inspect home areas (directories and network mounts and real or loopback block devices with a filesystem, |
| optionally encrypted).</para> |
| |
| <para>Most of <command>systemd-homed</command>'s functionality is accessible through the |
| <citerefentry><refentrytitle>homectl</refentrytitle><manvolnum>1</manvolnum></citerefentry> command.</para> |
| |
| <para>See the <ulink url="https://systemd.io/HOME_DIRECTORY">Home Directories</ulink> documentation for |
| details about the format and design of home areas managed by |
| <filename>systemd-homed.service</filename>.</para> |
| |
| <para>Each home directory managed by <filename>systemd-homed.service</filename> synthesizes a local user |
| and group. These are made available to the system using the <ulink |
| url="https://systemd.io/USER_GROUP_API">User/Group Record Lookup API via Varlink</ulink>, and thus may be |
| browsed with |
| <citerefentry><refentrytitle>userdbctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para> |
| </refsect1> |
| |
| <refsect1> |
| <title>Key Management</title> |
| |
| <para>User records are cryptographically signed with a public/private key pair (the signature is part of |
| the JSON record itself). For a user to be permitted to log in locally the public key matching the |
| signature of their user record must be installed. For a user record to be modified locally the private |
| key matching the signature must be installed locally, too. The keys are stored in the |
| <filename>/var/lib/systemd/home/</filename> directory:</para> |
| |
| <variablelist> |
| |
| <varlistentry> |
| <term><filename>/var/lib/systemd/home/local.private</filename></term> |
| |
| <listitem><para>The private key of the public/private key pair used for local records. Currently, |
| only a single such key may be installed.</para></listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><filename>/var/lib/systemd/home/local.public</filename></term> |
| |
| <listitem><para>The public key of the public/private key pair used for local records. Currently, |
| only a single such key may be installed.</para></listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><filename>/var/lib/systemd/home/*.public</filename></term> |
| |
| <listitem><para>Additional public keys. Any users whose user records are signed with any of these keys |
| are permitted to log in locally. An arbitrary number of keys may be installed this |
| way.</para></listitem> |
| </varlistentry> |
| </variablelist> |
| |
| <para>All key files listed above are in PEM format.</para> |
| |
| <para>In order to migrate a home directory from a host <literal>foobar</literal> to another host |
| <literal>quux</literal> it is hence sufficient to copy |
| <filename>/var/lib/systemd/home/local.public</filename> from the host <literal>foobar</literal> to |
| <literal>quux</literal>, maybe calling the file on the destination <filename |
| index="false">/var/lib/systemd/home/foobar.public</filename>, reflecting the origin of the key. If the |
| user record should be modifiable on <literal>quux</literal> the pair |
| <filename>/var/lib/systemd/home/local.public</filename> and |
| <filename>/var/lib/systemd/home/local.private</filename> need to be copied from <literal>foobar</literal> |
| to <literal>quux</literal>, and placed under the identical paths there, as currently only a single |
| private key is supported per host. Note of course that the latter means that user records |
| generated/signed before the key pair is copied in, lose their validity.</para> |
| </refsect1> |
| |
| <refsect1> |
| <title>See Also</title> |
| <para> |
| <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>homed.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>homectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>pam_systemd_home</refentrytitle><manvolnum>8</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>userdbctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>org.freedesktop.home1</refentrytitle><manvolnum>5</manvolnum></citerefentry> |
| </para> |
| </refsect1> |
| </refentry> |