henere
Goto Top

Umzug von Webseite auf Apache2

Hallo zusammen,

ich möchte eine bestehende Webseite auf einen anderen Server umziehen.
Test-Zielserver ist ein Apache2 unter Ubuntu 15.0
Alle Dateien sind kopiert, das macht keine Probleme.
Beim Aufruf der index.htm wird diese auch angezeigt, jedoch fehlen Bilder die in Unterordnern liegen.
Auch beim direkten Aufruf der Datei im Browser klappt es nicht, es kommt ein:

Forbidden

You don't have permission to access /~boards/index.html on this server.
Apache/2.4.12 (Ubuntu) Server at testserver.test.xyz Port 80

Die Rechte sind im Verzeichnis /var/www/html/ mit
chmod -R 644 *
gesetzt worden.
Ich kann jede Datei aufrufen, die im root-Verzeichnis liegt, bei jedem Unterverzeichnis kommt der obige Fehler.

Ein ls-la zeigt mir, dass die Dateien (auch die Verzeichnisse und Dateien in /var/www/html/ und den Unterverzeichnissen) alle
drw-r--r--
bzw
-rw-r--r--
haben.

Ich habe das Verzeichnis nochmal geleert und gesehen, dass die Apache2 Default Webseite dem User root und Group root gehört, müsste das nicht eigentlich www-data in beiden Fällen sein ?
Aber wie ich es auch ändere, ich bekomme immer mein permission denied.
.htaccess oder .htpasswd existiert nicht.

Kann mir bitte jemand helfen, wo mein Denkfehler liegt ?

Danke vorab und Grüße, Henere

Content-Key: 298327

Url: https://administrator.de/contentid/298327

Printed on: April 20, 2024 at 06:04 o'clock

Member: Sheogorath
Solution Sheogorath Mar 06, 2016 updated at 09:37:10 (UTC)
Goto Top
Moin,

Hallöchen,

In den meisten default setups die du über deine Distro installierst, wie in diesem Fall bei Ubuntu wird standardmäßig ermöglichst, das Benutzer Kontent selbst hosten.

Diese rufen dann ihre Inhalte über eine URL ab, die nach dem Hostnamen (und eventuell Port) eine Tilde haben hinter die der Benutzername folgt,

In deinem Fall ist das /~boards/. Hier wird also versucht auf das public_html verzeichnis des Benutzers boards zuzugreifen, der auf deinem Neuen Setup nicht existiert. Folglich natürlich auch nicht aufgerufen werden kann.

Die einfachste und auch beste Variante ist die Pfade anzupassen sodass dein Kontent letztendlich nur noch unter /var/www/html zu finden ist. Die Alternative dazu ist einen Benutzer boards anzulegen, unter seinem Benutzernamen das Verzeichnis ~/public_html anzulegen und dort den Kontent unter zu bringen. Ehrlich gesagt, kann ich dir nicht sagen, wann das Mode war, ich schätze in Zeiten der Shellhosts, aber das ist eindeutig nicht mehr Stand der Zeit. Ändern bzw. Anpassen wird dringend empfohlen. Das erspart dir auch einen solches Durch einander, solltest du deinen Kontent nochmal umziehen.

Gruß
Chris
Member: Henere
Henere Mar 06, 2016 updated at 06:04:56 (UTC)
Goto Top
Servus,

ok das ist einleuchtend. Das Problem an dieser Seite ist, dass sie seit bestimmt 12 Jahren historisch gewachsen ist und nun zu einem anderen Provider umziehen soll. Daher hab ich mir mal ein Ubuntu in einer VM aufgesetzt, um den Umzug vorher ausgiebig zu testen. Aktuell liegt sie bei hosteurope auf einem "ordinären" Webspace und ich möchte sie zu edis.at in einen VZ Container umziehen, da ich mehr ein Freund von SSH und SCP als von FTP bin.

Also würde es langen, wenn ich alle Vorkommnisse von ~ untersuche und dementsprechend ersetze ? Das sind nur 2 Links bzw. Unterverzeichnisse. Das wäre schnell erledigt.

Das Problem ist halt auch, dass die Seite nicht auf "meinem Mist" gewachsen ist, sondern eine Motorrad-Info-Seite, die von jemandem anderen erstellt wurde und ich sie nun vor der Abschaltung retten möchte.

Aber das Problem tritt auch bei Links auf, die einen vorangestellten _ haben, wie zB:

Forbidden

You don't have permission to access /_service/index.html on this server.  
Apache/2.4.12 (Ubuntu) Server at s-v-xt600 Port 80

Und das Verzeichnis existiert in /var/www/html

Das steht in /var/log/apache2/error.log:
[Sun Mar 06 07:02:42.492223 2016] [core:error] [pid 3707] (13)Permission denied: [client 192.168.200.100:2151] AH00035: access to /xt_reifenseiten/index.htm denied (filesystem path '/var/www/html/xt_reifenseiten/index.htm') because search permissions are missing on a component of the path, referer: http://s-v-xt600/  

Könntest Du mir da noch einen Tipp geben ?

Danke und Grüße, Henere
Member: Henere
Henere Mar 06, 2016 at 06:42:07 (UTC)
Goto Top
Ok, das mit dem _ habe ich hinbekommen, habe nun ein chmod -R 744 * gemacht, seit dem kann ich die Unterverzeichnisse im Browser öffnen. Müsste eigentlich nur noch das mit den ~ geändert werden ... oder ?

Wobei mir das 744 irgendwie wiederstrebt. Da ich es mit dem * auch auf alle Dateien gebracht habe, geht das eleganter ?

Danke und Grüße, Henere
Mitglied: 114757
114757 Mar 06, 2016 updated at 08:23:56 (UTC)
Goto Top
Moin,
die Meldungen kommen meist dann wenn auf einem System der zusätzliche Securitylayer SELinux implementiert ist, dann müssen zusätzliche Policies für den Zugriff angelegt werden. Solltest du auf jeden Fall mal überprüfen ob das auf dem Zielsystem der Fall ist
Guckst du dazu auch hier:
http://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-s ...

Die Fehlermeldung ist nämlich sehr typisch dafür.

Gruß jodel32
Member: Henere
Henere Mar 06, 2016 at 08:32:11 (UTC)
Goto Top
Hi Jodel,

es ist ein Ubuntu Server 15.10. Das einzige was nachinstalliert wurde, war OpenSSH und Apache2.
Ausser der Anpassung der IP-Adresse wurden sonst keine Änderungen am System vorgenommen.
System ist mit apt-get update, apt-get upgrade und apt-get dist-upgrade auf den neuesten Stand gebracht.

Die Änderung mit 744 hat ja geholfen, nun gehen ja die Seiten. Selbst die ~Verzeichnisse funktionieren. Wobei es mir irgendwie nicht behagt, wenn ausführbare Dateien auf einem Webserver liegen.

Grüße, Henere
Mitglied: 114757
Solution 114757 Mar 06, 2016 updated at 09:36:57 (UTC)
Goto Top
Benötigte Standardzugriffsrechte für Dateien und Verzeichnisse:
http://askubuntu.com/questions/386928/default-permissions-for-var-www

Kann aber je nach Webseite variieren wenn deine Webseite in einem Verzeichnis z.B. Schreibrechte benötigt. Da musst du die Rechte der ursprünglichen Seite analysieren und was diese jeweils benötigt.

Und wie immer gilt:
In order to traverse (enter) a directory, you need to have execute permission on that directory. The webserver needs this permission to list a directory or serve any files inside of it.
http://serverfault.com/questions/357108/what-permissions-should-my-webs ...
Member: Henere
Henere Mar 06, 2016 at 09:39:34 (UTC)
Goto Top
Das sind nur statische Seiten, da braucht keiner schreiben.

Hab jetzt nur noch das Problem, dass ich durch das 744 auch ausführen auf den Verzeichnissen UND den Dateien habe.
Da suche ich noch ne Lösung, wie ich das von den Dateien wieder weg bekomme, finde da nix zu. Zumindest nicht, wenn ich das per shell machen möchte. Einzeln mag ich das "Gelump" nicht anfassen.
Könnt ihr mir da noch kurz auf die Sprünge helfen ?
Member: Henere
Henere Mar 06, 2016 at 09:48:16 (UTC)
Goto Top
Wenn man Google richtig bedient....

find . -type f -exec chmod 644 {} \;

Danke euch für die Hilfe !
Mitglied: 114757
114757 Mar 06, 2016 updated at 10:21:51 (UTC)
Goto Top
Deswegen nimmt man für einen produktiven Webserver lieber ein CentOS oder RedHat und Konsorten, welche die Rechte des Apache-Prozesses zusätzlich mit SELinux Policies kontrollieren face-wink
Ohne explizite Write-Policy für ein Verzeichnis läuft dort nämlich gar nichts auch wenn die Dateizugriffsrechte das erlauben würden.

Ein Ubuntu 15.10 als öffentlichen Webserver, käme mir persönlich nie in die Tüte, erstens weil bei diesem Zweig kein Long Term Support verfügbar ist und zweitens ist das eher was für Intranets aber nichts für den öffentlichen Betrieb. Bei Ubuntu lieber zu den LTS Versionen greifen wenns unbedingt Ubuntu sein muss.
Member: Henere
Henere Mar 06, 2016 at 20:57:44 (UTC)
Goto Top
Das ist nur ein Test bei mir zu Hause, ob die Übertragung klappen würde. Muss mal schauen, was EDIS.AT so alles im Angebot hat.
Ich hab schon so lange nix mehr mit Liunx gemacht, muss mich da auch erst wieder reintüddeln. Und das lieber auf einem privaten Server, der von aussen nicht erreichbar ist.