CHmod & Co Probleme

M

malibubu

Jungspund
Hallo,

ich habe ein kleines Problem: Auf meinem Server liegt Suse 8.2.
Apache 2, mod_perl, mod_php4 und mysql sind korrekt installiert und laufen auch einwandfrei.
Pfad zu den HTDOCS: /srv/www/htdocs

Dort befindet sich z.B. ein Ordner "Users".
In dem widerum befinden sich mehrere Unterordner "User1", "User2", "User3",....

Ich habe meherer User via Konsole (useradd) erstellt (User1, User2, User3,...).
Nun gebe ich den Einzelnen Ordnern folgende Berechtigungen, nachdem ich den Besitzer (jeweils User1 -> user1,...) ferstgelegthabe. Alle sind in einer Gruppe, die ebenfalls festgelegt ist.


Besitzer X X X O
Gruppe O O O O
Sonstige X O X X (für StickyBit)

Wenn ich das so einstelle, kann ich von einem anderen Rechner via Http://server:80/Users/ nicht mehr auf die einzelnen Ordner zugreifen.

Im prinzip möchte ich die einzelnen Ordner nur Gegeneinander schützen, so dass z.B. User2 aus seinem Ordner keine Daten (z.B. via PHP) aus dem Ordner User1 hohlen kann, in seinem Ordner aber machen kann, was er will... (Im prinzip wie "Puretec-Server". Sie haben mehrere User auf Ihreren Server und jeder kann nur auf seinen DocumentRoot zugreifen).

Ich hoffe Ihr könnt mir weiterhelfen. Danke
 
????
kannst du das nicht in den zahlen codes angeben ??
chmod 754
das ist jetzt Owner darf alles / gruppe darf lesen und ausfüren / welt darf lesen
 
Also:

Besitzer darf: Lese/Schreiben/Öffnen
Gruppe darf: nix
Welt darf: Lesen/Öffnen/StickyBit (Ausführrechte)
 
stickybit ist gefärlich !!!
und zusammen mit stickybit ist ausfüren scheiße gefärlich
 
OK, nehm ich dann raus.
Aber wie kann ich es so regeln, dass jeder user nur in seinem Ordner hantieren kann, aber der Ordner im Internet (via Apache, der ja läuft) einsichtig ist (Hostingprinzip)
 
also mein apache muss soweit ich weiß als root laufen und damit ist das problem gelöst (root kann alles)

also bei mir steht der auf 755 owner root du brauchst halt nur den owner zu ändern und dann klappt das schon :) sollteste aber vieleicht drauf achten das die nichts rippen können
 
Habe ich probiert, aber User1 kann z.b. folgendes PHP-Script ausführen:

<?
include "/srv/www/htdocs/user2/datei.inc";
?>
obwohl datei.inc nicht in seinem Ordner ist...

Er kann auch Dateien mit fopen, unlink, rmdir oder mkdir bearbeiten erstellen (in fremden Ordnern)
 
ne das kann doch gar nicht der hat doch nur lese und execute
 
ne warte mal das leuft alles über einen apache??
 
Also der Aufruf von der test.php im Ordner User1 versucht eine Datei in Ordner2 zu includen.
Und es klappt.

Der Aufruf von test.php läuft über Apache
 
Richtig, sowas läuft über den Apache. Und Apache als Root ist auch Zitat: "scheiße gefärlich".
 
er könnte einen >>user<< für apache einrichten

und dann einen script blocker einbinden der nur eine manipulation der daten im eigenen ordner zulässt (oder so)
 
Und nun?

OK, schonmal vielen Dank,
aber wie geht es nun weiter?

Wenn ich den Apache als root starten lasse, startet er nicht und weißt mich darauf hin, dass dies nicht funzt.

Soll ich nun einen User "Apachestart" anlegen und den Apache damit starten? Und wo finde ich ein solches BlockScript?

Ich habe mir mal überlegt, eigentlich wäre es doch einfacher, wenn ich folgendes anwende:
<Directory "/srv/www/htdocs/user1">
php_admin_value open_basedir "/srv/www/htdocs/user1"
</Directory>
<Directory "/srv/www/htdocs/user2">
php_admin_value open_basedir "/srv/www/htdocs/user2"
</Directory>
.
.
.
(in die httpd.conf).
So wird open_basedir auf den jeweiligen Ordner angewendet.
Im Allgemeinen könnte man doch auch folgendes machen:
<Directory "/srv/www/htdocs">
php_admin_value open_basedir "."
</Directory>
Aber so kann man auch keine Daten, die unterhalb des eigenen Ordners sind einlesen.

Gibt es für Möglichkeit 1 eine Art "Platzhalter", die für alle Ordner in /srv/ww/htdocs gilt?
Z.B:
<Directory "/srv/www/htdocs/*">
php_admin_value open_basedir "/srv/www/htdocs/*"
</Directory>
Dann brauch ich nicht jeden einzelnen User eintragen...

Danke im Voraus...
 
ich kenne mich zwar mit php nicht aus, aber lässt sich das den nicht auch über eine .htaccess regeln?

mfg

bananenman
 
Könnte man das denn umgehen, wenn man den Apache beim Booten starten lässt?
 
hehe

Also: In der Manual zur Apache steht keine Möglichkeit, wie man das Problem mit der .htaccess lösen kann (und dafür braucht man keine PHP-Kenntnisse).

Ich konnte wie gesagt den Apache nicht als root starten. Beim manuellen starten -> Fehlermeldung und Sicherheitshinweis (unumgänglich) und beim Starten nur "failed".

Ich glaube ich mache es so:
In der httpd.conf:
Code:
include /etc/apache2/dirs.conf
In der dirs.conf:
Code:
<directory ....>
...
</directory> (Wie oben im Beitrag)
Dann eine update.php:
Code:
<?
$v = dir("/srv/www/htdocs/user");
while($d = $v->read()) {
  $t .= "<directory \"/srv/www/htdocs/user/$d\"> 
php_admin_value open_basedir /srv/www/htdocs/user/$d
</directory>
";
}
$verzeichnis->close();
unlink("/ect/apache2/dirs.conf");
$fp = fopen("/ect/apache2/dirs.conf", "a+");
fwrite($fp, $t);
fclose($fp);
?>

und die update.php wird via Cronjob alle 12h ausgeführt.

Des weiteren muss der Apache nach der aktualisierung neu gestartet werden.
So ;-) :respekt:

Achja: Kennt jemand einen FTP-Server, mit dem ich folgendes machen kann:
1. Die User müssen nicht Lokal bestehen (d.h. sie müssen nicht via "useradd" erst ins System eingegliedert werden).
2. Ich kann den Usern verschiedene Pfade zuordnen.
3. Ich kann angeben, welche Dateitypen hochgeladen werden dürfen.
4. Up/Download wird mitgezählt und ich kann eine "Quotagrenze" einrichten (z.B. 10MB).

Des weiteren sollte die Einrichtung eines Users automatisch gehen (z.B. mit den Aufruf eine PHP-Scripts). Dies setzt natürlich voraus, dass die Userdaten in einer Datei stehen...

Danke"!
 

Ähnliche Themen

skuriles Samba Problem

File Management Software mit Sharing und Multi-User

Datei-Besitzer / Zugriffsrechte am Client ändern Seltsames Verhalten von Samba

rtorrent auf SUSE

Samba Ordner&Rechte struktur Hilfe!

Zurück
Oben