blob: 20b7991dcbab8f76cd0048c5ba2c9241920247f5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#!/bin/ash -- sourced
# Required vars from context:
# USER_UID
# USER_GID
# USER_NAME
# 1) Sanitize the user's home directory, stored and updated in USER_HOME
# 2) Write entry to /etc/passwd if it doesn't exist
# Fixup local home path
if [ -z "$USER_HOME" ] || [ "${USER_HOME:0:1}" = '\' ] || [ "${USER_HOME:1:1}" = ':' ]; then
USER_HOME="/home/_temp-home/$USER_NAME"
else
# Make sure it's absolute, replace spaces, '\' and ':' by '_'
USER_HOME=$(echo "$USER_HOME" | sed -r 's,^(/*)(.*)$,/\2,;s/(:|\s|\\)+/_/g')
fi
readonly USER_HOME
# Add/replace passwd entry if it doesn't exist yet
PASSWD="${USER_NAME}:x:${USER_UID}:${USER_GID}:${USER_NAME}:${USER_HOME}:/bin/bash"
readonly PASSWD
if ! grep -Fxq -- "${PASSWD}" /etc/passwd; then
sed -i "/^${USER_NAME}:/d" /etc/passwd
echo "${PASSWD}" >> /etc/passwd
fi
|