Schrift
[thread]395[/thread]

Problem mit Schreibrechten (chmod)



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
oruebe
 2004-12-29 21:02
#3951 #3951
User since
2004-07-09
46 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe ein Problem: Ich kann meinen Server über http und https erreichen. Ich selber arbeite mit http, es gibt allerdings eine kommunikation mit einem anderen Server, die dann über https erfolgt.

Ich habe 2 Scripte: Eines, was im Standart-CGI-BIN liegt und eines was im Ordner liegt, der dann über https angesprochen wird. Ich möchte mit beiden Scrpiten auf die gleiche Text-Datei zugreifen und diese verändern. Hier liegt das Problem.

Ich kann mit beiden Scripte die Datei auslesen, egal, welches Script diese Datei erstellt hat. Schreibzugriff habe ich aber immer nur mit dem Script, dass diese Datei erstellt hat.

Wenn also das Sript unter https die Datei erstellt hat, kann ich mit beiden Scrpiten lesen aber nur mit dem https-Script verändern. Ist die Datei vom http-Script erstellt, ist es andersherum: Lesen mit beiden möglich, schreiben nur mit dem http-Script.

Mir ist noch aufgefallen, dass das https-Script auch dann schreiben kann, wenn es vom http-Script erstellt wurde und ich über ftp CHmod 777 setze.
Wurde die Datei aber über https erstellt, habe ich keine Berechtigung den CHmod über ftp zu ändern.

Ich habe in beiden Scripten versucht, direkt nach dem erstellen der Datei den chmod per Script auf 777 zu setzen. Ohne erfolg.

Im Dateinamen gibt es eine Variable. Vielleicht mache ich ja auch hier etwas falsch...

So erstelle, bzw. ändere ich die Datei:

open(DATEI,">>/home/XXXXX/daten/$user.dat");
print DATEI"12345678\n";
close(DATEI);
chmod("/home/XXXXX/daten/".$user.".dat",0777);

Klappt nicht.

Habe auch versucht:
chmod("/home/XXXXX/daten/$user.dat",0777);


Was könnte es sein...?
esskar
 2004-12-29 21:19
#3952 #3952
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
das liegt wohl an dem user, unterdem der http bzw. der https user laufen; der muss es ja dürfen.
schau mal, unter welchen accounts die laufen und pass deren rechte an - aber nicht zu viel geben
cbxk1xg
 2004-12-29 21:30
#3953 #3953
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Das Problem liegt vermutlich bei den Benutzerrechten. Dein Script läuft unter einem eigenen Benutzernamen. Der Benutzername für das FTP-Login ist wieder ein anderer. Damit nun nicht jeder einfach wild Dateien von anderen Benutzern ändern kann, darf auch nur der Benutzer die Datei ändern, der sie erstellt hat.

Ich kenne das Problem von diversen Providern (z.B. Hosteurope). Bei Hosteurope laufen Skripte immer unter dem Beutzernamen "nobody". Meiner Meinung nach ist es bei Webhostingpaketen allerdings kein Feature, sondern ein Bug.

Versuch einfach mal rauszufinden unter welchem Benutzernamen deine Scripte laufen.

Als Lösungsansatz (quick & dirty) könntest du folgendes probieren: Angenommen deine Zieldatei befindet sich in dem String $target und Du hast Leserechte auf die Datei. Dann kopierst Du die Datei und löschst die alte. Danach bennenst du die neue Datei um und alles ist schön. Das geht aber nur wenn Du auch löschen darfst.
Code: (dl )
1
2
3
4
5
6
7
8
use File::Copy qw(cp);
open(FILE, ">$target")
or do {
cp "$target", "$target~temp1";
unlink "$target";
rename "$target~temp1", "$target";
};
close( FILE );


Es gibt bei diesem Workarround allerdings noch ein paar Probleme. Wenn Du mit zwei Skripten rumwerkelst dann solltest Du unbedingt Flock benutzen. Sonst wirst Du irgendwann Probleme mit Zugriff auf die Datei bekommen. Außerdem solltest Du den Workarround bei dem zweiten Skript verändern indem Du temp1 durch temp2 ersetzt. Sonst könnte das zweite Skript eventuell zeitgleich auf eine Datei zugreifen, wo es gerade etwas unpassend ist.
oruebe
 2004-12-29 21:37
#3954 #3954
User since
2004-07-09
46 Artikel
BenutzerIn
[default_avatar]
Hallo eskar,

jetzt sprichst Du von den Rechten der Server-Benutzer (oder wie soll ich es ausdrücken), oder? Du meinst jetzt nicht die ftp-rechte oder sowas, oder?

In Sachen Serverkonfiguration stehe ich ziemlich im Nebel. Außerdem habe ich nur einen User am Server angelegt. Der "andere User" ist das System selber und davon habe ich null Ahnung.

Ich habe gerade einen workaround gebastelt. Nur zur Neugierde: Ich mache (im Moment) vom https-Script aus eine http-GET-Anfrage an ein Script, dass nicht unter https läuft. Dadurch lasse ich es quasi "übersetzen" und des klappt auch. Bevor im am Server schraube lasse ich es lieber so, denn dieses Funktion wird höchsten 10 oder 20 mal am Tag aufgerufen...

Aber wenn Du mir sagen solltest, dass ich das alles falsch verstanden habe und es doch gar nicht schwierig ist, werde ich mir noch mal gedanken machen...
Strat
 2004-12-29 21:39
#3955 #3955
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
neue benutzergruppe anlegen -> benutzer und den account, unter dem der webserver laeuft, zu dieser gruppe hinzufuegen -> datei der neuen gruppe mit chgrp neue_gruppe filename ueberschreiben, und dann muesste es eigentlich funktionieren
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
oruebe
 2004-12-29 21:44
#3956 #3956
User since
2004-07-09
46 Artikel
BenutzerIn
[default_avatar]
@ Strat

Lieb gemeint aber ich verstehe leider rein gar nichts... :(

"Leider" ist auf meinem Server die Hölle los, so dass ich echt schiss habe zu experimentieren. Und in diesen Dingen habe ich wirklich NULL Ahnung. Ich wüsste im Moment gar nicht, wo ich anfangen soll.

Ich hatte gehofft, dass es nur irgendwas mit 777 zu tun hätte... :D
pq
 2004-12-29 22:02
#3957 #3957
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
versuch mal vor dem erstellen der datei die umask
zu setzen: perldoc -f umask
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
renee
 2004-12-29 22:57
#3958 #3958
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
mmmhhh.... der Aufruf der chmod-Funktion sieht etwas anders aus (siehe perldoc -f chmod):
chmod <neueRechte>,<Dateiliste>

also:
chmod 0777, "/home/XXXXX/daten/$user.dat";
Je nach belieben auch die runden Klammern benutzen ;)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
oruebe
 2004-12-30 00:17
#3959 #3959
User since
2004-07-09
46 Artikel
BenutzerIn
[default_avatar]
@ pq: Werde mich morgen mal schlau lesen

@ renee: Hatte ich auch in dieser Form probiert. Hat nichts geholfen.
pq
 2004-12-30 11:35
#3960 #3960
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=renee,29.12.2004, 21:57]mmmhhh.... der Aufruf der chmod-Funktion sieht etwas anders aus (siehe perldoc -f chmod):
chmod <neueRechte>,<Dateiliste>

also:
chmod 0777, "/home/XXXXX/daten/$user.dat";
Je nach belieben auch die runden Klammern benutzen ;)[/quote]
hmm, dann sollte oruebe eigentlich eine warnung bekommen haben bei
seinem aufruf:
Argument "/home/XXXXX/daten/....dat" isn't numeric in chmod at...

oruebe, hast du die warnung bekommen und nur verschwiegen oder kam
die tatsächlich nicht?
(du benutzt ja wohl warnings, oder? wenn nicht, ist das wieder ein klassisches
beispiel, dass du mit warnings das problem sofort hättest beseitigen
können...)

ich finde, warnings sollten default werden bei perl6. und strict auch.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2004-12-29 21:02.