Ich bin völlig verwirrt zwischen umask und chmod. Beide werden verwendet, um Berechtigungen für die Dateien zu erteilen. Aber wo genau ist der Unterschied und wann man sie benutzt.
Ich habe die Online-Dokumentation gelesen, aber beide sehen für mich gleich aus.
umask: Mit umask werden Standarddateiberechtigungen festgelegt. Diese Berechtigungen werden während ihrer Erstellung für alle nachfolgenden Dateien verwendet. chmod: Wird zum Ändern von Datei- und Verzeichnisberechtigungen verwendet.
Nach meinem Verständnis, wenn zum Beispiel die Datei test.doc erstellt wird.
Standardmäßig gibt Unix den Umask-Code der Datei 022 aus.
Wenn ich es jetzt in chmod 666 test.doc ändere, kann ich die Berechtigungsstufe dieser Datei ändern.
Was ist nun, wenn ich umask 666 für dieselbe Datei verwende ?
Was für ein Unterschied passiert es, wenn ich chmod 666 und umask 666 benutze
umask
Legt eine Umgebungsvariable fest, die automatisch Dateiberechtigungen für neu erstellte Dateien festlegt .chmod
Ändert die Berechtigungen vorhandener Dateien .umask
setzt nicht "eine Umgebungsvariable". Dadurch wird die Erstellungsmaske für den Dateimodus der aktuellen Shell-Ausführungsumgebung festgelegt.Antworten:
Der Unterschied besteht darin, dass
umask
nur neue Dateien erforderlich sind . Wie Sie angegeben haben, legt umask die Standardberechtigungen fest, die eine Datei / ein Verzeichnis zur Erstellungszeit haben wird,umask
wirkt sich danach jedoch nicht mehr auf sie aus.chmod
Die Datei muss jedoch vor dem Ausführen erstellt werden.Wenn Sie ausführen
umask
, hat dies daher keinerlei Auswirkungen auf vorhandene Dateien.quelle
umask
Datei verwenden, sie hat keinfile
Argument.umask
ist eigentlich ganz anders alschmod
.Ein wichtiger Unterschied wurde noch nicht erwähnt:
chmod
setzt,umask
löscht (beschränkt) Berechtigungsbits. Deshalb heißt es "Maske" (wie in "Bitmaske").Wie David schrieb ,
umask
handelt es sich um eine Konfigurationseinstellung (auf Prozessebene), die nicht auf bestimmte Dateien angewendet wird (im Gegensatz zuchmod
).Das bringt uns zu einem weiteren wichtigen Punkt:
umask
ist nicht auf Dateien beschränkt. Es wird auch beim Erstellen von Verzeichnissen angewendet. (Siehe auch zB diese Antwort .)Wichtig ist auch, dass der
chmod
Befehl selbst nicht von der aktuell konfigurierten beeinflusst wirdumask
.Nun zu Ihrem Beispiel, was
umask 666
tun würde :Dem aktuellen Prozess (z. B. Ihrer Shell) wird mitgeteilt, dass alle neuen Dateisystemobjekte mit den
R
+W
Bits (4 + 2 = 6) erstellt werden sollen (aus den Berechtigungen, die beim Erstellen implizit oder explizit angefordert wurden). (666 ist also kein sehr praktischer Wert, da nur dieX
(Ausführungs-) Bits gesetzt werden können, aber nicht lesbare Dateien ...)Z.B:
quelle
UMASK = chmod 777 - Umask-Berechtigungen
So ähnlich.
quelle
Die Standardberechtigung für Verzeichnisse / Dateien lautet umask 022, Verzeichnisse werden standardmäßig mit der Berechtigung 755 (
drwx-rw-rw
) und Dateien mit 644 (-rw-r--r--
) festgelegt. Grundsätzlich subtrahieren Sie den Oktalwert der gewünschten Berechtigung von 777 für ein Verzeichnis und von 666 für eine Datei. Also aus dem obigen Beispiel:(directory) umask 022 => 777 - 022 = 755
(file) umask 022 => 666 - 022 = 644
Sie können das Ergebnis des
umask octal
Befehls in der Quelle finden, wenn Sie umask verwenden , abhängig vom Oktal und davon, ob es sich um eine Datei oder ein Verzeichnis handelt.Quelle
Allerdings , wenn Sie
chmod 022 <file>
für ein Verzeichnis, sollten Sie diese:d----w--w-
was nicht viel Sinn machen würde.Darunter finden Sie eine großartige Beschreibung des Oktalwerts, die Sie hier von Somnath Muluk mit großartigen Quellen abrufen können .
quelle