Apache2 permissions “hack”

(Errors are fixed ^^)

It’s not stupid if [the last part] works, right? Right?

1. We need a new group: website
2. We need a user: frank
3. Simple website where everything is put into /var/www/html/

sudo addgroup website
sudo adduser frank website
sudo adduser frank www-data

Let’s see if Frank belongs to the right groups:

groups frank

The result should look something like

frank : frank cdrom floppy sudo audio dip website www-data video plugdev netdev

Let’s change some ownerships, directory first.

sudo chown -vR :website /var/www/html/

Now set the permissions right.

sudo chmod -vR g+w /var/www/html/

You should do a test now by doing the following:

cd /var/www/html/
echo "My server bring all the boys to the yard" > index.html

If you get an error, enter the following:

newgrp - website

This is, in my experience not permanent though, so if you keep having issues, just yeet it into the bash.bashrc file, at the bottom:

sudo nano /etc/bash.bashrc

add at the bottom:

if [[ -n $SSH_CONNECTION ]] ; then
newgrp - www-data
fi

 

Loading

Function to change ownership of the www folder

Just another snippet of code that can be implemented somewhere:

set-perms.sh
#!/bin/bash

# Function to change ownership of the www folder
change_ownership() {
    sudo chown -R "$1":www-data /var/www
    echo "Ownership of the www folder has been set to $1:www-data."
}

# Loop until a valid username is provided
while true; do
    # Prompt the user to enter the desired username
    read -p "Enter the username for permissions: " username

    # Check if the username provided exists
    if id "$username" &>/dev/null; then
        change_ownership "$username"
        break  # Exit the loop if a valid username is provided
    else
        echo "Error: User $username does not exist."
    fi
done

echo "done!"

To make the script executable:

sudo chmod +x set-perms.sh

and run it with

sudo ./set-perms.sh

Loading