[linux-l] RE: [linux-l] RE: [linux-l] FTP-User und Script ausführender User gleich

Volker Grabsch vog at notjusthosting.com
Do Sep 1 12:27:55 CEST 2005


On Thu, Sep 01, 2005 at 09:34:16AM +0200, Manuel Tennert wrote:
> Also so gut kenne ich mich wie gesagt noch nicht aus und ich bin lernfähig,
> wegen des übergeschnappten...jeder wird aus Fehlern klug und ich wollte auch
> erst einmal für mich ein wenig testen.

Ja, ich habe auch nichts dagegen, dass du Fehler machst. Ich habe selbst
in der Vergangenheit genug gemacht.  ;-)

Aber zur Lernfähigkeit: "übergeschnappt" habe ich dich deshalb genannt,
weil du mit deinem verrückten
	"automatische Owner-Änderung nach FTP"
einfach nicht aufgehört hast. Obwohl ich dir gleich zu Anfang gesagt
habe, dass dieser Weg ins Nichts führt, hast du mehrfach hintereinander
immer wieder damit angefangen. Egal, wieviele Probleme ich dir
aufgezeigt habe. Egal, wieviele Alternativen ich dir genannt habe.

Und das meine ich mit "übergeschnappt": Weil du dich einfach nicht von
dieser Schnapsidee abbringen lässt, und sie immer weiter
ins Extrem verfolgt hast.


Grundsätzlich meine Bitte an alle Anfänger, Fortgeschrittenen und
Experten: Lasst euch doch nicht nur in technischen Details helfen,
sondern vorallem in organisatorischen Sachen! In diesem Bereich werden
viel schlimmere Fehler gemacht. Es gibt viel zu viele Quick & Dirty -
Lösungen, und diese Leute wundern sich dann in ein paar Monaten, dass
sie durch ihr System nicht mehr durchsehen, und es irgendwann nicht
mehr administrieren können. Lasst euch doch von Menschen helfen, die
diese Hölle bereits durchgemacht haben.  (siehe auch meine andere
Mail mit dem Bäcker und den Brötchen)


> Also das PHP-Script muß einige Einstellungsdateien (z.B.: für Foren)
> überschreiben können, so dass man gewisse Einstellungen ändern kann.
> Im Verzeichnis müssen auch neue Dateien angelegt werden können.

Deine php-Scripte wollen also keine Dateien anlegen oder löschen,
sondern nur bearbeiten, ja? Dann ist da alles doch halb so wild.
Das ist ja nun fast das einfachste, was du haben kannst.


Schritt 1
---------

Erstmal setze alle Datei-Besitzer wieder auf "web1", und alle Gruppen
auf "ftponly" zurück:

	chown -R web1.ftponly  /dein/pfad/zu/den/Webseiten/htdocs/

|------
| -R heißt: rekursiv, also auch alle enthaltenen Dateien und
|           Unterverzeichnisse
|
| "chown" kann via USER.GRUPPE auch gleich beides setzen, d.h. du
| kannst dir einen extra Aufruf von "chgrp" dadurch sparen.
|------

Außerden solltest du dir die Rechte ansehen ("ls -l"):
Alle Dateien sollten "644" (also: "rw-r--r--") haben.
Alle Ordner  sollten "755" (also: "rwxr-xr-x") haben.

Nun ist sichergestellt, dass du wieder Dateien hochladen kannst,
und dass du keine bösen Überraschungen erlebst.

Wenn du nun "suphp" oder "php-CGI mit SuExec" benutzt, so bist du
fertig. Ansonsten:


Schritt 2
---------

Auf die Dateien, die von den php-Programmen änderbar sein sollen,
musst du dem Benutzer "wwwrun" also Schreibrechte geben. Da wir
aber den Besitzer der Datei nicht ändern wollen, ändern wir einfach
die Gruppe!

|------
| Die Gruppe "www" wird nämlich ebenfalls *nur* vom
| Webserver benutzt (und das ist gut so, und daran sollte man nichts
| ändern!)
|------

Also, *nur* für die Dateien, die deine php-Scripte anfassen sollen,
machst du folgendes:

	chgrp www deine_datei
	chmod 664 deine_datei

Ein "ls -l deine_datei" sollte "rw-rw-r--" und "web1 www" anzeigen.
Das heißt, diese Dateien gehören zwar immer noch Web1, aber auch
der Gruppe "www". Und weil die Gruppe nun auch Schreibrechte hat,
können deine php-Scripte diese Datei(en) bearbeiten. Und keine sonst!
Und mal ehrlich: Das ist doch eleganter, oder?

Stehen in "deine_datei" sensible Informationen (DB-Passwort o.Ä.),
solltest du natürch die Rechte restriktiver setzen:

	chmod 660 deine_datei

.. dadurch haben nur du und die php-Script (und der Webserver) darauf
zugriff, und niemand sonst im System.

Aber eben auch *fremde* php-Scripte, wenn es im php-safe-mode eine
Lücke gibt. Deshalb ist Schritt-2 nur ein Workaround, du solltest
"php-cgi+SuExec" oder "suphp" bevorzugen.


> Ich habe mich gestern einmal durch Dokumentationen gewälzt und heraus
> gelesen, dass die PHP Scripte auch als CGI-Scripte ausgeführt werden
> können. Dadurch soll die Performance vom Server etwas leiden. SuExec habe
> ich ja jetzt schon eingestellt. Wie läuft das nun ab wenn ich PHP als CGI
> laufen lassen möchte? PHP läuft dann wohl nicht mehr als Modul, so weit
> habe ich auch gelesen.

Genau, PHP läuft dann nicht als Modul, sondern als externen Programm
(d.h. als CGI), und dann funktioniert auch SuExec.

Ein anderer Weg ist es, ohne CGI und SuExec auszukommen, und stattdessen
ein anderes Modul zu nehmen (suphp). Das kümmert sich wie SuExec auch um
die richtigen Rechte, aber ist ein Modul, also schneller.


> Gibt es hierfür eine Anleitung (wenn möglich Deutsch), in der beschrieben
> steht, wie ich dann alles Einrichten und Konfigurieren muß, eventl.
> Auch ein Download-Link von Packages wäre gut. Dann denke ich wäre das
> vielleicht der sinnvollste Weg. SuPHP habe ich mir gestern auch angesehen,
> aber es folgten zahlreiche Berichte, dass das mit Confixx nicht so geht
> und gerade Confixx möchte ich doch gern behalten.

Du brauchst php als CGI-Version. Schau mal, ob du ein entsprechendes
Paket findest. Unter SuSE im YaST könntest du es als Paket "php4-cgi"
finden, oder so ähnlich. Vielleicht ist es schon installiert. Ne gute
Howto kenne ich nicht, aber es ist auch nicht schwer. Es gibt wie
immer mehrere Möglichkeiten, je nach Geschmack und Anforderungen.


Viele Grüße,

	Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l