403 Forbidden you don't have permission to access on this server appears when attempting to access a resource from a web server, such as an HTML page (index.html) or an image file (foo.jpg).
The minimal permission needed for the file being requested is -r--r--r-- (read only).
~]# ll /var/www/html -r--r--r-- 1 root root 1473 Dec 29 02:44 index.html
Use the sestatus command to determine if SELinux is enforcing, permissive, or disabled.
~]# sestatus Current mode: enforcing
If SELinux is enforcing, use the ls -lZ command to view the SELinux permissions on the files being requested. The type needs to be httpd_sys_content_t.
~]# ls -lZ /var/www/html -r--r--r-- 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
If the type is not httpd_sys_content_t, use apt-get, dnf, or yum to install policycoreutils-python. This package contains semanage.
~]# dnf -y install policycoreutils-python
The semanage command can then be used to set the /var/www directory to have SELinux type httpd_sys_content_t. This is a permanent change, meaning this setting will remain in tact after the system is rebooted.
~]# semanage fcontext -a -t httpd_sys_content_t /var/www
The restorecon command can then be used to update every file and directory below /var/www to have SELinux type httpd_sys_content_t.
~]# restorecon -Rv /var/www
Check the server configuration file (eg. httpd.conf). Check to see if the directory being requested is granted.
<Directory /> Require all granted </Directory>
There may also be other lines in the server configuration file that need to be adjusted. For example, if a required include is commented out, that may cause 403.
# Include /path/to/file