Skip to content

Commit 86f529f

Browse files
committed
fix bad gid on chown, add sftp-data mouting logic for users and sudo admins.
1 parent 51e68fa commit 86f529f

File tree

1 file changed

+44
-1
lines changed

1 file changed

+44
-1
lines changed

files/create-sftp-user

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ if [ -n "$gid" ]; then
6565
useraddOptions+=(--gid "$gid")
6666
fi
6767

68+
log "useradd ${useraddOptions[@]} $user"
6869
useradd "${useraddOptions[@]}" "$user"
6970
mkdir -p "/home/$user"
7071
chown root:root "/home/$user"
@@ -97,9 +98,51 @@ if [ -n "$dir" ]; then
9798
if [ ! -d "$dirPath" ]; then
9899
log "Creating directory: $dirPath"
99100
mkdir -p "$dirPath"
100-
chown -R "$uid:#gid" "$dirPath"
101+
chown -R "$uid:$gid" "$dirPath"
101102
else
102103
log "Directory already exists: $dirPath"
103104
fi
104105
done
105106
fi
107+
108+
###### MODS for bind mounts #####
109+
# mount user dir
110+
dataPath="/sftp-data"
111+
userDataDir="$dataPath/users/$user"
112+
homeDataDir="/home/$user/data"
113+
114+
# always create a data dir by default in the users home.
115+
if [ ! -d "$homeDataDir" ]; then
116+
log "- mkdir -p $homeDataDir"
117+
mkdir -p "$homeDataDir"
118+
chown -R "$uid:$gid" "$homeDataDir"
119+
fi
120+
#mod user so the data dir is their home
121+
usermod -d /data "$user"
122+
123+
if [ -d "$dataPath" ]; then
124+
log "- has $dataPath"
125+
# for users mount the data/users/%u directory
126+
if [ "$gid" = "100" ]; then
127+
if [ ! -d "$userDataDir" ]; then
128+
log "- mkdir -p $userDataDir"
129+
mkdir -p "$userDataDir"
130+
fi
131+
log "- mount --bind $userDataDir $homeDataDir"
132+
# Remember permissions, you may have to fix them:
133+
# chown -R :100 "$userDataDir"
134+
mount --bind "$userDataDir" "$homeDataDir"
135+
#make sure permissions are good on users dir
136+
chown -R :100 "$dataPath"
137+
fi
138+
# for sudo (27) admins mount the data directory
139+
if [ "$gid" = "27" ] ; then
140+
# chown -R :100 "$userDataDir"
141+
mount --bind "$dataPath" "$homeDataDir"
142+
#also make sure that they are assigned to the user group
143+
usermod -g 100 "$user"
144+
usermod -a -G 27 "$user"
145+
fi
146+
chown -R :100 "$dataPath"
147+
chmod -R 775 "$dataPath"
148+
fi

0 commit comments

Comments
 (0)