summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephano Cetola <stephano.cetola@linux.intel.com>2016-05-31 13:59:54 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-06-01 12:38:43 +0100
commit79be110c1fdfd0affe6a310b96e7107c4549d23c (patch)
tree3dcc7cd383e22ae57b458db4e022fb21411b9ba5
parentcdd764c005dc4352fa7a7d627495ac4e92215772 (diff)
downloadpoky-79be110c1fdfd0affe6a310b96e7107c4549d23c.tar.gz
systemd: allow add users as a rootfs postprocess cmd
Adding all the users / groups to systemd is only available for readonly file systems. This change allows users to add them to read / write file systems as well by specifying: ROOTFS_POSTPROCESS_COMMAND += "systemd_create_users" Also, add "--shell /sbin/nologin" to each user's add params. [ YOCTO #9497 ] (From OE-Core rev: 98a4c642444a524f547f5d978a28814d20c12354) Signed-off-by: Stephano Cetola <stephano.cetola@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/rootfs-postcommands.bbclass43
1 files changed, 20 insertions, 23 deletions
diff --git a/meta/classes/rootfs-postcommands.bbclass b/meta/classes/rootfs-postcommands.bbclass
index 95d28afa30..db8b551533 100644
--- a/meta/classes/rootfs-postcommands.bbclass
+++ b/meta/classes/rootfs-postcommands.bbclass
@@ -21,7 +21,7 @@ ROOTFS_POSTUNINSTALL_COMMAND =+ "write_image_manifest ; "
21POSTINST_LOGFILE ?= "${localstatedir}/log/postinstall.log" 21POSTINST_LOGFILE ?= "${localstatedir}/log/postinstall.log"
22# Set default target for systemd images 22# Set default target for systemd images
23SYSTEMD_DEFAULT_TARGET ?= '${@bb.utils.contains("IMAGE_FEATURES", "x11-base", "graphical.target", "multi-user.target", d)}' 23SYSTEMD_DEFAULT_TARGET ?= '${@bb.utils.contains("IMAGE_FEATURES", "x11-base", "graphical.target", "multi-user.target", d)}'
24ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "systemd", "set_systemd_default_target; ", "", d)}' 24ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "systemd", "set_systemd_default_target; systemd_create_users;", "", d)}'
25 25
26ROOTFS_POSTPROCESS_COMMAND += 'empty_var_volatile;' 26ROOTFS_POSTPROCESS_COMMAND += 'empty_var_volatile;'
27 27
@@ -30,7 +30,25 @@ ROOTFS_POSTPROCESS_COMMAND += 'empty_var_volatile;'
30SSH_DISABLE_DNS_LOOKUP ?= " ssh_disable_dns_lookup ; " 30SSH_DISABLE_DNS_LOOKUP ?= " ssh_disable_dns_lookup ; "
31ROOTFS_POSTPROCESS_COMMAND_append_qemuall = "${SSH_DISABLE_DNS_LOOKUP}" 31ROOTFS_POSTPROCESS_COMMAND_append_qemuall = "${SSH_DISABLE_DNS_LOOKUP}"
32 32
33 33systemd_create_users () {
34 for conffile in ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd.conf ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd-remote.conf; do
35 [ -e $conffile ] || continue
36 grep -v "^#" $conffile | sed -e '/^$/d' | while read type name id comment; do
37 if [ "$type" = "u" ]; then
38 useradd_params="--shell /sbin/nologin"
39 [ "$id" != "-" ] && useradd_params="$useradd_params --uid $id"
40 [ "$comment" != "-" ] && useradd_params="$useradd_params --comment $comment"
41 useradd_params="$useradd_params --system $name"
42 eval useradd --root ${IMAGE_ROOTFS} $useradd_params || true
43 elif [ "$type" = "g" ]; then
44 groupadd_params=""
45 [ "$id" != "-" ] && groupadd_params="$groupadd_params --gid $id"
46 groupadd_params="$groupadd_params --system $name"
47 eval groupadd --root ${IMAGE_ROOTFS} $groupadd_params || true
48 fi
49 done
50 done
51}
34 52
35# 53#
36# A hook function to support read-only-rootfs IMAGE_FEATURES 54# A hook function to support read-only-rootfs IMAGE_FEATURES
@@ -73,27 +91,6 @@ read_only_rootfs_hook () {
73 ${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh 91 ${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh
74 fi 92 fi
75 fi 93 fi
76
77 if ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "true", "false", d)}; then
78 # Update user database files so that services don't fail for a read-only systemd system
79 for conffile in ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd.conf ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd-remote.conf; do
80 [ -e $conffile ] || continue
81 grep -v "^#" $conffile | sed -e '/^$/d' | while read type name id comment; do
82 if [ "$type" = "u" ]; then
83 useradd_params=""
84 [ "$id" != "-" ] && useradd_params="$useradd_params --uid $id"
85 [ "$comment" != "-" ] && useradd_params="$useradd_params --comment $comment"
86 useradd_params="$useradd_params --system $name"
87 eval useradd --root ${IMAGE_ROOTFS} $useradd_params || true
88 elif [ "$type" = "g" ]; then
89 groupadd_params=""
90 [ "$id" != "-" ] && groupadd_params="$groupadd_params --gid $id"
91 groupadd_params="$groupadd_params --system $name"
92 eval groupadd --root ${IMAGE_ROOTFS} $groupadd_params || true
93 fi
94 done
95 done
96 fi
97} 94}
98 95
99# 96#