64 lines
2.2 KiB
Plaintext
64 lines
2.2 KiB
Plaintext
|
|
####
|
||
|
|
# Copyright 2020 Hewlett Packard Enterprise Development LP.
|
||
|
|
# Copyright 2021 Intel Corporation
|
||
|
|
#
|
||
|
|
# Add a basic class to add a privileged user from an ssh
|
||
|
|
# standpoint and a public key passed as an input parameter
|
||
|
|
# from the local.conf file
|
||
|
|
# Example:
|
||
|
|
# INHERIT += "phosphor-deploy-ssh-keys"
|
||
|
|
#
|
||
|
|
# SSH_KEYS = "vejmarie:/home/openbmc/openbmc/meta-hpe/keys/test.pub"
|
||
|
|
# or
|
||
|
|
# SSH_KEYS = "vejmarie:/home/openbmc/openbmc/meta-hpe/keys/test.pub;root:/path/to/id_rsa.pub"
|
||
|
|
####
|
||
|
|
|
||
|
|
inherit useradd_base
|
||
|
|
|
||
|
|
IMAGE_PREPROCESS_COMMAND += "deploy_local_user;"
|
||
|
|
|
||
|
|
deploy_local_user () {
|
||
|
|
if [ "${SSH_KEYS}" == "" ]; then
|
||
|
|
bbwarn "Trying to deploy SSH keys but input variable is empty (SSH_KEYS)"
|
||
|
|
return
|
||
|
|
fi
|
||
|
|
|
||
|
|
ssh_keys="${SSH_KEYS}"
|
||
|
|
while [ "${ssh_keys}" != "" ]; do
|
||
|
|
current_key=`echo "$ssh_keys" | cut -d ';' -f1`
|
||
|
|
ssh_keys=`echo "$ssh_keys" | cut -s -d ';' -f2-`
|
||
|
|
|
||
|
|
username=`echo "$current_key" | awk -F":" '{ print $1}'`
|
||
|
|
key_path=`echo "$current_key" | awk -F":" '{ print $2}'`
|
||
|
|
|
||
|
|
if [ ! -d ${IMAGE_ROOTFS}/home/${username} ]; then
|
||
|
|
perform_useradd "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} -p '' ${username}"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ ! -d ${IMAGE_ROOTFS}/home/${username}.ssh/ ]; then
|
||
|
|
install -d ${IMAGE_ROOTFS}/home/${username}/.ssh/
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [ ! -f ${IMAGE_ROOTFS}/home/${username}/.ssh/authorized_keys ]; then
|
||
|
|
install -m 0600 ${key_path} ${IMAGE_ROOTFS}/home/${username}/.ssh/authorized_keys
|
||
|
|
else
|
||
|
|
cat ${key_path} >> ${IMAGE_ROOTFS}/home/${username}/.ssh/authorized_keys
|
||
|
|
fi
|
||
|
|
|
||
|
|
uid=`cat ${IMAGE_ROOTFS}/etc/passwd | grep "${username}:" | awk -F ":" '{print $3}'`
|
||
|
|
guid=`cat ${IMAGE_ROOTFS}/etc/passwd | grep "${username}:" | awk -F ":" '{print $4}'`
|
||
|
|
|
||
|
|
chown -R ${uid}:${guid} ${IMAGE_ROOTFS}/home/${username}/.ssh
|
||
|
|
chmod 600 ${IMAGE_ROOTFS}/home/${username}/.ssh/authorized_keys
|
||
|
|
chmod 700 ${IMAGE_ROOTFS}/home/${username}/.ssh
|
||
|
|
|
||
|
|
is_group=`grep "priv-admin" ${IMAGE_ROOTFS}/etc/group || true`
|
||
|
|
|
||
|
|
if [ -z "${is_group}" ]; then
|
||
|
|
perform_groupadd "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} priv-admin"
|
||
|
|
fi
|
||
|
|
|
||
|
|
perform_usermod "${IMAGE_ROOTFS}" "-R ${IMAGE_ROOTFS} -a -G priv-admin ${username}"
|
||
|
|
done
|
||
|
|
}
|