Al crear directorios, mkdir -m <mode> <dir>permite crear uno o más directorios con el modo / permisos establecidos (atómicamente).
¿Hay un equivalente para crear archivos, en la línea de comando?
Algo parecido a:
open("file", O_WRONLY | O_APPEND | O_CREAT, 0777);
¿El uso touchseguido de chmodmi única opción aquí?
Editar: Después de probar la sugerencia de Teppic a su uso install, lo corrió a través stracede ver lo cerca que atómica que era. La respuesta es, no muy:
$ 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
...
Aún así, es un comando de shell único y uno que no conocía antes.
shell
permissions
files
quornian
fuente
fuente

installinstall, por-m 755lo que no es necesario.touchsiempre crea el archivo si no existe, siempre sigue enlaces simbólicos y siempre hace que el archivo no sea ejecutable. Puede decidir los bits de lectura y escritura a través de la umask .La creación de archivos atómicos "seguros" (en particular, con
O_NOFOLLOW) no es posible con las herramientas de shell tradicionales. Puedes usarsysopenen perl. Si tiene lamktemputilidad inspirada en BSD , crea un archivo atómicamente conO_NOFOLLOW; tendrá que llamarchmoddespués si el modo predeterminado de 600 no es el correcto.fuente
touchtuviera la opción de crear archivos ejecutables, eso es realmente lo que busco. Entoncesumaskpodría usarse para adaptar los detalles. Lamentablemente no hay forma conumaskytouchpara crear ejecutables.touchseguido dechmod +x.Tengo un script bash en mi directorio de inicio que
/home/anthony/touchmod.shcontiene:Entonces, si necesito crear
readme.txtcon 644 permisos, puedo escribir:fuente