sevensenses wrote:na gut, welche berechtigungen die verzeichnisse und dateien bekommen, wenn sie auf den server kommen. aber wie muss das in der .profil aussehen dann?
ist das jetzt falsch was in meiner steht?
Nein, deine .profile ist nicht falsch. Und überhaupt, "Deine" bedeutet in dem Fall die von root? Die von Dir gepostete .profile macht nichts anderes, als den Inhalt der Datei .bashrc einzulesen/auszuführen. Das ist aus historischen Gründen so gewachsen. Die ursprüngliche Bourne Shell führt beim Start immer ~/.profile aus. Dieses Verhalten haben ihre jüngeren Ableger (Ash, Dash, Bash, Zsh, ...) von ihr geerbt. Die meisten von ihnen lesen aber zusätzlich auch noch Shell-spezifische rc-Dateien ein, die von den anderen Derivaten jeweils nicht verstanden würden (z. B. ~/.bashrc, ~/.zshrc). Daher behalten die meisten Distributionen eine ~./profile (was ich persönlich allerdings für Bullshit halte, da eine ash nun versuchen würde, den u. U. bash-spezifischen Inhalt von ~./bashrc auszuführen).
Nun zum Thema umask.
umask() ist ein System Call, mit dem die sog. "file mode creation mask" eines Prozesses geändert werden kann. Diese file mode creation mask ist eine Eigenschaft des Prozesses, die er normalerweise von seinem Eltern-Prozess erbt. Da viele Dateien und Verzeichnisse entweder direkt von einem Shell-Prozess (z. B. durch > oder touch) oder durch Kindprozesse eines Shell-Prozesses (z. B. mkdir, mv, cp) erzeugt werden, implementieren POSIX-kompatible Shells ein
umask-Kommando, mit dem der Anwender die file mode creation mask des Shell-Prozesses verändern kann.
Vielleicht wird jetzt klarer, wo das Problem liegt: Neue Dateien erhalten den Modus, welcher der file mode creation mask des entsprechenden Prozesses (FTP-Server, webalizer, ...) entspricht. Je nachdem, wie dieser gestartet wird, erbt er seine file mode creation mask eventuell sogar direkt vom
init-Prozess. Was also in einer ~./profile drinsteht, beeinflusst den erzeugenden Prozess u. U. nicht die Bohne. Webalizer wird normalerweise über cron aufgerufen. Hier kannst Du ein einfaches Workaround schaffen: schreibe Dir ein Mini-Shellskript, das etwa wie folgt aussieht:
Code: Select all
#!/bin/sh
umask 0027
<hier den webalizer-Aufruf aus der crontab>
exit $?
Speichere es an geeigneter Stelle ab, verpasse ihm Ausführungsberechtigung (0755 oder 0555) und trage es anstelle des bisherigen Webalizer-Aufrufs in die Crontab ein. Die Wirkung: Cron startet jetzt nicht mehr direkt webalizer, sondern einen Shell-Prozess. Dieser setzt auf die Anweisung im Skript hin seine file mode creation mask auf den gewünschten Wert und startet darauf hin webalizer. Webalizer läuft jetzt also als Kindprozess des Shellskipt-Prozesses und erbt somit dessen file mode creation mask.
Das war jetzt einmal der Crashkurs; die ausführliche Variante solltest Du Dir lieber selbst anlesen, z. B. hier:
http://openbook.galileocomputing.de/linux/
http://www.tldp.org/LDP/Bash-Beginners- ... index.html
http://www.tldp.org/LDP/intro-linux/htm ... 03_04.html
http://www.tldp.org/LDP/intro-linux/html/chap_04.html
http://www.tldp.org/HOWTO/Security-HOWT ... urity.html