it-swarm.com.de

Apache mit Symlink zum Ausgangsverzeichnis - Berechtigungsfehler

ich habe ein paar Probleme, mein /var/www/ mit einem neuen Webroot -Verzeichnis in meinem Home-Ordner zu verknüpfen. Ich denke, diese resultieren aus meinem Unverständnis der Linux-Berechtigungen.

Soweit mir bekannt ist, sollten Symlinks die Form des zu verlinkenden Verzeichnisses und des zu verlinkenden Verzeichnisses haben. In meinem Fall habe ich Folgendes ausgeführt:

Sudo ln -s ~/Webroot/* /var/www/

das hat irgendwie funktioniert, wenn ich ls auf /var/www/ starte. Ich kann alle Dateien in meinem Webroot Verzeichnis sehen.

Immer wenn ich versuche, eine Datei auszuführen, die sich in meinem Webroot -Ordner befindet, erhalte ich den Berechtigungsfehler 403, weil die Dateien in meinem Webroot-Verzeichnis von mir erstellt wurden und die Apache-Instanz als www-Daten ausgeführt wird ?

wenn dies der Fall ist, würde dies bedeuten, dass ich die Berechtigungen für jede von mir erstellte Datei ändern muss, um sie auszuführen?

Ich habe zuvor eine lokale Apache-Instanz ausgeführt, indem ich das Stammverzeichnis meines vhost-Standards auf den Ordner Webroot zeigte. In diesem Fall musste ich keine Berechtigungen ändern. Jede Hilfe wäre dankbar.

14
richzilla

Dies ist keine gute Vorgehensweise, da ich mit Weboide einverstanden bin. Es gibt jedoch einen einfachen Weg, um dieses Ziel zu erreichen.

1). Aktivieren Sie das Apache-Userdir-Modul.

Sudo  a2enmod userdir

dadurch wird das Apache-Userdir-Modul aktiviert. Jetzt können Sie den Inhalt der Website in ~/Webroot/ oder was auch immer in Ihrem Ausgangsverzeichnis ablegen.

Hinweis: Der Standardordner ist ~/public_html

2). Nehmen Sie die erforderlichen Änderungen an /etc/Apache2/mods-enabled/userdir.conf vor.

3). Starten Sie den Apache neu

Sudo /etc/init.d/Apache2 restart

Jetzt können Sie auf die Site zugreifen, indem Sie mit Ihrem Browser zu http: // ip-address/~ username navigieren. Sie können für diese Site auch einen virtuellen Host festlegen.

Wenn Sie PHP-Dateien ausführen möchten, müssen Sie einen weiteren Schritt ausführen

bearbeiten Sie den /etc/Apache2/mods-enabled/php5.conf und kommentieren Sie die folgenden Zeilen:

 <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Starten Sie dann den Apache neu.

Das ist es. Du bist fertig.

Ref: https://wiki.ubuntu.com/UserDirectoryPHP

Hoffe das hilft. Wenn Sie auf Schwierigkeiten stoßen, können Sie diese hier posten.

14
aneeshep

Dies ist keine gute Praxis, um das zu erreichen, was Sie wollen.

Wenn Sie PHP verwenden, sollten Sie sich suexec, suphp oder php-fpm und fastcgi ansehen =.


Sie haben Recht mit Ihrem Problem. Dies ist ein Berechtigungsproblem, da Ihre Webroot -Dateien einem anderen Benutzer gehören als www-data.

Hier ist eine gar nicht so schlechte Lösung, um Ihr Problem zu umgehen. Beachten Sie, dass Sie wahrscheinlich Sudo verwenden oder sich als root anmelden müssen. Vergewissern Sie sich, dass Sie alle Befehle, die Sie ausführen werden, vollständig verstanden haben !!

Ändern Sie Ihren Webroot -Ordner sowie die Unterordner und -Dateien so, dass die Gruppeneigentümerschaft auf www-data festgelegt ist, und legen Sie die entsprechenden Berechtigungen fest:

# set the group ownership to be www-data
chgrp -R www-data /path/to/home/Webroot/
# make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access)
chmod -vR g=rw /path/to/home/Webroot/
# make sure www-data can access the folders by adding the group execute bit field to directories
find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x

Edit: Beachten Sie, dass Sie diese Befehle auf jeden Fall erneut ausführen müssen, wenn Sie Dateien/Ordner mit Ihrem regulären Benutzerkonto hinzufügen.

6
Weboide

Ich habe fast das Gleiche mit Debian Lenny gemacht, aber ich habe in den Nicht-Hax-Modus gewechselt. Ich habe Apache korrekt konfiguriert. Aber mit symlink:

$ ll /home
drwxr-xr-x  8 root   root   4,0K nov 14 14.59 .
drwxrwxrwx  7 root   root   4,0K nov 14 21.24 www -> /var/www

Ich denke, Sie sollten die Berechtigung des ~ und des ~/Webroot überprüfen, ich denke, Ihr Verzeichnis (~) ist lesegeschützt, meine ich , du musst folgendes ausführen:

$ ls -la /home

Um die richtigen Berechtigungen festzulegen, verwenden Sie:

# chmod 755 /home
# chmod 755 /home/<YOURNAME>
# chown <YOURNAME>:www-data -R /home/<YOURNAME>/Webroot
# chmod 775 -R /home/<YOURNAME>/Webroot

Ich denke, es sollte helfen, aber gib mir mehr Infos dazu. Ich schlage Ihnen vor, die Webroot aus Ihrem Verzeichnis zu entfernen, z. zu / home wie ich , weil es ein Sicherheitsproblem sein kann.

"#" bedeutet root permisson, z. schreibe Sudo vor die Befehle; "$" bedeutet Einzelbenutzerberechtigung

1
antivirtel

Ich war mit diesem Problem konfrontiert. Die Idee, die Gruppe meines Home-Verzeichnisses in www-data zu ändern, gefiel mir jedoch nicht. Dieses Problem kann einfach gelöst werden, indem die Konfigurationsdatei für den virtualHost geändert wird. Konfigurieren Sie einfach das Directory-Tag, um diese einzuschließen

<Directory "your directory here">
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

Der Require all granted ist eine neue Funktion, denke ich; mit einem Standardwert von denied.

Siehe diese Seite als Referenz: http://httpd.Apache.org/docs/current/mod/core.html#directory

0
Peter

Sie müssen die Berechtigungen nicht nur für Ihr Ziel überprüfen, sondern auch für die übergeordneten Ziele.

0
zVictor