Fragen zum Befehl umask - Alternative? [gelöst]

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
Simmel
Beiträge: 698
Registriert: 08.03.2004 14:43:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Düsseldorf
Kontaktdaten:

Fragen zum Befehl umask - Alternative? [gelöst]

Beitrag von Simmel » 24.07.2007 13:06:07

Hallo Leute,

ich befasse mich wegen meiner LPI-Prüfung momentan mit dem Befehl umask und habe ein paar Probleme damit. Ich denke ich habe soweit begriffen wie die Berechnung geht, allerdings bin ich etwas verwundert, das es so und nur so geht.

Wie erkläre ich das am besten?

Ich würde es gerne hinbekommen das meine umask z.B. für files eine Voreinstellung von 660 nimmt und für Directories von 770. Sprich jeder aus der Gruppe kann die Files des Users bearbeiten und auf dessen Verzeichnisse zugreifen, alle anderen Gruppen und User bleiben aussen vor.

Also habe ich angefangen zu rechnen. Da es ja nur eine umask gibt für files und directories, habe ich die files bevorzugt.

666 im Binärformat 110 110 110 ist das was ich abzuziehen habe und
660 im Binärformat 110 110 000 ist das was ich als Ergebnis haben möchte

das Ergebnis wäre dann die umask von 000 000 110 im Binärformat oder aber 006.

Nun ergibt sich aber folgendes Problem, wenn ich diese umask benutze so wird "mein Wunsch" für die Directories ein 770 zu bekommen zerschlagen.

777 im Binärformat 111 111 111 ist das was ich abzuziehen habe (für die directories)
006 im Binärformat 000 000 110 ist die umask die ich vorher errechnet und eingestellt habe

das Ergebnis wäre dann das die Directories ein 111 111 001 im Binärformat oder aber ein 771 als Standardeinstellung bekommen.

Wie es mir scheint kann also die umask nicht genau das was ich haben möchte, oder habe ich hier einen Denkfehler?

Gibt es eine Alternative zur klassischen umask? Diesen Ansatz finde ich nicht gerade praktikabel.

Danke für euer Interesse und eure Vorschläge,
Simmel
Zuletzt geändert von Simmel am 25.07.2007 10:12:05, insgesamt 1-mal geändert.
you've got to know how far to go in going too far

perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

http://creativecommons.org/licenses/by-nc-sa/2.0/

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 24.07.2007 14:11:18

ok - bin gerade in ca. 4sec ueber das Posting geflogen daher habe ich evlt. nichts verstanden
- du willst die umask von 0777 & ~ 0022 behalten (ist ja auch gut so)
- aber erzeugte directories auf 0770 setzen

dann wuerde ich

Code: Alles auswählen

alias mkdir='mkdir -m 0770'
in entweder .bashrc der user oder in roots profile geben. Die Userbezogenen files z.b. .bashrc gewinnen im "scoping" immer gegen system defaults ...


Markus

Kase
Beiträge: 124
Registriert: 24.01.2005 22:15:40

Beitrag von Kase » 24.07.2007 18:25:08

Ich habe dein Posting etwas länger gelesen, was du vor hast, habe ich aber nicht wirklich verstanden.

Du kannst die UMASK übrigens wesentlich einfacher berechnen, du musst dafür nicht ins Binärformat gehen.

Die maximalen standard Rechte für Directorys sind 777 (read=4, write=2, exe=1).
Die maximalen standard Rechte für Files sind 666 (read=4, write=2)

Die UMASK sind die Rechte, die du von den maximalen standard Rechten abziehst.

Beispiel:

UMASK 027 (Du ziehst von den maximalen standard Rechte user: 0, group: 2 = write, other: 7 = read(4), wriite(2), exe(1) ab)

Directorys:

Code: Alles auswählen

 777
-027
------
 750
Die Dirs haben per default read(4),write(2),exe(1)=7, du ziehst read,write,exe=7 für others, write=2 für group und nichts=0 für user ab.

Files:

Code: Alles auswählen

 666
-027
-----
 640
Die Files haben per default read(4), write(2)=6, du ziehst read,write,exe=7 für others, write=2 für group und nichts=0 für user ab. Da die Files per Default aber kein Execute haben, kannst du natürlich auch kein execute abziehen, es passiert mehr oder weniger nichts. Mathematisch ausgeddrückt, die minimalsten Rechte sind 0, es funktionieren keine Minus-Rechte.

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von habakug » 24.07.2007 19:30:57

Hallo!

Es ist zwar schon etwas her, das ich die Prüfung gemacht habe, ich gehe aber nochmal auf die Frage ein.

Die Unix-Rechte in Oktalform:

Code: Alles auswählen

xxx xxx xxx
          *- execute bit für other a - Wert 1 \
         *-- write bit für other a - Wert 2    7
        *--- read bit für other a - Wert 4    /
      *-execute bit für group g - Wert 1 \
     *-- write bit für group g - Wert 2   7
    *--- read bit für group g - Wert 4   /
  *- execute bit für owner o - Wert 1 \
 *-- write bit für owner o - Wert 2    7
*--- read bit für owner o - Wert 4    /
Für ein Directory sieht es bei einer umask=022 so aus:

Code: Alles auswählen

    777 xor 022 == 755
    111 111 111 (777)
xor 000 010 010 (022)
  = 111 101 101 (755)
Für eine Datei angelegt mit dieser umask dagegen so:

Code: Alles auswählen

    777 xor (022 && 111) == 644
    111 111 111 (777)
xor 001 011 011 --> 000 010 010 && 001 001 001 = 001 011 011 (022 && 111)
 =  111 100 100 (644)
Die umask wird mit dem execute-bit geandet. Es handelt sich aber um Oktalzahlen (0-7), nicht "Binärformat". [1]

Gruß, habakug

[1] http://de.wikipedia.org/wiki/Oktalsystem

Benutzeravatar
Simmel
Beiträge: 698
Registriert: 08.03.2004 14:43:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Simmel » 25.07.2007 10:10:44

Kase hat geschrieben:Ich habe dein Posting etwas länger gelesen, was du vor hast, habe ich aber nicht wirklich verstanden.

Du kannst die UMASK übrigens wesentlich einfacher berechnen, du musst dafür nicht ins Binärformat gehen.
Yo, stimmt. War gestern wohl schon zu spät gewesen, da hat mir die Rübe gequalmt :lol:

Ich versuche in Kurzform nochmal zu erklären was ich gerne hätte:

Wie muss meine umask sein, damit ich bei den Directories ein 770 und bei Dateien ein 660 bekomme?

Und die antwortet lautet (wenn ich mir hier die Beispiele durchlese): Es geht einfach nicht!

@Markus - Danke für deinen Beitrag, das ist eine gute Alternative, die ich dann auch anwenden werde. Ich habe nämlich bereits einen Verwendungszweck dafür.

@Habakug - Danke für den Link, aber gerechnet habe ich ja offensichtlich richtig

Für mich ist der Fall damit gelöst
you've got to know how far to go in going too far

perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

http://creativecommons.org/licenses/by-nc-sa/2.0/

Benutzeravatar
Simmel
Beiträge: 698
Registriert: 08.03.2004 14:43:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Simmel » 25.07.2007 12:41:22

Simmel hat geschrieben: Wie muss meine umask sein, damit ich bei den Directories ein 770 und bei Dateien ein 660 bekomme?

Und die antwortet lautet (wenn ich mir hier die Beispiele durchlese): Es geht einfach nicht!
Es geht doch. Ha!

Mein Denkfehler beruht auf der Tqtsache das ich mich nicht zuerst an den Verzeichnisrechten sondern an den Dateirechten orientiert hatte.

Eine umask von 007 (im Bond-style) löst mein Problem

Code: Alles auswählen

jdoe@trilith:~$ umask 007
Ergibt für Verzeichnisse ein 770

Code: Alles auswählen

jdoe@trilith:~$ mkdir umaskdirbaby
jdoe@trilith:~$ ls -la
drwxrwx--- 2 jdoe sales   48 2007-07-25 12:38 umaskdirbaby
und für die Files ein 660

Code: Alles auswählen

jdoe@trilith:~$ touch aumaskfilebaby
jdoe@trilith:~$ ls -la
-rw-rw---- 1 jdoe sales    0 2007-07-25 12:40 aumaskfilebaby
Mann mann, wofür ein Kaffee doch alles gut sein kann. :D
you've got to know how far to go in going too far

perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

http://creativecommons.org/licenses/by-nc-sa/2.0/

Antworten