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.
- Benutzer – Ein Benutzer, der Eigentümer der Datei ist – Standardmäßig gibt dies an, wer die Datei erstellt hat, sofern Sie sie nicht ändern.
- Gruppe – Dies zeigt an, dass den Personen in der Gruppe Berechtigungen für die Datei zugewiesen werden.
- 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.
- r – Leseberechtigung – die Fähigkeit, den Inhalt der Datei zu lesen
- w – Schreibberechtigung – die Fähigkeit, den Inhalt der Datei zu ändern
- 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.
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 umask
Wert vornehmen, stellen Sie sicher, dass der neue Wert kein potenzielles Sicherheitsrisiko darstellt. Werte, die weniger restriktiv sind als 022
die, sollten mit großer Vorsicht verwendet werden. Das umask 000
bedeutet 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 cd
und Dateien lesen können. Die Berechtigungen, die wir wollen, gelten 750
für Verzeichnisse und 640
Dateien.
Um den umask
Wert 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/profile
Datei 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 640
und das neue Verzeichnis 750
die 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