Created the JPS file
commit
c72743825e
|
@ -0,0 +1,104 @@
|
|||
type: update
|
||||
name: Add SFTP User
|
||||
|
||||
targetNodes:
|
||||
nodeGroup: cp
|
||||
|
||||
user: root
|
||||
|
||||
globals:
|
||||
username: "user-${fn.random(10000,99999)}"
|
||||
password: ${fn.password(min)}
|
||||
|
||||
actions:
|
||||
add_sftp_user:
|
||||
cmd[${nodes.cp.master.id}]: |-
|
||||
# Extract the provided details
|
||||
USERNAME=${globals.username}
|
||||
PASSWORD=${fn.password(min)}
|
||||
ROOT_DIRECTORY=/var/www/webroot/ROOT
|
||||
ENABLE_SSH=false
|
||||
EMAILS=${user.email}
|
||||
|
||||
# Check if user already exists
|
||||
if id "$USERNAME" &>/dev/null; then
|
||||
echo '{"result": "error", "message": "Error: User $USERNAME already exists."}'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if home directory exists
|
||||
if [ -d "$ROOT_DIRECTORY" ]; then
|
||||
echo "Warning: Home directory $ROOT_DIRECTORY already exists."
|
||||
fi
|
||||
|
||||
# Detect the group of the home directory
|
||||
GROUP=$(stat -c '%G' $ROOT_DIRECTORY)
|
||||
|
||||
# Create the user with the detected group and appropriate home directory
|
||||
useradd -m -d $ROOT_DIRECTORY -g $GROUP $USERNAME
|
||||
|
||||
# Set the password for the user
|
||||
echo "$USERNAME:$PASSWORD" | chpasswd
|
||||
|
||||
# Ensure the user's home directory exists and has the correct permissions
|
||||
mkdir -p $ROOT_DIRECTORY
|
||||
chown $USERNAME:$GROUP $ROOT_DIRECTORY
|
||||
|
||||
# Reassign ownership of webroot path to root:detected_group
|
||||
chown -R root:$GROUP /var/www
|
||||
|
||||
# Add configuration to sshd_config
|
||||
echo "Match Group $GROUP" >> /etc/ssh/sshd_config
|
||||
echo " ChrootDirectory $ROOT_DIRECTORY" >> /etc/ssh/sshd_config
|
||||
echo " PasswordAuthentication yes" >> /etc/ssh/sshd_config
|
||||
echo " ForceCommand internal-sftp" >> /etc/ssh/sshd_config
|
||||
|
||||
# Set up bash access
|
||||
cd /var/www/webroot
|
||||
mkdir -p bin lib lib64
|
||||
cp /bin/bash bin/
|
||||
cp /lib64/libtinfo.so.5 /lib64/libdl.so.2 /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2 lib64/
|
||||
|
||||
# Restart SSH
|
||||
systemctl restart sshd
|
||||
|
||||
exit 0
|
||||
|
||||
success:
|
||||
email: "Username: ${globals.username}, Password: ${globals.password}"
|
||||
text:
|
||||
en: "Username: ${globals.username}, Password: ${globals.password}"
|
||||
|
||||
settings:
|
||||
sftpForm:
|
||||
fields:
|
||||
- type: string
|
||||
inputType: text
|
||||
name: username
|
||||
caption: Username
|
||||
placeholder: ${globals.username}
|
||||
disabled: true
|
||||
required: false
|
||||
- type: string
|
||||
inputType: password
|
||||
name: password
|
||||
caption: Password
|
||||
placeholder: ${fn.password(min)}
|
||||
disabled: true
|
||||
required: false
|
||||
- type: string
|
||||
inputType: text
|
||||
name: root_directory
|
||||
caption: Root Directory
|
||||
default: "/var/www/webroot/ROOT"
|
||||
required: true
|
||||
- type: checkbox
|
||||
name: enable_ssh
|
||||
caption: Also enable SSH access
|
||||
default: false
|
||||
|
||||
buttons:
|
||||
- settings: sftpForm
|
||||
action: add_sftp_user
|
||||
caption: Add SFTP User
|
||||
confirmText: "Are you sure you want to add this SFTP user?"
|
Loading…
Reference in New Issue