View previous topic :: View next topic |
Author |
Message |
phixom Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
Joined: 07 Jan 2003 Posts: 224
|
Posted: Tue Dec 13, 2005 8:06 am Post subject: apache umask oder user für public_html setzen [solved] |
|
|
Hallo,
ich habe hier das Problem das ich einige Nutzer habe, die zum Testen in ihren public_html Verzeichnis arbeiten und Dateien, die vom Apache-Webserver darin angelegt werden ( config, tmp,...) von ihnen nicht mehr gelöscht werden können.
Kann ich irgendwie angeben, dass wenn ein neuer Thread für das jeweilige public_html gestartet wird, dieser unter dem jeweiligen Nutzernamen läuft, bzw. für dieses Verzeichnis eine eigene umask festlegen?
Die Manpage und diverse Seiten schweigen leider darüber.
phixom
Last edited by phixom on Wed Dec 14, 2005 7:45 am; edited 1 time in total |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Christoph Schnauß Guru
![Guru Guru](/images/ranks/rank_rect_3.gif)
![](images/avatars/141640639641c333d67e8e6.gif)
Joined: 17 Dec 2004 Posts: 553 Location: Berlin
|
Posted: Tue Dec 13, 2005 7:39 pm Post subject: Re: apache umask oder user für public_html setzen |
|
|
hi,
phixom wrote: | diverse Seiten schweigen leider darüber. |
Ich weiß ja nicht, was für "diverse Seiten" du nachgelesen hast. In http://httpd.apache.org/docs/2.0/howto/public_html.html steht eigentlich alles, was du wissen möchtest.
Christoph S. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
phixom Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
Joined: 07 Jan 2003 Posts: 224
|
Posted: Tue Dec 13, 2005 8:26 pm Post subject: |
|
|
Also diese Seite kenne ich, aber sie beantwortet meine Frage leider nicht.
Es geht nicht darum, wie ich das public_html Verzeichnis für Nutzer freigebe, sondern darum, dass beim Zugriff auf diese Verzeichnisse der Apache unter dem jeweils entsprechenden Nutzernamen arbeitet oder aber Dateien die vom Webserver (Scripte) angelegt werden mindestens einen Schreibzugriff für die Gruppe haben (Umask).
Diese Information kann ich auch durch Browsen über die diversen Seiten nicht finden.
phixom |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Christoph Schnauß Guru
![Guru Guru](/images/ranks/rank_rect_3.gif)
![](images/avatars/141640639641c333d67e8e6.gif)
Joined: 17 Dec 2004 Posts: 553 Location: Berlin
|
Posted: Tue Dec 13, 2005 8:45 pm Post subject: |
|
|
phixom wrote: | Also diese Seite kenne ich, aber sie beantwortet meine Frage leider nicht.
Es geht nicht darum, wie ich das public_html Verzeichnis für Nutzer freigebe, sondern darum, dass beim Zugriff auf diese Verzeichnisse der Apache unter dem jeweils entsprechenden Nutzernamen arbeitet oder aber Dateien die vom Webserver (Scripte) angelegt werden mindestens einen Schreibzugriff für die Gruppe haben (Umask). |
Der Server legt keinerlei Dateien an, das tun deine User auf anderem Weg, eventuell über FTP. Apache kann Daten übermitteln, aber nicht ein einziges Zeichen schreiben, geschweige denn eine ganze Datei anlegen.
EDIT:
Wenn du trotzdem einen neuen Benutzernamen haben möchtest, dann stelle die vorhandenen Benutzeraccounts in dieselbe Gruppe, in der auch der bisherige Apache-Benutzer zu finden ist, bei Gentoo ist das vermutlich eine Gruppe "apache" und ein Standardbenutzer "apache". In der httpd.conf gibt es dazu die Kommentarzeilen: Code: | # If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services. |
"umask" verwendest du auf Systemebene. Zum Ändern von Rechten können deine Benutzer besser mit chmod umgehen. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
phixom Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
Joined: 07 Jan 2003 Posts: 224
|
Posted: Tue Dec 13, 2005 10:27 pm Post subject: |
|
|
Christoph Schnauß wrote: | Der Server legt keinerlei Dateien an, das tun deine User auf anderem Weg, eventuell über FTP. Apache kann Daten übermitteln, aber nicht ein einziges Zeichen schreiben, geschweige denn eine ganze Datei anlegen. |
Ja das ist mir bekannt. Aber z.B. das PHP-Script was der Server ausführt tut das, also tut es indirekt der Server ja doch. Ich habe die Anfrage nur allgemein gestellt um nicht mit unnötigen Details zu "verwirren". Es könnte genauso ein CGI, PERL, RUBY, $SPRACHE_deiner_wahl Script sein.
Auch könnte das WEBDAV-Modul Daten schreiben, aber das ist wenigstens konfigurierbar.
Christoph Schauß wrote: | In der httpd.conf gibt es dazu die Kommentarzeilen:
Code: | # If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services. |
|
Ja auch das ist mit bekannt, löst aber das Problem nicht. Ich kann zwar somit einen User festlegen nicht aber für jedes public_html den jeweiligen Eigentümer. Es ließe sich evtl. noch über einen individuellen Eintrag für jedes public_html Dir regeln, was wiederum einen erhöhten Pflegeaufwand bei der Nutzerverwaltung erfordert.
Ich dachte an einen universellen Eintrag, sowas wie
Code: |
<Directory /home/*/public_html>
User %U
</Directory>
|
Wobei %U halt für den jeweiligen Eigentümer des public_html Verzeichnisses stehen würde.
oder aber
Code: |
<Directory /home/*/public_html>
umask 002
</Directory>
|
für die Gruppenschreibrechte.
Aber genau für dieses Problem habe ich eben noch keine Lösung gefunden, deswegen fragte ich.
phixom |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Christoph Schnauß Guru
![Guru Guru](/images/ranks/rank_rect_3.gif)
![](images/avatars/141640639641c333d67e8e6.gif)
Joined: 17 Dec 2004 Posts: 553 Location: Berlin
|
Posted: Tue Dec 13, 2005 10:58 pm Post subject: |
|
|
hallo,
phixom wrote: | Christoph Schnauß wrote: | Der Server legt keinerlei Dateien an... | Ja das ist mir bekannt. Aber z.B. das PHP-Script was der Server ausführt tut das, also tut es indirekt der Server ja doch. |
Nein. Der Server kann lediglich eine eintreffende Anfrage entsprechend seiner Konfiguration an einen Interpreter (PHP,Perl, sonstwas) weiterleiten und nimmt dann dessen "Arbeitsergebnis" wieder entgegen, um es postwendend an den anfragenden Client weiterzureichen. Es ist dann auch keine gute Idee, dem PHP-Script zu erlauben, etwas in die ServerRoot zu schreiben. In die DocumentRoot darf es das natürlich.
phixom wrote: | Ich habe die Anfrage nur allgemein gestellt um nicht mit unnötigen Details zu "verwirren". Es könnte genauso ein CGI, PERL, RUBY, $SPRACHE_deiner_wahl Script sein.
Auch könnte das WEBDAV-Modul Daten schreiben, aber das ist wenigstens konfigurierbar. |
Ganz im Gegenteil, du hättest da gleich etwas genauer sein dürfen, schließlich ist das kein 0815-Thema, und möglicherweise hat es auch für andere "stille Mitleser" Relevanz.
phixom wrote: | Ich dachte an einen universellen Eintrag, sowas wie
Code: |
<Directory /home/*/public_html>
User %U
</Directory>
|
Wobei %U halt für den jeweiligen Eigentümer des public_html Verzeichnisses stehen würde.
oder aber
Code: |
<Directory /home/*/public_html>
umask 002
</Directory>
|
für die Gruppenschreibrechte. |
Das ist in dieser Form nicht machbar - obwohl ich den Gedankengang durchaus nachvollziehen kann. Es sei denn, du schreibst dir noch ein eigenes Modul mit dem (hypothetischen) Namen "userright" und bindest es ein: Code: | <IfModule userright.c> |
Konkret: Anweisungen wie "User %U" oder "umask" werden bisher von keinem der offiziellen Apache-Module bereitgestellt (kann ja vielleicht später noch kommen, schließlich ist Apache 2.3 bereits in der Entwicklung).
phixom wrote: | Aber genau für dieses Problem habe ich eben noch keine Lösung gefunden, deswegen fragte ich. |
Ich denke, ich habe deine Fragestellung schon kapiert. Sie ist ja durchaus nicht uninteressant, aber du mußt mir schon erlauben, mich mit ein paar Nachfragen so langsam heranzutasten, da ich so eine Problemstellung noch nie zu bewältigen hatte, obwohl mich der Apache seit Jahren beschäftigt und ich mich bisweilen als ganz fit bei Apache-Fragen finde.
Ich werde mir mal im lokalen Netz eine Umgebung nachbauen, in der ich deinen Ansatz testweise nachvollziehen kann. Vielleicht finde ich die Stelle, an der du "hängengeblieben" bist. Vorerst würde ich jetzt noch darauf aufmerkam machen wollen, daß du mit Code: | Order allow,deny
Allow from ... | auch noch allerhand anstellen kannst.
Christoph S. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
phixom Apprentice
![Apprentice Apprentice](/images/ranks/rank_rect_2.gif)
Joined: 07 Jan 2003 Posts: 224
|
Posted: Wed Dec 14, 2005 7:44 am Post subject: |
|
|
Christoph Schnauß wrote: | Nein. Der Server kann lediglich eine eintreffende Anfrage entsprechend seiner Konfiguration an einen Interpreter (PHP,Perl, sonstwas) weiterleiten und nimmt dann dessen "Arbeitsergebnis" wieder entgegen, um es postwendend an den anfragenden Client weiterzureichen. Es ist dann auch keine gute Idee, dem PHP-Script zu erlauben, etwas in die ServerRoot zu schreiben. In die DocumentRoot darf es das natürlich.
|
Mh, das könnte jetzt in eine Off-Topic Disskussion ausarten. Es kommt immer darauf an, wie der Interpreter eingebunden ist. Beim mod_php ist der Interpreter ja als Lib fest in den Webserver eingebunden und somit Bestandteil von ihm. Als php-cgi wäre es nicht so. Aber wie gesagt das sind OT Kleinigkeiten und sind außerdem von der Betrachtungsweise abhängig.
Christoph Schnauß wrote: | Ganz im Gegenteil, du hättest da gleich etwas genauer sein dürfen, schließlich ist das kein 0815-Thema, und möglicherweise hat es auch für andere "stille Mitleser" Relevanz. |
Da könntest du Recht haben, aber ich dachte es wäre unerheblich ob die erzeugte Datei nun von einem PHP oder wasweissich Script erzeugt wird, da ich die Konfiguration durch den Apache erledigen wollte und nicht solche Tipps wie: " Das musst du im PHP in einem configscript xy erledigen" erhalten wollte.
Christoph Schnauß wrote: | Das ist in dieser Form nicht machbar - obwohl ich den Gedankengang durchaus nachvollziehen kann. Es sei denn, du schreibst dir noch ein eigenes Modul mit dem (hypothetischen) Namen "userright" und bindest es ein: |
Das wäre durchaus sinnvoll nur leider bin ich kein Student mehr und habe somit weniger Zeit um dies umzusetzen und meine C(++) Kenntnisse sind schon etwas eingerostet.
Christoph Schnauß wrote: | Konkret: Anweisungen wie "User %U" oder "umask" werden bisher von keinem der offiziellen Apache-Module bereitgestellt (kann ja vielleicht später noch kommen, schließlich ist Apache 2.3 bereits in der Entwicklung).
|
Na hoffen wir mal, dass so etwas kommt.
Ich habe aber etwas gefunden. Mod_umask löst mein Problem zumindest teilweise auf der Umaskbasis. Ich kann es zwar nicht für jedes Verzeichnis individuell setzen (Sicherheitsrisiko) aber immerhin sorgt es für die gewünschte Umask.
Christoph Schnauß wrote: | da ich so eine Problemstellung noch nie zu bewältigen hatte, |
Ich auch nicht, da sind wir ja schon Zwei
Christoph Schnauß wrote: | Ich werde mir mal im lokalen Netz eine Umgebung nachbauen, in der ich deinen Ansatz testweise nachvollziehen kann. Vielleicht finde ich die Stelle, an der du "hängengeblieben" bist. Vorerst würde ich jetzt noch darauf aufmerkam machen wollen, daß du mit
Code: |
Code:
Order allow,deny
Allow from ...
|
auch noch allerhand anstellen kannst. |
Bitte mach dir nicht zuviele Umstände. Eine fast zufriedenstellende Lösung ist ja bereits gefunden.
Nur so als kleine Hilfe
Code: | <?PHP
$fh=fopen ("test.txt", w);
fputs($fh, "blah");
fclose($fh);
?> |
Dieses Script legt mal eben eine Datei an, so wie es in vielen größeren PHP-Projekten z.b. Gallery, Typo3,... auch geschieht. Ziel ist es nun, dass "test.txt" mindestens g+rw hat oder aber dem User im zugehörigen public_html-dir gehört, dieses aber nicht vom Script festgelegt wird.
phixom |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|