Lors de la création de répertoires, mkdir -m <mode> <dir>
permet de créer un ou plusieurs répertoires avec le mode / autorisations défini (de manière atomique).
Existe-t-il un équivalent pour la création de fichiers sur la ligne de commande?
Quelque chose qui ressemble à:
open("file", O_WRONLY | O_APPEND | O_CREAT, 0777);
Est-ce que l'utilisation touch
suivie de chmod
ma seule option est ici?
Edit: Après avoir essayé la suggestion de teppic à utiliser install
, je l’ai parcourue strace
pour voir à quel point elle était atomique. La réponse est, pas très:
$ 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
...
Pourtant, il s’agit d’une seule commande shell, une commande que je ne connaissais pas auparavant.
install