Was ist umask unter Linux?

UMASK in Linux- oder Unix-Systemen wird als Benutzermaske oder auch als Maske zur Erstellung von Benutzerdateien bezeichnet. Dies ist eine Basis- oder Standardberechtigung, wenn eine neue Datei oder ein neuer Ordner auf dem Linux-Rechner erstellt wird.

Er wird von mehreren Befehlen in Linux wie mkdir, touch, tee und anderen Befehlen verwendet, die Dateien und Verzeichnisse erstellen. Er wird bei jedem einzelnen Schritt einbezogen, wenn eine neue Datei oder ein neues Verzeichnis erstellt wird.

Dateiberechtigungen:

Bevor wir zum Tieftauchen und zum Verständnis von Umask übergehen, lassen Sie uns zunächst kurz die Dateierlaubnis verstehen.

Linux ist für seine Sicherheit bekannt. Jede Datei oder jedes Verzeichnis in Linux verfügt über einen bestimmten Satz von Berechtigungen und Eigentümern. Lassen Sie uns einen Blick auf die Benutzerklasse unten werfen.

Jeder Datei in Linux sind unten drei Benutzerklassen zugeordnet.

  1. Benutzer – Ein Benutzer, der Eigentümer der Datei ist – Standardmäßig gibt dies an, wer die Datei erstellt hat, sofern Sie sie nicht ändern.
  2. Gruppe – Dies zeigt an, dass den Personen in der Gruppe Berechtigungen für die Datei zugewiesen werden.
  3. Andere – Dies schränkt die anderen Benutzer ein, die nicht der Eigentümer oder in der zugewiesenen Gruppe sind.

Es gibt drei Arten des Dateizugriffs für jede oben erwähnte Benutzerklasse.

  1. r – Leseberechtigung – die Fähigkeit, den Inhalt der Datei zu lesen
  2. w – Schreibberechtigung – die Fähigkeit, den Inhalt der Datei zu ändern
  3. x – Ausführungserlaubnis – die Fähigkeit, die Datei als Programm auszuführen

Das obige Konzept sagt Ihnen, wer den Dateiinhalt lesen, den Dateiinhalt ändern oder das Programm ausführen darf.

Ansichtsberechtigungen – Symbolischer Modus:

Schauen wir uns unten die Eigentumsverhältnisse der Dateien an. Sie können die Informationen auf Ihrer Linux-Maschine abrufen, indem Sie den Befehl ls -l eingeben.

Linux Umask erklärt

Das erste Zeichen in der obigen Abbildung zeigt den Dateityp an. Es könnte verschiedene Dateitypen unter Linux geben, wie unten dargestellt.

– – Gibt die einfache reguläre Datei mit verschiedenen Erweiterungen wie .txt, .json, .sh, .py, .rb usw. an
d Zeigt Verzeichnis/Ordner an
l Gibt einen symbolischen Link oder Symlink oder Softlink an
c Zeigt eine Zeichengerätedatei an
b Zeigt an, dass eine Gerätedatei blockiert wird

Die nächsten neun Symbole sind wie folgt in drei Teile gegliedert.

rwx Der Dateieigentümer kann den Inhalt lesen, den Inhalt ändern und die Datei als Programm ausführen.
r-x Mitglieder in der Gruppe „Benutzer“ können den Inhalt lesen und die Datei als Programm ausführen, aber den Dateiinhalt nicht verändern.
r-x Derjenige, der nicht der Eigentümer und auch nicht das Mitglied der Gruppe ist, d.h. andere, kann ebenfalls den Inhalt der Datei lesen und die Datei als Programm ausführen, aber den Dateiinhalt nicht verändern.

Ansichtsberechtigungen – Numerischer Modus:

Es gibt eine zusätzliche Möglichkeit, Berechtigungen durch Zahlen darzustellen, die numerischer Modus genannt wird.

Sehen wir uns das unten stehende numerische Dateiberechtigungsdiagramm an.

0

Keine Genehmigung

1

–x

Nur Ausführungserlaubnis

2

-w-

Nur Schreibberechtigung

3

-wx

Schreib- und Ausführungsberechtigung

4

r–

Nur Leseberechtigung

5

r-x

Lese- und Ausführungserlaubnis

6

rw-

Lese- und Schreibberechtigung

7

rwx

Lese-, Schreib- und Ausführungserlaubnis

Wenn ich auf dieses numerische Erlaubnisdiagramm verweise und es auf dasselbe Verzeichnis anwende, das im obigen Bild erwähnt wird, sieht die Erlaubnis wie unten aus.

rwx 4+2+1 7
r-x 4+0+1 5
r-x 4+0+1 5

Die numerische Berechtigung für das Verzeichnis testdir ist also 755.

UMASK verstehen:

Lassen Sie uns eine neue Datei und ein neues Verzeichnis durch Ausführen des folgenden Befehls erstellen.

$ touch testfile
$ mkdir testdir

Sehen wir uns die Berechtigungen von testfile und testdir an, indem wir den Befehl ls -l ausführen.

$ ls -l

Output:
drwxr-xr-x  2 niteshb users    4096 Mar 21 22:43 testdir
-rw-r--r--  1 niteshb users       0 Mar 21 22:43 testfile

Haben Sie die Genehmigungen bemerkt? Sie sind unterschiedlich, oder? Das liegt an dem Standard-umask-Wert, der in der Linux-Maschine eingestellt ist.

Standardmäßig ist auf dem Linux-Rechner die Standard-Erstellungsberechtigung für eine Datei 666, was dem Eigentümer, der Gruppe und anderen Lese- und Schreibberechtigung gibt, und 777 für ein Verzeichnis, was Lese-, Schreib- und Ausführungsberechtigung für den Eigentümer, die Gruppe und andere bedeutet.

Wie wir wissen, können Verzeichnisse nicht ausführbar sein. Warum brauchen Verzeichnisse dann eine Ausführungserlaubnis? Nun, die Ausführungserlaubnis für das Verzeichnis besteht darin, den Zugriff auf Inhalte unterhalb des Verzeichnisses zu erlauben. Wenn wir mit dem chmod-Befehl die Erlaubnis von directory auf 666 ändern und versuchen, per cd-Befehl in das Verzeichnis zu gehen, erhalten Sie den Fehler permission denied.

Bei den meisten Linux-Distributionen ist der systemweite Standardwert in pam_umask.so oder in der Datei /etc/profile gesetzt. Indem wir den Wert in der Datei ~/.bashrc im Home-Verzeichnis des Benutzers hinzufügen, können wir einen für den Benutzer spezifischen umask-Wert festlegen.

Um den umask-Wert zu überprüfen, führen Sie den Befehl umask aus.

$ umask

Ausgabe:

0022

Wir können die allererste 0 aus den obigen vier Zahlen vorerst ignorieren. Das ist ein Teil der erweiterten Erlaubnis in Linux. Das kann verhindern, dass eine Datei geändert werden kann, selbst wenn Sie Schreibberechtigung haben, oder wir können verhindern, dass eine Datei gelöscht wird, selbst wenn Sie der Root-Benutzer sind. In diesem Blog werden wir uns nur auf die anderen drei Zahlen konzentrieren.

Um den aktuellen Sitzungsummaskenwert zu ändern, führen Sie den untenstehenden Befehl aus, gefolgt vom gewünschten Wert.

$ umask 0044

Wie Dateien und Verzeichnisse ihre Berechtigungen erhalten:

Der mit umask verbundene Wert ist NICHT die Berechtigung, die Sie für Ihre Dateien und Verzeichnisse erhalten.

Es gibt eine sehr einfache Berechnung. Wie wir oben erwähnt haben, ist der Standardwert für eine Datei 666 und für ein Verzeichnis 777. Um Berechtigungsbits für neue Dateien oder Verzeichnisse zu berechnen, subtrahieren Sie den umask-Wert vom Standardwert.

Lassen Sie uns zum Beispiel berechnen, wie sich eine neue Datei oder ein neues Verzeichnis aufgrund von umask auf die Zugriffsrechte auswirkt.

  • Dateien: 666 – 022 = 644. Gemäß der Berechtigung kann der Eigentümer die Datei lesen und ausführen. Gruppen und andere können die Datei lesen.
  • Verzeichnis: 777 – 022 = 755. Das bedeutet, dass der Eigentümer alle Lese-, Schreib- und CD-Berechtigungen für das Verzeichnis hat. Gruppen und andere können den Inhalt des Verzeichnisses lesen und auflisten und cd in das Verzeichnis legen.

Sie können den Umaskwert auch in numerischer Form anzeigen, indem Sie den nachstehenden Befehl ausführen.

$ umask

Ausgabe:

u=rwx,g=rx,o=rx

Im Gegensatz zur numerischen Notation enthält der symbolische Notationswert die Berechtigungsbits, die auf die neu erstellten Dateien und Verzeichnisse gesetzt werden.

Einstellen des Maskenwertes:

Die Dateierstellungsmaske kann mit oktaler oder symbolischer Notation gesetzt werden. Um die Änderungen dauerhaft zu machen, setzen Sie den neuen umask-Wert in einer globalen Konfigurationsdatei wie /etc/profile file, die alle Benutzer betrifft, oder in den Shell-Konfigurationsdateien eines Benutzers wie ~/.profile, ~/.bashrc oder ~/.zshrc, die nur den Benutzer betreffen. Die Benutzerdateien haben Vorrang vor den globalen Dateien.

Bevor Sie Änderungen an dem umaskWert vornehmen, stellen Sie sicher, dass der neue Wert kein potenzielles Sicherheitsrisiko darstellt. Werte, die weniger restriktiv sind als 022die, sollten mit großer Vorsicht verwendet werden. Das umask 000bedeutet zum Beispiel, dass jedermann Lese-, Schreib- und Ausführungsrechte für alle neu erstellten Dateien hat.

Nehmen wir an, wir wollen restriktivere Berechtigungen für die neu erstellten Dateien und Verzeichnisse setzen, damit andere nicht auf die Verzeichnisse zugreifen cdund Dateien lesen können. Die Berechtigungen, die wir wollen, gelten 750für Verzeichnisse und 640Dateien.

Um den umaskWert zu berechnen, subtrahieren Sie einfach die gewünschten Berechtigungen von der Standard-Berechtigung:

Umask-Wert: 777-750 = 027

Der gewünschteumask, in numerischer Notation dargestellte Wert ist 027.

Um den neuen Wert systemweit dauerhaft einzustellen, öffnen Sie die /etc/profileDatei mit Ihrem Texteditor und ändern oder fügen Sie die folgende Zeile am Anfang der Datei hinzu:

umask 0027

Damit die Änderungen wirksam werden, führen Sie den folgenden Quellbefehl aus oder melden Sie sich ab und wieder an:

$ source /etc/profile

Um die neuen Einstellungen zu überprüfen, werden wir eine neue Datei und ein neues Verzeichnis mit den folgenden Befehlen erstellen.

$ mkdir newtestdir
$ touch newtestfile

Wenn Sie die Berechtigungen mit dem ls-Befehl überprüfen, werden Sie feststellen, dass die neue Datei 640und das neue Verzeichnis 750die Berechtigungen haben, die wir wollten:

drwxr-xr--  2 niteshb  users    4096 Mar 21 22:43 newtestdir
-rw-r-----  1 niteshb  users       0 Mar 21 22:43 newtestfile

Eine andere Möglichkeit, die Maske für die Dateierstellung zu setzen, ist die Verwendung der symbolischen Notation. Sie umask u=rwx,g=rx,o=ist zum Beispiel die gleiche wie umask 027.

Weitere Informationen zu umask findest Du auch auf der Man-Page des Werkzeugs. Du kannst sie direkt auf der Shell über den folgenden befehl aufrufen:

$ man umask

Das könnte dich auch interessieren …