@@ -10,25 +10,31 @@ LANDO_MODULE="userperms"
10
10
add_user () {
11
11
local USER=$1
12
12
local GROUP=$2
13
- local WEBROOT_UID=$3
14
- local WEBROOT_GID=$4
15
- if ! getent group | cut -d: -f1 | grep " $GROUP " > /dev/null 2>&1 ; then addgroup -g " $WEBROOT_GID " " $GROUP " 2> /dev/null; fi
16
- if ! id -u " $USER " > /dev/null 2>&1 ; then adduser -H -D -G " $GROUP " -u " $WEBROOT_UID " " $USER " " $GROUP " 2> /dev/null; fi
13
+ local UID=$3
14
+ local GID=$4
15
+ local DISTRO=$5
16
+ local EXTRAS=" $6 "
17
+ if [ " $DISTRO " = " alpine" ]; then
18
+ if ! groups | grep " $GROUP " > /dev/null 2>&1 ; then addgroup -g " $GID " " $GROUP " 2> /dev/null; fi
19
+ if ! id -u " $GROUP " > /dev/null 2>&1 ; then adduser -H -D -G " $GROUP " -u " $UID " " $USER " " $GROUP " 2> /dev/null; fi
20
+ else
21
+ if ! groups | grep " $GROUP " > /dev/null 2>&1 ; then groupadd --force --gid " $GID " " $GROUP " 2> /dev/null; fi
22
+ if ! id -u " $GROUP " > /dev/null 2>&1 ; then useradd --gid " $GID " --uid " $UID " $EXTRAS " $USER " 2> /dev/null; fi
23
+ fi ;
17
24
}
18
25
19
26
# Verify user
20
27
verify_user () {
21
28
local USER=$1
22
29
local GROUP=$2
30
+ local DISTRO=$3
23
31
id -u " $USER " > /dev/null 2>&1
24
- groups " $USER " | grep " $GROUP " > /dev/null 2>&1
25
- if command -v chsh > /dev/null 2>&1 ; then
26
- if command -v /bin/bash > /dev/null 2>&1 ; then
27
- chsh -s /bin/bash $USER || true
28
- fi ;
29
- else
32
+ groups | grep " $GROUP " > /dev/null 2>&1
33
+ if [ " $DISTRO " = " alpine" ]; then
30
34
true
31
35
# is there a chsh we can use? do we need to?
36
+ else
37
+ chsh -s /bin/bash $USER || true
32
38
fi ;
33
39
}
34
40
@@ -53,10 +59,11 @@ reset_user() {
53
59
if [ " $( id -u $USER ) " != " $HOST_UID " ]; then
54
60
usermod -o -u " $HOST_UID " " $USER " 2> /dev/null
55
61
fi
56
- groupmod -o - g " $HOST_GID " " $GROUP " 2> /dev/null || true
57
- if [ " $( id -g $USER ) " != " $HOST_GID " ]; then
62
+ groupmod -g " $HOST_GID " " $GROUP " 2> /dev/null || true
63
+ if [ " $( id -u $USER ) " != " $HOST_UID " ]; then
58
64
usermod -g " $HOST_GID " " $USER " 2> /dev/null || true
59
65
fi
66
+ usermod -a -G " $GROUP " " $USER " 2> /dev/null || true
60
67
fi ;
61
68
# If this mapping is incorrect lets abort here
62
69
if [ " $( id -u $USER ) " != " $HOST_UID " ]; then
@@ -91,6 +98,7 @@ perm_sweep() {
91
98
nohup find /user/.ssh -not -user $USER -execdir chown $USER :$GROUP {} \+ > /tmp/perms.out 2> /tmp/perms.err &
92
99
nohup find /var/www -not -user $USER -execdir chown $USER :$GROUP {} \+ > /tmp/perms.out 2> /tmp/perms.err &
93
100
nohup find /usr/local/bin -not -user $USER -execdir chown $USER :$GROUP {} \+ > /tmp/perms.out 2> /tmp/perms.err &
101
+ nohup chmod -R 755 /var/www > /dev/null 2>&1 &
94
102
95
103
# Lets also make some /usr/locals chowned
96
104
nohup find /usr/local/lib -not -user $USER -execdir chown $USER :$GROUP {} \+ > /tmp/perms.out 2> /tmp/perms.err &
0 commit comments