blob: 006f1c810d37f5367f98fb12083db1aa0c4a63f1 (
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
LINE_PASS="${USER_NAME}:x:${USER_UID}:${USER_GID}:${USER_NAME}:${USER_HOME}:/bin/bash"
readonly LINE_PASS
if ! grep -Fxq -- "${LINE_PASS}" /etc/passwd; then
sed -i "/^${USER_NAME}:/d" /etc/passwd
echo "${LINE_PASS}" >> /etc/passwd
fi
|