Skip to content

Commit 6430a8b

Browse files
committed
Test if user exists before trying to create it
If so, guess user homedir instead of hardcoding to /home
1 parent 5f9afe7 commit 6430a8b

1 file changed

Lines changed: 31 additions & 5 deletions

File tree

‎sshcommand‎

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,16 @@ case "$1" in
1313
exit -1
1414
fi
1515
USER="$2"; COMMAND="$3"
16-
USERHOME="$HOME_DIR/$USER"
17-
useradd -d $USERHOME $USER || true
16+
17+
getent passwd $USER > /dev/null 2>&1
18+
19+
if [ $? -eq 0 ]; then
20+
USERHOME=$(bash <<< "echo ~$USER")
21+
else
22+
USERHOME="$HOME_DIR/$USER"
23+
useradd -d $USERHOME $USER || true
24+
fi
25+
1826
mkdir -p "$USERHOME/.ssh"
1927
touch $USERHOME/.ssh/authorized_keys
2028
echo "$COMMAND" > "$USERHOME/.sshcommand"
@@ -27,10 +35,19 @@ case "$1" in
2735
exit -1
2836
fi
2937
USER="$2"; NAME="$3"
38+
39+
getent passwd $USER > /dev/null 2>&1
40+
41+
if [ $? -eq 0 ]; then
42+
USERHOME=$(bash <<< "echo ~$USER")
43+
else
44+
exit -1
45+
fi
46+
3047
KEY=$(cat)
3148
FINGERPRINT=$(ssh-keygen -lf /dev/stdin <<< $(echo $KEY) | awk '{print $2}')
32-
KEY_PREFIX="command=\"FINGERPRINT=$FINGERPRINT NAME=$NAME \`cat $HOME_DIR/$USER/.sshcommand\` \$SSH_ORIGINAL_COMMAND\",no-agent-forwarding,no-user-rc,no-X11-forwarding,no-port-forwarding"
33-
echo "$KEY_PREFIX $KEY" >> "$HOME_DIR/$USER/.ssh/authorized_keys"
49+
KEY_PREFIX="command=\"FINGERPRINT=$FINGERPRINT NAME=$NAME \`cat $USERHOME/.sshcommand\` \$SSH_ORIGINAL_COMMAND\",no-agent-forwarding,no-user-rc,no-X11-forwarding,no-port-forwarding"
50+
echo "$KEY_PREFIX $KEY" >> "$USERHOME/.ssh/authorized_keys"
3451
echo $FINGERPRINT
3552
;;
3653

@@ -40,7 +57,16 @@ case "$1" in
4057
exit -1
4158
fi
4259
USER="$2"; NAME="$3"
43-
sed --in-place "/ NAME=$NAME /d" "$HOME_DIR/$USER/.ssh/authorized_keys"
60+
61+
getent passwd $USER > /dev/null 2>&1
62+
63+
if [ $? -eq 0]; then
64+
USERHOME=$(bash <<< "echo ~$USER")
65+
else
66+
exit -1
67+
fi
68+
69+
sed --in-place "/ NAME=$NAME /d" "$USERHOME/.ssh/authorized_keys"
4470
;;
4571

4672
help|*) # sshcommand help

0 commit comments

Comments
 (0)