Tengo archivos creados en mi directorio personal con solo permiso de lectura del usuario ( r-- --- ---
). Quiero copiar este archivo a otro directorio /etc/test/
que tenga el permiso de carpeta de 744 ( rwx r-- r--
). Necesito permitir que el archivo que estoy copiando herede el permiso de la carpeta en la que se copia porque hasta ahora, cuando lo copio, los permisos de los archivos siguen siendo los mismos ( r-- --- ---
). He intentado el comando setfacl, pero no funcionó. Por favor ayuda.
PD. No puedo simplemente chmod -r /etc/test/
porque hay muchos archivos que se copiarán en esta carpeta con el tiempo y no quiero ejecutar el comando chmod cada vez que se copia un archivo.
setfacl
comando intentaste? ¿Cuál fue su salida?/bin/cp
sin opciones?Respuestas:
Los permisos generalmente no se propagan por el directorio en el que se copian los archivos, sino que los permisos nuevos son controlados por el usuario
umask
. Sin embargo, cuando copia un archivo de una ubicación a otra, se trata de un caso especial en el queumask
se ignora esencialmente al usuario y se conservan los permisos existentes en el archivo. Comprender este concepto es la clave para obtener lo que quieres.Por lo tanto, para copiar un archivo pero "quitar" sus permisos actuales, puede indicar
cp
que "no conservar" con el--no-preserve=all
interruptor.Ejemplo
Digamos que tengo el siguiente archivo como tú.
Y como has confirmado si solo lo copiamos ciegamente usando
cp
, obtenemos esto:Ahora repitamos esto, pero esta vez le pedimos
cp
que "quite los permisos":Entonces, el archivo copiado ahora tiene sus permisos establecidos en 664, ¿de dónde los obtuvo?
Si cambié mi
umask
a otra cosa, podemos repetir esta prueba por tercera vez y ver los efectos queumask
tiene sobre los no conservadoscp
:Observe que los permisos ya no son 664, ¿pero son 640? Eso fue dictado por el
umask
. Le estaba diciendo a cualquier comando que creara un archivo que deshabilitara los 5 bits inferiores en los permisos ... estos chicos: (----wxrwx
).fuente
--no-preserve
bandera no es estándar, presumiblemente un GNUismo.