Fixed user creation when group with the same id already exists
(cherry picked from commit 9fd6e070ff6d49b3a0fb4c4009a3072e2f007291)
This commit is contained in:
parent
b58c0a3b20
commit
274cd6349c
2 changed files with 14 additions and 8 deletions
|
@ -14,7 +14,7 @@ docker run -d \
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
Environment variables:
|
Environment variables:
|
||||||
- `USERS` - space and `|` separated list (optional, default: `ftp|alpineftp`)
|
- `USERS` - space and `|` separated list (optional, default: `alpineftp|alpineftp`)
|
||||||
- format `name1|password1|[folder1][|uid1] name2|password2|[folder2][|uid2]`
|
- format `name1|password1|[folder1][|uid1] name2|password2|[folder2][|uid2]`
|
||||||
- `ADDRESS` - external address witch clients can connect passive ports (optional, should resolve to ftp server ip address)
|
- `ADDRESS` - external address witch clients can connect passive ports (optional, should resolve to ftp server ip address)
|
||||||
- `MIN_PORT` - minimum port number to be used for passive connections (optional, default `21000`)
|
- `MIN_PORT` - minimum port number to be used for passive connections (optional, default `21000`)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#Remove all ftp users
|
#Remove all ftp users
|
||||||
#grep '/ftp/' /etc/passwd | cut -d':' -f1 | xargs -n1 deluser
|
grep '/ftp/' /etc/passwd | cut -d':' -f1 | xargs -r -n1 deluser
|
||||||
|
|
||||||
#Create users
|
#Create users
|
||||||
#USERS='name1|password1|[folder1][|uid1] name2|password2|[folder2][|uid2]'
|
#USERS='name1|password1|[folder1][|uid1] name2|password2|[folder2][|uid2]'
|
||||||
|
@ -14,11 +14,12 @@
|
||||||
#Default user 'ftp' with password 'alpineftp'
|
#Default user 'ftp' with password 'alpineftp'
|
||||||
|
|
||||||
if [ -z "$USERS" ]; then
|
if [ -z "$USERS" ]; then
|
||||||
USERS="amin|alpineftp"
|
USERS="alpineftp|alpineftp"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for i in $USERS ; do
|
for i in $USERS ; do
|
||||||
NAME=$(echo $i | cut -d'|' -f1)
|
NAME=$(echo $i | cut -d'|' -f1)
|
||||||
|
GROUP=$NAME
|
||||||
PASS=$(echo $i | cut -d'|' -f2)
|
PASS=$(echo $i | cut -d'|' -f2)
|
||||||
FOLDER=$(echo $i | cut -d'|' -f3)
|
FOLDER=$(echo $i | cut -d'|' -f3)
|
||||||
UID=$(echo $i | cut -d'|' -f4)
|
UID=$(echo $i | cut -d'|' -f4)
|
||||||
|
@ -29,11 +30,16 @@ for i in $USERS ; do
|
||||||
|
|
||||||
if [ ! -z "$UID" ]; then
|
if [ ! -z "$UID" ]; then
|
||||||
UID_OPT="-u $UID"
|
UID_OPT="-u $UID"
|
||||||
|
#Check if the group with the same ID already exists
|
||||||
|
GROUP=$(getent group $UID | cut -d: -f1)
|
||||||
|
if [ ! -z "$GROUP" ]; then
|
||||||
|
GROUP_OPT="-G $GROUP"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "$PASS\n$PASS" | adduser -h $FOLDER -s /sbin/nologin $UID_OPT $NAME
|
echo -e "$PASS\n$PASS" | adduser -h $FOLDER -s /sbin/nologin $UID_OPT $GROUP_OPT $NAME
|
||||||
mkdir -p $FOLDER
|
mkdir -p $FOLDER
|
||||||
chown $NAME:$NAME $FOLDER
|
chown $NAME:$GROUP $FOLDER
|
||||||
unset NAME PASS FOLDER UID
|
unset NAME PASS FOLDER UID
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue