[linux-l] ...Imernoch die (mittlerweile) nervt?tende Dateirechte.

Ihno Krumreich ihno at lst.de
Mi Jul 2 01:00:13 CEST 2003


Hi Olaf,


On Tue, Jul 01, 2003 at 11:25:34AM +0200, Olaf Radicke wrote:
> Hi!
> 
> Ich drehe mich immer noch im Kreis mit den Dateirechten:
> 
> Es gibt eine Verzeichnis /var/freepriority
> 
> [or at n-platte alte_versionen]$ ls -la /var
> drw-rwx--x    3 freepriority freepriority       59 Jul  1 09:57 
> 
> Und darin ein ausf?hrbare Datei selben Namens:
> 
> [or at n-platte var]$ ls -la ./freepriority/
> -rws--x---    1 root     freepriority   620211 Jul  1 09:47
> freepriority*
> 
> Diese soll von einen Mitglied ("or") der Gruppe "freepriority"
> gestartet werden:
> 
> [or at n-platte var]$ groups or
> or : freepriority or fp
> 
> 
> Das Programm seinerseits, versucht auf das Verzeichnis
> "/var/freepriority" den Befehl "chmod -R 660" aus zu
> f?hren, mit der Benutzer alle Dateien bearbeiten kann.
> 
> Klappt aber nicht:
> 
> [or at n-platte or]$ /var/freepriority/freepriority 
> chmod: konnte Attribute von ?/var/freepriority/FreePriority/projekte?
> nicht hole 
> n: Permission denied
> chmod: konnte Attribute von
> ?/var/freepriority/FreePriority/freepriority_rc.xml? 
>  nicht holen: Permission denied
> sh: line 1: cd: /var/freepriority/FreePriority: Permission denied
> sh: line 1: cd: /var/freepriority/FreePriority: Permission denied
> mkdir: kann Verzeichnis ?/var/freepriority/FreePriority? nicht anlegen:
> File exi 
> sts
> sh: line 1: cd: /var/freepriority/FreePriority/projekte: No such file or
> directo 
> ry
> mkdir: kann Verzeichnis ?/var/freepriority/FreePriority/projekte? nicht
> anlegen: 
>  Permission denied
> 
> Offensichtlich ist hat das Prog immer noch nicht root Rechte.

Das ist nicht der Grund. Es fehlt die search-permission.

Bei dem Verzeichnis /var/freepriority ist das x-bit fuer den User nicht
gesetzt. Damit scheitert jeder Zugriff als Nutzer freepriority wenn
der komplette Pfad (/var/freepriority/FreePriority) angegeben wird.

Noch ein Tip zu den hier angegebenen chmod-Befehlen. Ich bin
ueberhaupt kein Freund von der oktalen Angabe von Zugriffrechten,
da meistens mehr gemacht wird als man will. Der obige Befehl
chmod -R 660 setzt die Schreibberechtigung, koescht aber bei
einem Verzeichnis die search-permission. Wenn ich es richtig
verstanden habe soll die Schreibberechtigung gesetzt werden.
Das geht auch mit chmod -R og+rw und damit werden andere
Rechte nicht veraendert.
> 
> Innerhalb des (erw?hnten) Progs werden Datein angelegt vom
> User. Z.T. mir "echo > neuedatei.xml". Diese haben dann den
> Mudus rwx--x--x. Was verhindert, das andere User der Gruppe,
> diese Dateien modivizieren k?nnen. Deshalb muss bei jedem 
> Prog- Start erstmal das ganze Verzeichnis mit "chmod -R 660" ?ber
> geb?gelt werden.

Um zu verhindern, das die Dateien mit den falschen berechtigungen
angelegt werden muss man die umask setzen. Normale Dateien 
werden mit 0666 angelegt. Dann werden die Bits geloscht, die in der
umask angegeben sind (Im normalfall 0022, d.h. Schreibberechtigung
fuer gruppe und Welt wird geloescht.)

Setzen kann man die umask in der shell mit

umask 0011

oder in einem C-Programm mit

umask(0011);

(siehe man 2 umask)


Gruss

Ihno




Mehr Informationen über die Mailingliste linux-l