portable: fail attach/reattach if the profile does not exist
Before this commit, if you attach a portable service using a profile that doesn't exist, it just doesn't add the profile dropin and no warning nor anything is shown: $ portablectl attach -p nonexistent xxx (Matching unit files with prefix 'xxx'.) Created directory /etc/systemd/system.attached. Created directory /etc/systemd/system.attached/xxx-capsule.service.d. Written /etc/systemd/system.attached/xxx-capsule.service.d/20-portable.conf. Copied /etc/systemd/system.attached/xxx-capsule.service. Created symlink /etc/portables/xxx.raw → /var/lib/portables/xxx.raw. $ ls /etc/systemd/system.attached/xxx-capsule.service.d/ 20-portable.conf The 10-profile.conf is not added. If no profile is attached, the /run bind mount is not added and then lot of things inside fail in ways that don't make sense. This patch just makes portable_attach() and reattach check the profile exists. If it doesn't exist, it shows this error now: # portablectl -p doesntexists reattach xxx (Matching unit files with prefix 'xxx'.) ReattachImage failed: Profile 'doesntexists' does not exist, refusing. (Available profiles are: default, nonetwork, strict, trusted) In reattach we do it early, before detach, so we don't detach and then fail to attach it and leave the service detached. An empty profile name is rejected too by the call to filename_is_valid(). portablectl already rejects empty profile names. Please note that we don't change install_profile_dropin(), as that skips non-existing profiles because that is done at the unit type level and it's okay if it doesn't exist for some unit types. For example, /usr/lib/systemd/portable/profile/trusted/ ships a service.conf, but not timer.conf, socket.conf, etc. (cherry picked from commit 5642eb3d848300f7225dff25fdd82940e55101c9)
This commit is contained in:
committed by
Luca Boccassi
parent
2832b3f2c9
commit
92d54a0d3d
+2
-1
@@ -320,7 +320,8 @@
|
||||
<term><option>--profile=<replaceable>PROFILE</replaceable></option></term>
|
||||
|
||||
<listitem><para>When attaching an image, select the profile to use. By default, the <literal>default</literal>
|
||||
profile is used. For details about profiles, see below.</para>
|
||||
profile is used. Attaching fails if the selected profile does not exist. For details about profiles, see
|
||||
below.</para>
|
||||
|
||||
<xi:include href="version-info.xml" xpointer="v239"/></listitem>
|
||||
</varlistentry>
|
||||
|
||||
Reference in New Issue
Block a user