kann mir mal einer umask erklären?

Smalltalk
Antworten
Benutzeravatar
Master Mayhem
Beiträge: 582
Registriert: 04.04.2004 00:04:46
Lizenz eigener Beiträge: neue BSD Lizenz

kann mir mal einer umask erklären?

Beitrag von Master Mayhem » 17.08.2004 21:29:44

Hallo!

Wußte nicht wohin damit also hab ichs mal in smalltalk getan....

Ich versuche gerade etwas mehr linux zu verstehen und lese dazu u.a. die linuxfibel und den kofler.
Jetzt hab ich gedacht die rechteverwaltung auf linux verstanden zu haben und bin davon auch recht begeistert - nur irgendwie hab ich probleme mit umask:

wieso wird blos umask für dateien und ordner gleichzeitig verändert, bzw wieso wird nicht direkt die maximalmaske für ordner oder datei geändert?
Sinn macht umask ja eigentlich nur, wenn der wert 0022, oder 0002 gesetzt wird, denn da bei verzeichnissen von der 0777 das subtrahiert wird, was entzogen werden soll, und bei dateien von der 0666 subtrahiert wird kann das zu seltsamen ergebnissen führen

wenn man z.B will, dass neue ordner von other nicht geschreiben und ausgeführt werden dürfen (drwxr-xr-- oder chmod 754), müsste man die umask auf 0023 einstellen um bei neuen ordnern ein chmod 754 zu erreichen - mit dem extremen sicherheitsproblem in der folge, dass neue dateien mit einem chmod 643 erstellt werden (-rw-r---wx) oder können andere das dann nicht ausführen, weil ihnen das leserecht fehlt?

paradox wirds aber, wenn man will dass neue ordner von anderen auch gar nicht erst gelesen werden dürfen, also ein chmod 750 (drwxr-x---) dann stellt man die umask also auf 0027 ein um für ordner 750 zu erhalten......nur was passiert dann wenn ne neue datei erstellt wird? von 0666 nen 0027 abziehen könnte zu problemen führen....

Vielleicht ist mir das auch einfach nur zu hoch.....aber irgendwie ist die umask doch was fürn arsch - wieso stellt man nicht direkt die maximalmaske einzeln für dateien und ordner ein und spart sich die umask - würde doch mehr sinn ergeben....

Kann man nicht direkt die maximalmasken editieren, wie man es benötigt und umask auf 0000 einstellen?
Wenn das geht, wo finde ich die maximalmasken?

Blöde Anfängerfragen wahrscheinlich, aber ich danke jedem, der einen gedanken daran verschwendet und ihn mir mitteilt :wink:

mfg tyler

***edit***

jetzt werd ich immer verwirrter - so wie ich die linuxfibel verstanden habe wird der wert der umask von den jeweiligen maximalmasken abgezogen (777 für verzeichnisse und 666 für dateien)
http://www.linuxfibel.de/access.htm#maske

wenn ich aber diesen artikel lese passt das nicht mehr ganz so, macht aber von der systemverwaltung wesentlich mehr sinn
http://fibel.org/linux/node240.html
d.h. die maximalmaske unterscheidet sich nicht, sondern umask verhält sich tatsächlich anders bei verzeichnissen und dateien??
denn wenn ich nach der liste von dem unteren link gehe passt das mathematisch nicht mehr, bei umask 1, 3, 5, oder 6 bekommen dateien dann irgendwie +1 auf den endwert, wenn man rechnet bei:
maximalmaske für verzeichnisse - 777
maximalmaske für dateien - 666
umask - 022
------------------------------------------------------
neue verzeichnisse haben chmod - 755
neue dateien haben chmod - 644

hat das jemand verstanden :?:

Benutzeravatar
b a r t
Beiträge: 145
Registriert: 16.08.2004 20:19:15
Wohnort: springfield

Beitrag von b a r t » 18.08.2004 00:10:32

was machst du für eine gedanken turnerei?

umask ist dazu da wenn du einem bestimmten Ortner/User festlegen willst, wie die Zugriffsberechtigungen aussehen sollen. Somit kannst du jedem User der ein neues File erstellt sagen wem das File gehört, und wer was damit machen kann. Somit erledigt es sich von alleine die ganze chmod sache, und wenn du ein Netzwerk hast das etwas mehr als 2 User hat ist es sehr hilfreich gewisse Zugriffsbeschränkungen zu machen, sei es so das nur gewisse Gruppen oder User Zugriff haben oder nicht, jeden falls kannst du mit UMASK das alles bestimmen.

Ich hoffe es hat dir geholfen, ich habe es so spät nicht mehr mit dem rechnen von zugriffsberechtigungen sorry, doch ich habe das ganze von dir nicht so verstanden 8O

good night
b a r t

Benutzeravatar
blackstream
Beiträge: 143
Registriert: 04.12.2003 21:05:09
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Neuss

Beitrag von blackstream » 18.08.2004 19:06:49

Das ist eigentlich eine ganz einfache Sache:

Der Wert von umask wird nicht einfach von 666 bzw. 777 "abgezogen", sondern bitweise damit verknüpft (nicht vergessen, es handelt sich um Oktalzahlen!):

Die 777 bei den Verzeichnissen entspricht binär 111 111 111 (bzw. rwxrwxrwx),
die 666 bei normalen Dateien 110 110 110 (bzw. rw-rw-rw-).

Die "normale" umask 022 entspricht 000 010 010.

Von der umask wird das Komplement gebildet, in diesem Fall 111 101 101.

Diese Komplement wird mit der Grundmaske per biweisem Und verknüpft:

Code: Alles auswählen

Beispiel für umask 022:
       
                       Datei           Verzeichnis

Grundmaske             110 110 110     111 111 111
Komplement der umask   111 101 101     111 101 101
                       -----------     -----------
Ergebnis (bitw. UND)   110 100 100     111 101 101
in Dateirechten        rw- r-- r--     rwx r-x r-x
oktal                  6   4   4       7   5   5

Beispiel für umask 027:
       
                       Datei           Verzeichnis

Grundmaske             110 110 110     111 111 111
Komplement der umask   111 101 000     111 101 000
                       -----------     -----------
Ergebnis (bitw. UND)   110 100 000     111 101 000
in Dateirechten        rw- r-- ---     rwx r-x ---
oktal                  6   4   0       7   5   0
Ich hoffe, damit konnte ich ein wenig zum Verständnis beitragen.

Gruß,
blackstream

Benutzeravatar
Master Mayhem
Beiträge: 582
Registriert: 04.04.2004 00:04:46
Lizenz eigener Beiträge: neue BSD Lizenz

Beitrag von Master Mayhem » 18.08.2004 21:11:31

THX !!!

dass ich das auf der bitebene durchrechnen muss hab ich gestern abend/nacht schon vermutet und hab mir das heute auf der arbeit auch noch mehrfach durch den kopf gehen lassen und es mir für heute abend vorgenommen, ob ich das so verstehe...jetzt muß ich nur noch rausfinden wie die verknüpfung auf bitebene funktioniert - momentan seh ich nicht die regel, wie entschieden wird ob im endeffekt ne 0 oder ne 1 gesetzt wird....aber ich weiß schonmal, wo ich weitersuchen/lesen muss

dafür bin ich bei linux, weil ich verstehen will, was hinter den kulissen vor sich geht - daher auch die gedanken turnerei :D
Wenn ich etwas verstanden habe, brauch ich es nicht auswendig zu lernen, sondern weiß es immer, weil ich die regel verstanden habe.....wenn ich was nicht verstehe, geht mir das nicht mehr aus dem kopf, bis ich es gerafft habe

Deswegen danke, dass ihr zu meinem seelenfrieden beigetragen habt :wink:

mfg tyler

******edit*******

5 min später.....ich glaub ich habs nach längerem drüber meditieren doch verstanden nur 1+1 ergibt 1, egal ob 0+1, oder 1+0 das gibt immer 0, nur wenn die 1 sich bestätigt, wird sie im ergebnis gesetzt!?
mh das gute gefühl etwas verstanden zu haben setzt ein.....denke ich habs gerafft

Benutzeravatar
blackstream
Beiträge: 143
Registriert: 04.12.2003 21:05:09
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Neuss

Beitrag von blackstream » 18.08.2004 22:35:38

Master Mayhem hat geschrieben:(...).ich glaub ich habs nach längerem drüber meditieren doch verstanden nur 1+1 ergibt 1, egal ob 0+1, oder 1+0 das gibt immer 0, nur wenn die 1 sich bestätigt, wird sie im ergebnis gesetzt!?
Genau so ist es :D

Das Binäre Und kannst Du Dir übrigens wie ein jeweiliges Multiplizieren der einzelnen Stellen vorstellen: 1*1 ergibt 1, 0*1 0, 1*0 0 und 0*0 auch 0 - Das Zeichen dafür ist in vielen Programmiersprachen das & (sogar in der bash)

Benutzeravatar
Master Mayhem
Beiträge: 582
Registriert: 04.04.2004 00:04:46
Lizenz eigener Beiträge: neue BSD Lizenz

Beitrag von Master Mayhem » 19.08.2004 01:07:22

yep - nochmal danke....das läßt mich echt ruhiger schlafen und ich kritzel auf meine unterlage auf der arbeit nicht ständig so komische tabellen mit umask 0022 755 (drwxr-xr-w) 644 (-rw-r--r--) drauf :lol:

das macht echt spass sowas zu lernen.....hätte nie gedacht, dass ich mich von nem ausschließlichen computerzocker (ego-shooter hauptsächlich) zu nem linux-addicted entwickel :wink:
aber etwas verstanden zu haben, nach langem nachdenken, ist besser als die hälfte des gegnerischen teams mit ner panzerfaust ausgeschaltet zu haben :twisted:

mfg tyler

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 19.08.2004 11:08:14

Master Mayhem hat geschrieben:aber etwas verstanden zu haben, nach langem nachdenken, ist besser als die hälfte des gegnerischen teams mit ner panzerfaust ausgeschaltet zu haben :twisted:
Und das beste: dich wird hier niemand als "Umaskpussy" beschimpfen
*SCNR*

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 19.08.2004 17:03:01

Joghurt hat geschrieben:Und das beste: dich wird hier niemand als "Umaskpussy" beschimpfen
*SCNR*
Passiert Dir das öfters? :-P
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 19.08.2004 17:59:39

Bert hat geschrieben:Passiert Dir das öfters? :-P
Dass ich als "Panzerpussy" beschimpft werde? Ja, manchmal. Oft lachen meine Gegner aber auch nur, wenn ich, anstatt einem Pulk von 3 Gegnern einen Baum und mich vaporisiere...

Benutzeravatar
Master Mayhem
Beiträge: 582
Registriert: 04.04.2004 00:04:46
Lizenz eigener Beiträge: neue BSD Lizenz

Beitrag von Master Mayhem » 20.08.2004 21:04:12

Hmm hab da aber doch noch ne frage zu.....auch auf die gefahr hin hier jetzt den nickname umaskpussy weg zu haben :lol:

und zwar irritiert mich dieser abschnitt:
Allerdings verhält sich die Rechtevergabe doch anders als erwartet. Manche Systeme liefern auch eine vierte Ziffer (an erster Stelle stehend) zurück. Diese beschreibt das besondere Verhalten der Rechtevergabe für neue Dateien, wie aus der Tabelle 9.1 zu ersehen ist. Dabei verhält sich die bash wie durch den Wert 0 gegeben. Die für die Benutzergruppen angegebenen Rechte werden von dieser Grundeinstellung abgezogen.
von hier: http://fibel.org/linux/node240.html

die tabelle dazu ist irgendwie auch komisch: http://fibel.org/linux/node240.html#tabumask
vor allem achte man auf:
6 x für Dateien und Verzeichnisse
und zwar akzeptiert der bei mir an erster stelle gar keine zahl

Code: Alles auswählen

tabea@localhost:~/testdir$ umask 1022
-bash: umask: 1022: octal number out of range
tabea@localhost:~/testdir$ umask 2000
-bash: umask: 2000: octal number out of range
tabea@localhost:~/testdir$ umask 2022
-bash: umask: 2022: octal number out of range
tabea@localhost:~/testdir$ umask 0026
tabea@localhost:~/testdir$ umask
0026
tabea@localhost:~/testdir$ touch rechte
tabea@localhost:~/testdir$ ls -la
insgesamt 8
drwxr-xr-x    2 tabea    tabea        4096 2004-08-20 20:41 .
drwxr-xr-x   20 tabea    tabea        4096 2004-08-20 20:38 ..
-rw-r-----    1 tabea    tabea           0 2004-08-20 20:41 rechte
tabea@localhost:~/testdir$ umask 6022
-bash: umask: 6022: octal number out of range
tabea@localhost:~/testdir$ umask 6000
-bash: umask: 6000: octal number out of range
tabea@localhost:~/testdir$ umask 0022
tabea@localhost:~/testdir$ umask
0022
tabea@localhost:~/testdir$ 
nach der tabelle müsste ja nen umask 0026 nen o=x setzten.....aber ich hab da länger dran rumgerechnet und bin zu dem schluss gekommen, dass es unmöglich ist jemals nen x zu setzten wenn in der grundmaske an der stelle ne 0 steht - naja das gebietet die logik, aber ich hab überlegt, ob die tabelle irgendeinen sinn ergeben kann wenn die grundmaske anders wäre, vor allem, weil er da ja auf die erste stelle der umask eingeht....aber für mich ist das nen tippfehler.....oder sehe ich das falsch?

spinnt der typ der die website geschrieben hat oder ich??
und was bedeutet die erste stelle bei umsak - bisher bin ich davon ausgegangen, dass die erste stelle genau wie bei chmod für das t bzw s bit zuständig ist, aber da scheine ich mich geirrt zu haben, oder sind für die änderung der ersten stelle root rechte nötig? (kann ich mir eigentlich nicht vorstellen, ergibt keinen sinn....)

mfg tyler

p.s.: wenn ihr drauf besteht schreibe ich meinen neuen RTCW-Nick in meine sig [DEB]umaskpussy ehem [GDD]Tyler Durden :lol:
[GDD]Tyler Durden ist mein altes nick - damit hab ich in der esl-europe RTCW-ET liga-wars gemacht, bis der clan sich aufgelöst hat und der allmächtige admin nen abgang gemacht hat, u.a. mit 50€ von mir.....naja dafür wollt ich eigentlich linux lernen - nen linux-et server mit putty zugang ohne webmin o.ä. drauf....aber ich hatte soviel spass am lernen, dass ich kein bock mehr hatte zu zocken oder nen server zu warten....die jungs verlangen echt 24h sofort support

LittleBoy
Beiträge: 718
Registriert: 30.04.2002 14:32:26

Beitrag von LittleBoy » 21.08.2004 11:35:32

Da steht doch explizit manche Systeme liefern eine erste Stelle zurück - die bash hingegen setzt die erste Stelle immer auf 0.

Die Rechtevergabe unter *nix ist halt sehr simpel, und in vielen Situationen einfach zu unflexibel. Darum gibts da eine Menge Erweiterungen, um diese Mißstände abzuschaffen - manche Systeme erweitern die umask, andere wiederum (wie Linux) setzen auf ACLs.

Die Tabelle bezieht sich nur auf das erste Zeichen der umask - welches unter der bash nicht existert...

Benutzeravatar
Master Mayhem
Beiträge: 582
Registriert: 04.04.2004 00:04:46
Lizenz eigener Beiträge: neue BSD Lizenz

Beitrag von Master Mayhem » 21.08.2004 14:13:57

naja stimmt schon ist etwas unflexibel.....daher frag ich mich ja auch immer noch, warum man nicht umask weglässt und nur die grundmasken editiert, das wäre deutlich flexibler

aber ganz abgesehen davon, selbst wenn er explizit auf die erste stelle eingeht, wenn man die zahlen 0-5 und 7 betrachtet dann muss auch da die grundmaske für dateien 110 und für verzeichnisse 111 sein und dann kannst du mit der umask machen was du willst, es wird nie bei dateien ein ergebnis rauskommen wo ne 1 an dritter stelle steht (für das x) also 111 101 oder 001, das geht nicht, von der logik gibt es keine ausnahme....

oder da greift ne völlig andere regel....

mfg tyler

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 21.08.2004 14:52:58

hmm.. kann es nicht vielleicht sein, dass bei "umask" wenn dann da "0022" steht die erste 0 nicht einfach nur beschreibt, dass es sich um Oktalzahlen handelt, denn in der Programmiersprache muss man diese angeben, damit sie als Oktalzahl behandelt wird..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Master Mayhem
Beiträge: 582
Registriert: 04.04.2004 00:04:46
Lizenz eigener Beiträge: neue BSD Lizenz

Beitrag von Master Mayhem » 21.08.2004 15:07:06

aber auch dann bleibt noch die frage, wie er auf 6 = x für dateien und verzeichnisse kommt

alle anderen zahlen sind richtig, wenn sie auch die zweite, dritte und/oder vierte stelle der umask beschreiben und lassen den beweis zu, dass die grundmaske für dateien 110 110 110 (in bitdarstellung - als oktalzahl 666) und für ordner 111 111 111 (oktal 777) ist.
wenn dann mit dem komplement von der umask in bitdarstellung mit einem UND verknüpft wird, dann kann niemals bei dateien ein ausführbar herauskommen - das ist eine ausnahme in der tabelle, die der logik widerspricht.....

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 21.08.2004 15:26:14

also ich hoffe ich hab den Thread jetzt verstanden, weil irgendwie ist mir das etwas durcheinander..

ich denke das die erste (von links gesehen) Zahl von den vieren einfach nur eine Regel ist und mit dieser keine Berechnungen durchgeführt werden..

aber ich befürchte ich habe das Problem noch nicht so ganz verstanden (z.B. was du mit "0-5 und 7" gemeint hast..)
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Master Mayhem
Beiträge: 582
Registriert: 04.04.2004 00:04:46
Lizenz eigener Beiträge: neue BSD Lizenz

Beitrag von Master Mayhem » 21.08.2004 16:16:01

Also die rechte rwx kann man ja nicht nur oktal mit der summe aus 4, 2 und 1 bestimmen, sondern auch auf bit ebene darstellen wobei rwx 111 entspricht r-x 101, rw- 110 etc also nen gesetztes recht is ne 1 an derselben stelle wie der buchtabe steht
dann verweise ich auf die erkärung von blackstream oben, wie die formel für die berechnung ist und betrachte dann eine stelle der umask nach folgender tabelle:
http://fibel.org/linux/node240.html#tabumask

Code: Alles auswählen

(oktal)      umask(bit)       grundmaske(bit)   ergebnis(bit)
umask   komplement        dateien ordner    dateien ordner
0                 111                     110     111          110     111
1                 110                     110     111          110     110
2                 101                     110     111          100     101
3                 100                     110     111          100     100
4                 011                     110     111          010     011
5                 010                     110     111          010     010
6                 001                     110     111      ->000<- 001
7                 000                     110     111          000     000
für 6 in der umask gibt er x für dateien und verzeichnisse an....das widerspricht jeder logik, die grundmake für dateien MUSS 110 sein - sonst wären die anderen ergebnisse nicht möglich er gibt aber 001 (--x oder 1 oktal) für dateien bei umask 6 an.....das muss eigentlich nen tippfehler sein

mfg tyler

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 21.08.2004 16:27:42

ahh.. ok.. ja jetzt seh/kapier ichs.. stimmt.. ist nen Fehler!!

your right :-)
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Antworten