Fragen zum Befehl umask - Alternative? [gelöst]
- 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]
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
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/
perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'
http://creativecommons.org/licenses/by-nc-sa/2.0/
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
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 in entweder .bashrc der user oder in roots profile geben. Die Userbezogenen files z.b. .bashrc gewinnen im "scoping" immer gegen system defaults ...
Markus
- 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'
Markus
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:
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:
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.
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
Files:
Code: Alles auswählen
666
-027
-----
640
- habakug
- Moderator
- Beiträge: 4314
- Registriert: 23.10.2004 13:08:41
- Lizenz eigener Beiträge: MIT Lizenz
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:
Für ein Directory sieht es bei einer umask=022 so aus:
Für eine Datei angelegt mit dieser umask dagegen so:
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
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 /
Code: Alles auswählen
777 xor 022 == 755
111 111 111 (777)
xor 000 010 010 (022)
= 111 101 101 (755)
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)
Gruß, habakug
[1] http://de.wikipedia.org/wiki/Oktalsystem
- Simmel
- Beiträge: 698
- Registriert: 08.03.2004 14:43:43
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Düsseldorf
-
Kontaktdaten:
Yo, stimmt. War gestern wohl schon zu spät gewesen, da hat mir die Rübe gequalmtKase 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.
![Laughing :lol:](./images/smilies/icon_lol.gif)
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/
perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'
http://creativecommons.org/licenses/by-nc-sa/2.0/
- Simmel
- Beiträge: 698
- Registriert: 08.03.2004 14:43:43
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Düsseldorf
-
Kontaktdaten:
Es geht doch. Ha!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!
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
Code: Alles auswählen
jdoe@trilith:~$ mkdir umaskdirbaby
jdoe@trilith:~$ ls -la
drwxrwx--- 2 jdoe sales 48 2007-07-25 12:38 umaskdirbaby
Code: Alles auswählen
jdoe@trilith:~$ touch aumaskfilebaby
jdoe@trilith:~$ ls -la
-rw-rw---- 1 jdoe sales 0 2007-07-25 12:40 aumaskfilebaby
![Very Happy :D](./images/smilies/icon_biggrin.gif)
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/
perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'
http://creativecommons.org/licenses/by-nc-sa/2.0/