User Management

Adding a New User

To grant a new user access to both WebDAV and FTP, perform the following steps.

1. Create System User

Debian
sudo adduser --shell /usr/sbin/nologin --disabled-password --gecos "" newuser
sudo passwd newuser
CentOS / RHEL
sudo adduser -s /bin/nologin newuser
sudo passwd newuser

2. Add to Web Server Group

Debian
sudo usermod -aG www-data newuser
CentOS / RHEL
sudo usermod -aG nginx newuser

3. Create WebDAV Password

# Add to existing file (no -c flag!)
sudo htpasswd /etc/nginx/.htpasswd newuser
Do not use the -c flag when adding to an existing file — it will overwrite all existing users.

4. Configure FTP Access

# Add to allowed user list
echo "newuser" | sudo tee -a /etc/vsftpd/user_list

# Create per-user config
echo "local_root=/var/www/html/webdav/" | sudo tee /etc/vsftpd/users/newuser

# Set directory permissions
sudo setfacl -R -m u:newuser:rwx /var/www/html/webdav/
sudo setfacl -R -d -m u:newuser:rwx /var/www/html/webdav/

5. Restart Services

sudo systemctl restart vsftpd
Nginx does not need a restart for htpasswd changes — they are read on each request.

Removing a User

# Remove WebDAV password
sudo htpasswd -D /etc/nginx/.htpasswd olduser

# Remove from FTP user list
sudo sed -i '/^olduser$/d' /etc/vsftpd/user_list

# Remove per-user FTP config
sudo rm -f /etc/vsftpd/users/olduser

# Remove ACL entries
sudo setfacl -R -x u:olduser /var/www/html/webdav/

# Optionally remove system user
sudo userdel olduser

# Restart FTP
sudo systemctl restart vsftpd

Changing a Password

WebDAV Password

# Update password (no -c flag)
sudo htpasswd /etc/nginx/.htpasswd existinguser

FTP Password (System Password)

sudo passwd existinguser

Listing Users

WebDAV Users

# Show all WebDAV users
cut -d: -f1 /etc/nginx/.htpasswd

FTP Users

# Show allowed FTP users
cat /etc/vsftpd/user_list