Ho una nuovissima installazione di CentOS 6, che ha un collegamento simbolico nella radice del documento ai miei file di sviluppo:
[[email protected] html]# ls -l
total 4
-rwxrwxrwx. 1 root root 0 Sep 18 20:16 index.html
-rwxrwxrwx. 1 root root 17 Sep 18 20:16 index.php
lrwxrwxrwx. 1 root root 24 Sep 18 20:19 refresh-app -> /home/billy/refresh-app/
Il mio httpd.conf ha questo:
<Directory "/">
Options All
AllowOverride None
Order allow,deny
Allow from all
</directory>
La destinazione del collegamento simbolico ha i permessi che dovrebbero consentire ad Apache di leggere tutto ciò che vuole:
[[email protected] billy]# ls -l
total 40 (Some entries were omitted because the list was too long
drwxr-xr-x. 7 billy billy 4096 Sep 18 20:03 refresh-app
Ho anche provato a disabilitare SELinux cambiando /etc/selinux/conf
:
SELINUX=disabled
Tuttavia, qualunque cosa io faccia, quando qualcuno tenta di accedere a quel link, http://localhost/refresh-app/
, ricevo una pagina di errore 403 FORBIDDEN e questa è scritta nel /var/log/httpd/error_log
:
Symbolic link not allowed or link target not accessible
Perché Apache non può accedere alla destinazione del collegamento simbolico?
Risposta accettata:
Trovato il problema. Si scopre che Apache vuole accedere non solo alla directory che sto servendo, /home/billy/refresh-app/
, ma anche tutte le directory superiori, ovvero /home/billy/
, /home
e /
. (Non ho idea del perché... concedere a qualcuno l'accesso a una sottodirectory non dovrebbe richiedere la concessione di autorizzazioni a tutto ciò che si trova al di sopra di quella sottodirectory...)
Immagino che stia cercando .htaccess
o qualcosa del genere, o forse *nix è strano su come tratta i permessi per la trasversalità delle directory.