mkdir -m <mode> <dir>
Bietet beim Erstellen von Verzeichnissen die Möglichkeit, ein oder mehrere Verzeichnisse mit den angegebenen Modi / Berechtigungen (atomar) zu erstellen.
Gibt es eine Entsprechung zum Erstellen von Dateien in der Befehlszeile?
Etwas Ähnliches wie:
open("file", O_WRONLY | O_APPEND | O_CREAT, 0777);
Wird hier die Option "Mein" touch
gefolgt von " chmod
Mein" verwendet?
Edit: Nachdem ich den Vorschlag von teppic ausprobiert hatte, durchlief install
ich ihn, um strace
zu sehen, wie nah es an atomarem war. Die Antwort ist nicht sehr:
$ strace install -m 777 /dev/null newfile
...
open("newfile", O_WRONLY|O_CREAT|O_EXCL, 0666) = 4
fstat(4, {st_mode=S_IFREG|0666, st_size=0, ...}) = 0
...
fchmod(4, 0600) = 0
close(4) = 0
...
chmod("newfile", 0777) = 0
...
Trotzdem handelt es sich um einen einzelnen Shell-Befehl, den ich vorher nicht kannte.
quelle
install
install
, und daher-m 755
nicht benötigt werden.touch
Erstellt die Datei immer, wenn sie nicht vorhanden ist, folgt immer symbolischen Verknüpfungen und macht die Datei immer nicht ausführbar. Sie können die Lese- und Schreibbits über die umask festlegen .Die "sichere" Erstellung atomarer Dateien (insbesondere mit
O_NOFOLLOW
) ist mit herkömmlichen Shell-Tools nicht möglich. Sie könnensysopen
in Perl verwenden. Wenn Sie das BSD-inspiriertemktemp
Dienstprogramm haben, erstellt es eine Datei atomar mitO_NOFOLLOW
; Sie müssenchmod
danach anrufen, wenn der Standardmodus von 600 nicht der richtige ist.quelle
touch
ich nur die Möglichkeit hätte, ausführbare Dateien zu erstellen, dann bin ich genau danach. Dannumask
könnten die Details zugeschnitten werden. Leider gibt es keine Möglichkeit mitumask
undtouch
ausführbare Dateien zu erstellen.touch
gefolgt vonchmod +x
.Ich habe ein Bash-Skript in meinem Home-Verzeichnis,
/home/anthony/touchmod.sh
das Folgendes enthält:Wenn ich also
readme.txt
mit 644 Berechtigungen erstellen muss, kann ich Folgendes eingeben:quelle