¿Permiso de herencia de archivo del directorio en el que se copia?


9

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.


¿Qué setfaclcomando intentaste? ¿Cuál fue su salida?
Mikel

setfacl -Rm d: u :: rwx, d: g :: r, d: o :: r / etc / test. No hubo salida, solo aceptó el comando.
LUUUUUUUUUUUUU

¿Cómo estás copiando el archivo? ¿Qué sucede si usa /bin/cpsin opciones?
Mikel

El comando que uso es sudo cp / home / file / etc / test / file. Intenté usar / bin / cp ahora también sin resultados diferentes
LUUUUUUUUUUUUU

Respuestas:


14

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 que umaskse 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 cpque "no conservar" con el --no-preserve=allinterruptor.

Ejemplo

Digamos que tengo el siguiente archivo como tú.

$ mkdir -m 744 somedir

$ touch afile
$ chmod 400 afile 

$ ll
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile

Y como has confirmado si solo lo copiamos ciegamente usando cp, obtenemos esto:

$ cp afile somedir/
$ ls -l somedir/
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile

Ahora repitamos esto, pero esta vez le pedimos cpque "quite los permisos":

$ rm -f somedir/afile 

$ cp --no-preserve=all afile somedir/

$ ls -l somedir/
total 0
-rw-rw-r--. 1 saml saml 0 Feb 14 15:21 afile

Entonces, el archivo copiado ahora tiene sus permisos establecidos en 664, ¿de dónde los obtuvo?

$ umask
0002

Si cambié mi umaska otra cosa, podemos repetir esta prueba por tercera vez y ver los efectos que umasktiene sobre los no conservados cp:

$ umask 037
$ rm somedir/afile 

$ cp --no-preserve=all afile somedir/
$ ls -l somedir/
total 0
-rw-r-----. 1 saml saml 0 Feb 14 15:29 afile

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).


La --no-preservebandera no es estándar, presumiblemente un GNUismo.
vonbrand

Correcto, gracias quise decir eso en la A.
slm

en el espíritu del día de San Valentín te doy un beso virtual, ¡funciona! ¡GRACIAS!
LUUUUUUUUUUUUU
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.