Set permissions only on files copied from /etc/skel/

This commit is contained in:
Héctor Molinero Fernández
2023-03-03 18:56:40 +01:00
parent e62ab29a7c
commit ac49f16646
2 changed files with 16 additions and 5 deletions

View File

@@ -423,6 +423,7 @@ ENV UNPRIVILEGED_USER_NAME=user
ENV UNPRIVILEGED_USER_PASSWORD=password
ENV UNPRIVILEGED_USER_GROUPS=
ENV UNPRIVILEGED_USER_SHELL=/bin/bash
ENV UNPRIVILEGED_USER_HOME=/home/user/
ENV XRDP_TLS_KEY_PATH=/etc/xrdp/key.pem
ENV XRDP_TLS_CRT_PATH=/etc/xrdp/cert.pem
ENV ENABLE_XDUMMY=false

View File

@@ -32,6 +32,7 @@ if ! getent passwd "${UNPRIVILEGED_USER_UID:?}" >/dev/null 2>&1; then
--gid "${UNPRIVILEGED_USER_GID:?}" \
--groups "${UNPRIVILEGED_USER_GROUPS?}" \
--shell "${UNPRIVILEGED_USER_SHELL:?}" \
--home-dir "${UNPRIVILEGED_USER_HOME:?}" \
--create-home \
"${UNPRIVILEGED_USER_NAME:?}"
fi
@@ -43,11 +44,20 @@ else
passwd -d "${UNPRIVILEGED_USER_NAME:?}"
fi
# Copy /etc/skel/ to unprivileged user home if certain files do not exist
UNPRIVILEGED_USER_HOME=$(getent passwd "${UNPRIVILEGED_USER_NAME:?}" | cut -d: -f6)
if [ ! -e "${UNPRIVILEGED_USER_HOME:?}"/.profile ]; then
cp -aT /etc/skel/ "${UNPRIVILEGED_USER_HOME:?}" 2>/dev/null ||:
chown -R "${UNPRIVILEGED_USER_NAME:?}:" "${UNPRIVILEGED_USER_HOME:?}" 2>/dev/null ||:
if [ -w "${UNPRIVILEGED_USER_HOME:?}" ]; then
# Copy /etc/skel/ to unprivileged user home if certain files do not exist
if [ ! -e "${UNPRIVILEGED_USER_HOME:?}"/.profile ]; then
cp -aT /etc/skel/ "${UNPRIVILEGED_USER_HOME:?}" ||:
find /etc/skel/ -mindepth 1 -exec sh -c 'chown "$1:" "$2/${3#/etc/skel/}"' _ "${UNPRIVILEGED_USER_NAME:?}" "${UNPRIVILEGED_USER_HOME:?}" '{}' ';'
fi
# Set unprivileged user home permissions
if [ "$(stat -c '%u' "${UNPRIVILEGED_USER_HOME:?}")" != "${UNPRIVILEGED_USER_UID:?}" ]; then
chown "${UNPRIVILEGED_USER_NAME:?}:" "${UNPRIVILEGED_USER_HOME:?}"
fi
if [ "$(stat -c '%a' "${UNPRIVILEGED_USER_HOME:?}")" != '750' ]; then
chmod 750 "${UNPRIVILEGED_USER_HOME:?}"
fi
fi
# Create /run/dbus/ directory if it does not exist