also erstmal, die rechte des verzeichnisses sind in diesem falle herzlich egal, das minimum waere nur ein execute fuer group oder other, wenn man nett ist, erlaubt man auch noch ein ls und gibt auch group-read und other-read. schreibrechte auf das directory bedeutet nur, dass neuanlegen und loeschen(!) von files erlaubt ist, aber noch lange nicht, dass man bestehende files beschreiben darf.
hier kommt jetzt die umask ins spiel. sie gibt an, mit welchem wert die eigentlich durch den access mode vorgegebenen rechte (z.B. rw fuer alle, wenn ein file read-write geoeffnet wird) logisch ver-nand-ed werden, um die tatsaechlichen rechte zu erhalten. bei root steht die umask nunmal meist auf 077, so dass alle files, die von root prozessen geschrieben werden, fuer group und other keine rechte haben. aendern kannst du das, wenn du vor dem aufruf des programms ein umask 000 eingibst - und danach sofort wieder zurueck nach 077, da sowas seinen grund hat…
wenn es dann immer noch nicht gehen sollte, setzt das sicherheitsbewusste programm seine umask selbst, und du kannst ohne eine aenderung im source (oder einen assembler guru mit zuviel zeit) nix machen…
joachim, der sich oft fragt, ob selbst lernen nicht mehr in ist…
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]