Ummask

Ummask
Originalautor (en) AT & T Bell Laboratories
Entwickler (en) Verschiedene Open Source und kommerziell Entwickler
Erstveröffentlichung 1978; Vor 44 Jahren
Betriebssystem Unix und Unix-artig
Plattform Plattformübergreifend
Typ Befehl

Im Computer, Ummask ist ein Befehl das bestimmt die Einstellungen von a Maske Das steuert wie Dateiberechtigungen werden für neu erstellte Dateien eingestellt. Es kann sich auch auswirken, wie die Dateiberechtigungen explizit geändert werden. umask ist auch a Funktion Das setzt die Maske oder kann sich auf die Maske selbst beziehen, die formell als die bezeichnet wird Dateimodus Erstellungsmaske. Die Maske ist eine Gruppierung von BitsJede davon beschränkt, wie seine entsprechende Berechtigung für neu erstellte Dateien festgelegt wird. Die Bits in der Maske können durch Aufrufen der umask Befehl.

Überblick

Im Unix-artig Systeme, jede Datei verfügt über eine Reihe von Attributen, die steuern, wer sie lesen, schreiben oder ausführen kann. Wenn ein Programm eine Datei erstellt, werden die Dateiberechtigungen durch die Maske eingeschränkt. Wenn die Maske ein Bit auf "1" eingestellt ist deaktiviert. Ein Bit auf "0" in der Maske eingestellt bedeutet, dass die entsprechende Erlaubnis erfolgt bestimmt durch das Programm und die Dateisystem. Mit anderen Worten, die Maske fungiert als Filter im letzten Stadium, der Berechtigungen abstreift, wenn eine Datei erstellt wird. Jedes Bit, das auf eine "1" eingestellt ist, streift seine entsprechende Erlaubnis weg. Berechtigungen können später von Benutzern und Programmen verwendet werden Chmod.

Jedes Programm (technisch gesehen a Prozess) hat eine eigene Maske und kann seine Einstellungen mit einem Funktionsaufruf ändern. Wenn der Prozess a ist HülseDie Maske wird mit der festgelegt umask Befehl. Wenn eine Shell oder ein Prozess einen neuen Prozess auf den Markt bringt, erbt der untergeordnete Prozess die Maske von ihrem übergeordneten Prozess. Im Allgemeinen wirkt sich die Maske nur bei der Erstellung neuer Dateien auf Dateiberechtigungen aus und hat keine Auswirkungen, wenn die Dateiberechtigungen in vorhandenen Dateien geändert werden. Allerdings die chmod Der Befehl überprüft die Maske, wenn die Modusoptionen unter Verwendung des symbolischen Modus angegeben werden und eine Referenz auf eine Benutzerklasse nicht angegeben ist.

Die Maske wird als Gruppe von Bits gespeichert. Es kann als dargestellt werden als binär, Oktal oder symbolisch Notation. Das umask Der Befehl ermöglicht es, dass die Maske als Oktal festgelegt wird (z. 0754) oder symbolisch (z. u=,g=w,o=wx) Notation.

Das umask Befehl wird verwendet mit Unix-artig Betriebssysteme und die umask Funktion ist in der definiert Pox.1 Spezifikation.

Geschichte

Die Maske, die umask Befehl und die umask Die Funktion war nicht Teil der ursprünglichen Implementierung von Unix. Das Betriebssystem entwickelte sich in einer relativ kleinen computerzentralen Umgebung, in der die Sicherheit kein Problem darstellte. Es wurde schließlich zu Hunderten von Benutzern aus verschiedenen Organisationen. Zunächst machten Entwickler Erstellungsmodi für Schlüsseldateien restriktiver, insbesondere für Fälle von tatsächlichen Sicherheitsverletzungen, dies war jedoch keine allgemeine Lösung. Die Maske und die umask Das Kommando wurde um 1978 in der siebten Ausgabe des Betriebssystems eingeführt.[1] Daher könnte es Websites, Gruppen und Einzelpersonen ermöglichen, ihre eigenen Standardeinstellungen zu wählen. Die Maske wurde inzwischen in den meisten, wenn nicht allen zeitgenössischen Implementierungen von UNIX-ähnlichen Betriebssystemen implementiert.

Shell -Befehl

In einer Hülle wird die Maske durch Verwendung der eingestellt umask Befehl. Die Syntax des Befehls lautet:[2]

Ummask [-S ] [Maskexpression] 

(Die Artikel in den Klammern sind optional.)

Anzeige der aktuellen Maske

Wenn die umask Der Befehl wird ohne Argumente aufgerufen, er zeigt die aktuelle Maske an. Der Ausgang wird in beiden sein Oktal oder symbolisch Notation, abhängig vom Betriebssystem.[3]

In den meisten Muscheln, aber nicht die C Shell, das -S Argument (d.h. umask -S) wird anweisen umask mithilfe der symbolischen Notation anzeigen. Zum Beispiel:

$ Ummask  # aktueller Wert anzeigen (als Oktal) 0022 $ Ummask -S # Aktueller Wert symbolisch anzeigen u=rwx, g=rx, o=rx

Einstellen der Maske mit Oktalnotation

Wenn die umask Der Befehl wird mit einem Oktalargument aufgerufen. Er setzt die Bits der Maske direkt auf dieses Argument:

$ Ummask 007  # Setzen Sie die Maske auf 007 $ Ummask  # Zeigen Sie die Maske (in Oktal) an 0007  # 0 - Spezielle Berechtigungen (setUid | setgid | klebrig)  # 0 - (u) Ser/Besitzer Teil der Maske  # 0 - (g) Teil der Maske  # 7-(o) THRE/NICHT-GROP-TEIL VON MASKE $ Ummask -S # Zeigen Sie die Maske symbolisch an u=rwx, g=rwx, o= 

Wenn weniger als 4 Ziffern eingegeben werden, werden führende Nullen angenommen. Ein Fehler ergeben sich, wenn das Argument keine gültige Oktalummer ist oder wenn es mehr als 4 Ziffern hat.[4] Die drei am weitesten rechts rechts differenzierten Ziffern befassen sich mit dem "Eigentümer", "Gruppen" bzw. "anderen" Benutzerklassen. Wenn eine vierte Ziffer vorhanden ist, befasst SetUid Bit, das setgid bit und die klebriges Stück.

Oktalcodes

Oktalendigit in
umask Befehl
Berechtigungen Die Maske wird
verbieten, während der Dateierstellung festgelegt zu werden
0 Jede Berechtigung kann festgelegt werden (lesen, schreiben, ausführen)
1 Die Einstellung der Ausführungsgenehmigung ist verboten (lesen und schreiben)
2 Die Einstellung der Schreibberechtigung ist verboten (lesen und ausführen)
3 Die Einstellung von Schreib- und Ausführungsgenehmigungen ist verboten (nur lesen)
4 Die Einstellung der Leserlaubnis ist verboten (schreiben und ausführen)
5 Die Einstellung von Lesen und Ausführen der Erlaubnis ist verboten (nur schreiben)
6 Die Einstellung von Lesen und Schreiben ist verboten (nur ausführen)
7 Alle Berechtigungen sind untersagt, festgelegt zu werden (keine Berechtigungen)

Einstellen der Maske mit symbolischer Notation

Wann umask wird unter Verwendung symbolischer Notation aufgerufen. Es wird die Flags gemäß den angegebenen Flags ändern oder festlegen Maskexpression mit der Syntax:

[Benutzerklasse-Letter] Operator Berechtigungssymbole

Beachten Sie, dass diese Syntax bei der Verwendung der nicht funktioniert C Shell Aufgrund des unterschiedlichen Verhaltens seines eingebauten Verhaltens umask Befehl.

Mehrere Maskexpressionen werden durch Kommas getrennt.

Ein Raum endet die Maskexpression(s).

Das Berechtigungen werden auf verschiedene Benutzerklassen angewendet:

Brief Klasse Beschreibung
u Benutzer der Eigentümer
g Gruppe Benutzer, die Mitglieder der Gruppe der Datei sind
o Andere Benutzer, die nicht Eigentümer der Datei oder Mitglieder der Gruppe sind
a alle alle drei oben genannten, genauso wie Ugo. (Die Standardeinstellung, wenn nein Benutzerklasse-Letter sind in der angegeben Maskexpression.))

Das Operator Gibt an, wie die Berechtigungsmodi der Maske eingestellt werden sollen.

Operator Einfluss auf die Maske
+ Die angegebenen Berechtigungen sind aktiviert, die nicht angegebenen Berechtigungen sind unverändert.
- Die angegebenen Berechtigungen sind verboten, aktiviert zu werden, die nicht angegebenen Berechtigungen sind unverändert.
= Die angegebenen Berechtigungen sind aktiviert, die nicht angegebenen Berechtigungen sind verboten, aktiviert zu werden.

Das Berechtigungssymbole Geben Sie an, welche Einstellungen für die Dateiberechtigte von der Maske zulässig oder verboten werden sollen.

Symbol Name Beschreibung
r lesen rEad eine Datei oder listen Sie den Inhalt eines Verzeichnisses auf
w schreiben wRitus zu einer Datei oder einem Verzeichnis
x ausführen exECUTE eine Datei oder einen Verzeichnisbaum wieder aufnehmen
X Sonderausführung Sehen Symbolische Modi.
s setUid/gid Sehen Dateiberechtigungen.
t klebrig Siehe Dateiberechtigungen.

Zum Beispiel:

Ummask U-w

Verbieten wRituserlaubnis, auf die festgelegt zu werden user. Der Rest der Flaggen in der Maske bleibt unverändert.

Beispiel für mehrere Änderungen:

Ummask U-W, g=r, o+r

Dies würde die Maske so einstellen, dass sie:

  1. verbieten wRituserlaubnis, auf die festgelegt zu werden uSer, während der Rest der Flags unverändert bleibt;
  2. erlaube die rEAD -Erlaubnis, für die aktiviert zu werden gunterbieten wRitus und exECUTE Erlaubnis für die gRoup;
  3. erlaube die rEAD -Erlaubnis für die Aktivierung für other, während der Rest der oThere Flaggen unverändert.

Beispiele für Befehlszeilen

Hier sind weitere Beispiele für die Verwendung der Verwendung der umask Befehl zum Ändern der Maske:

umask Befehl ausgestellt Wie die Maske die Berechtigungen von beeinflussen wird anschließend Dateien/Verzeichnisse erstellt
Ummask a+r Ermöglicht die Leserlaubnis für alle Benutzerklassen. Der Rest der Maskenbits bleibt unverändert
Ummask A-X Verbot, die Erlaubnis für alle Benutzerklassen auszuführen; Der Rest der Maskenbits bleibt unverändert
Ummask A+rw Ermöglicht das Lesen oder Schreiben für alle Benutzerklassen. Der Rest der Maskenbits bleibt unverändert
Ummask+rwx Ermöglicht das Lesen, Schreiben oder Ausführen der Berechtigung, für alle Benutzerklassen aktiviert zu werden. (Hinweis: Auf einigen UNIX -Plattformen wird die Maske zu einem Standard wiederhergestellt.)
Ummask u = rw, go = = Ermöglichen Sie, dass das Lesen und Schreiben der Berechtigung für den Eigentümer aktiviert werden kann, während die Ausführung der Erlaubnis für den Eigentümer verboten wird. verbieten, Berechtigungen für die Gruppe und andere zu ermöglichen
Ummask u+w, go-w Erlauben Sie, dass die Schreibberechtigung für den Eigentümer aktiviert werden; Schreiben Sie die Erlaubnis, für die Gruppe und andere aktiviert zu werden;
Ummask -S Zeigen Sie die aktuelle Maske in symbolischer Notation an
Ummask 777 Lesen, Schreiben und Führen Sie die Erlaubnis für alle nicht aus (wahrscheinlich nicht nützlich, da selbst der Eigentümer keine mit dieser Maske erstellten Dateien lesen kann!)
Ummask 000 Ermöglichen Sie Lesen, Schreiben und Ausführen der Genehmigung für alle (potenzielles Sicherheitsrisiko)
Ummask 077 Ermöglichen Sie dem Eigentümer der Datei lesen, schreiben und ausführen
Ummask 113 Lesen oder Schreibberechtigungen für den Eigentümer und die Gruppe zulassen, aber nicht die Erlaubnis ausführen; Ermöglichen
Ummask 0755 gleichwertig U-rwx, go = w. (Das 0 Gibt an, dass die Spezielle Modi (SetUid, setgid, klebrig) kann aktiviert sein.)

Beispiel zeigt den Effekt von umask:

$ Ummask -S # Zeigen Sie die (häufig anfängliche) Einstellung  u = rwx, g = rx, o = rx $ gcc hello.c # Kompilieren und erstellen Sie eine ausführbare Datei a.out $ ls -l a.out-rwxr-xr-X 1 Me Developer 6010 Jul 10 17:10 A.OUT  $ # Die Ummask verbot die Schreibberechtigung für Gruppen und andere $ LS> LISTOFMYFILES # Ausgabedatei, die durch Umleitung erstellt wurde $ ls -l listofmyFiles-RW-R-R-- 1 ME Entwickler 6010 Jul 10 17:14 ListofMyFiles  $ # Die Ummask verbot die Schreibberechtigung für Gruppen und andere $ ############################################################ $ Ummask U-w # Die Benutzererlaubnis von Benutzer entfernen von annen $ Ummask -Su = rx, g = rx, o = rx $ LS> ProtectedListOffiles$ LS -L ProtectedListOffiles-R- R- R-- 1 ME Developer 6010 Jul 10 17:15 ProtectedListOffiles  $ RM ProtectedListOffilesOverride R- r- r-- ME/Entwickler für ProtectedListOffiles?  $ # Warnung, dass ProtectedListOffiles nicht beschreibbar ist. Beantwortet y wird die Datei entfernen $ ##################################################################################### $ Ummask G-R, O-R # Gruppenlesen und andere Lesen aus Maske entfernt $ Ummask -Su = rx, g = x, o = x $ ls> SecretListOffiles$ LS -L SecretListOffiles-R -------- 1 ME Entwickler 6010 Jul 10 17:16 SecretListOffiles 

Maskeneffekt

Die Maske wird angewendet, wenn eine Datei erstellt wird. Wenn die Maske ein Bit auf "1" eingestellt ist, bedeutet dies, dass die entsprechende Dateiberechtigung immer ist deaktiviert Wenn Dateien anschließend erstellt werden. Ein Bit auf "0" in der Maske eingestellt bedeutet, dass die entsprechende Erlaubnis erfolgt bestimmt durch den Antragsprozess und die OS Wenn Dateien anschließend erstellt werden. Mit anderen Worten, die Maske fungiert als Filter im letzten Stadium, der Berechtigungen abstreift, wenn eine Datei erstellt wird. Jedes Bit, das auf eine "1" eingestellt ist, streift diese entsprechende Berechtigung für die Datei ab.

Wie die Maske angewendet wird

Wie Ziffern in der umask Der Befehl wird in der Maske angezeigt und wirkt sich schließlich auf die Anfrage eines Programms zum Erstellen einer Datei mit z. voll (rwx) Berechtigungen
Ziffer in
 umask Befehl
Binär in
die Maske
Negation
von Maske
Logisch und
mit "rwx" Anfrage[5] 
0 000 111 rwx
1 001 110 rw-
2 010 101 R-X
3 011 100 r--
4 100 011 -WX
5 101 010 -W-
6 110 001 --x
7 111 000 ---

Programmatisch wird die Maske vom Betriebssystem angewendet, indem zuerst die Maske negiert (ergänzt) und dann eine logische und mit dem angeforderten Dateimodus ausgeführt werden. Im [wahrscheinlich] ersten Unix -Handbuch, um seine Funktion zu beschreiben,[6] Das Handbuch sagt,

Der tatsächliche Modus ... der neu geschaffenen Datei ist die logische und des angegebenen Modus und die Ergänzung des Arguments. Nur die 9 Bit der Maske (die Schutzbits) beteiligen sich. Mit anderen Worten, die Maske zeigt [zeigt] die Bits an, die ausgeschaltet werden sollen, wenn Dateien erstellt werden.

-UNIX Eighth Edition Manual, Bell Labs Unix (Handbuch), AT & T Laboratories

Ausnahmen

Viele Betriebssysteme erlauben nicht, dass eine Datei mit Ausführungsberechtigungen erstellt werden kann. In diesen Umgebungen werden neu erstellte Dateien immer für alle Benutzer deaktiviert.

Die Maske wird im Allgemeinen nur auf Funktionen angewendet, die eine neue Datei erstellen. Es gibt jedoch Ausnahmen. Zum Beispiel bei der Verwendung Unix und GNU Versionen von chmod Um die Berechtigungen einer Datei festzulegen und eine symbolische Notation verwendet, und kein Benutzer angegeben wird, wird die Maske auf die angeforderten Berechtigungen angewendet, bevor sie auf die Datei angewendet werden. Zum Beispiel:

$ Ummask 0000 $ Chmod +RWX -Dateiname$ LS -L -Dateiname-Rwxrwxrwx Dateiname $ Ummask 0022 $ Chmod +RWX -Dateiname$ LS -L -Dateiname-rwxr-xr-x Dateiname 

Prozesse

Jeder Prozess hat eine eigene Maske, die angewendet wird, wenn der Prozess eine neue Datei erstellt. Wenn eine Shell oder ein anderer Prozess einen neuen Prozess hervorbringt, erbt der Kinderprozess die Maske von ihrem übergeordneten Prozess.[7] Wenn der Prozess a ist HülseDie Maske wird durch die verändert umask Befehl. Wie bei anderen Prozessen erbt jeder Prozess, der von der Shell gestartet wird, die Maske von Shell.

Mount -Option

In dem Linux Kernel, das fett, HFS, HPFS, NTFS, und UDF Dateisystem Fahrer unterstützen a Ummask Mount -Option, was steuert, wie die Festplatteninformationen den Berechtigungen zugeordnet werden. Dies ist nicht dasselbe wie die oben beschriebene pro Prozessmaske, obwohl die Berechtigungen auf ähnliche Weise berechnet werden. Einige dieser Dateisystemtreiber unterstützen auch separate Masken für Dateien und Verzeichnisse, indem sie Mount -Optionen wie z. fmask.

Siehe auch

Verweise

  1. ^ "UNIX 7th Edition Manual, Bell Labs Unix". Handbuch. AT & T Laboratorien. Abgerufen 2019-05-14.
  2. ^ Olczak, Anatole (2019-06-09). "Korn Shell: UNIX- und Linux -Programmierhandbuch". Oreilly. Addison-Wesley Professional. Abgerufen 2013-01-14.
  3. ^ "Ummask", Die Einzel -Unix -Spezifikation, Version 2 (Handbuch), The Open Group, 1997, abgerufen 2013-01-14
  4. ^ Notiz: Einige Programmiersprachen erfordern ein Präfix -Symbol vor Oktalnotation wie die Ziffer 0 oder die Buchstaben o oder q. Das umask Der Befehl verwendet diese Art von Präfixnotation nicht - nur die Oktalstellen werden verwendet.
  5. ^ Notiz: In den Betriebssystemen werden in der Regel auch Ausführungsberechtigungen für neu erstellte Dateien ausgesetzt.
  6. ^ "UNIX 8th Edition Manual, Bell Labs Unix". Handbuch. AT & T Laboratorien. Abgerufen 2013-01-14.
  7. ^ "Ummask (2)", Handbuch von Linux Programmer Release 3.32 (Handbuch), Linux Man-Pages-Projekt, 9. Januar 2008, abgerufen 2013-01-01