¿Qué conserva la bandera de tar -p (preservar permisos)?

19

¿Qué conserva el indicador -p cuando se crea y extrae un tarball? ¿Son los permisos rwx que conserva?

Cuando creé un htdocs/ tarball propiedad de root, al extraerlo a mi máquina local cambié la propiedad de root a mi usuario.

    
pregunta nicoX 09.05.2014 - 11:20

3 respuestas

17

La propiedad y los permisos son dos cosas diferentes. El indicador -p conserva los permisos . En los sistemas * nix, los usuarios normales no pueden cambiar la propiedad del archivo a un usuario que no sea él mismo.

Como se explicó aquí :

  

Solo los procesos con un ID de usuario efectivo igual al ID de usuario del archivo o con los privilegios apropiados pueden cambiar la propiedad de un archivo. Si _POSIX_CHOWN_RESTRICTED está en vigor para la ruta:

     
  • El cambio de la ID de usuario está restringido a procesos con los privilegios adecuados.

  •   
  • Se permite cambiar la ID del grupo a un proceso con una ID de usuario efectiva igual a la ID de usuario del archivo, pero sin los privilegios apropiados, si y solo si el propietario es igual al ID de usuario del archivo o (uid_t) -1 y el grupo es igual al ID del grupo efectivo del proceso de llamada o a uno de sus ID de grupo suplementarios.

  •   

El fundamento de esto ha sido bien explicado por @Gilles en esto Unix & amp; Respuesta de Linux:

  

La razón de esta restricción es que regalar un archivo a otro   el usuario puede permitir que sucedan cosas malas en situaciones poco comunes, pero aún importantes   situaciones Por ejemplo:

     
  • Si un sistema tiene habilitadas las cuotas de disco, Alice podría crear un archivo de escritura mundial bajo un directorio al que solo ella pueda acceder (por lo que no   otra persona podría acceder a ese directorio mundialmente editable), y luego ejecutar   chown para hacer que ese archivo sea propiedad de otro usuario Bill. El archivo   luego cuente bajo la cuota de disco de Bill a pesar de que solo Alice puede usar   archivo.
  •   
  • Si Alice regala un archivo a Bill, no hay rastro de que Bill no haya creado ese archivo. Esto puede ser un problema si el archivo contiene   datos ilegales o de otro modo comprometedores.
  •   
  • Algunos programas requieren que su archivo de entrada pertenezca a un usuario particular para autenticar una solicitud (por ejemplo, el   archivo contiene algunas instrucciones que el programa llevará a cabo en   nombre de ese usuario). Esto generalmente no es un diseño seguro, porque   incluso si Bill creó un archivo que contiene sintácticamente correcto   instrucciones, tal vez no tenía la intención de ejecutarlos en este   una hora en particular. No obstante, al permitir que Alice cree un archivo con   contenido arbitrario y lo han tomado como entrada de Bill solo puede hacer   cosas peores.
  •   

Entonces, incluso si usa el indicador --same-owner de tar, aún necesitará extraer los archivos como root para preservar la propiedad. Esa bandera está activada por defecto para root , entonces lo que quiere es:

sudo tar xpf foo.tgz
    
respondido por el terdon 09.05.2014 - 11:58
7

Hay 2 opciones más para tar que son interesantes:

--same-owner
       try extracting files with the same ownership as exists in the ar‐
       chive (default for superuser)

--no-same-owner
       extract files as yourself (**default for ordinary users**)

El segundo es el predeterminado, por lo que puede agregar --same-owner para guardar a su usuario. Probablemente tendrás que hacer esto con sudo .

Además de eso: esto solo funcionará en sistemas que admitan POSIX. Y los sistemas operativos que no sean Ubuntu podrían no tener estas 2 opciones (no son estándar).

    
respondido por el Rinzwind 09.05.2014 - 11:41
3

Para conservar el propietario ejecute como root o use el indicador --same-owner junto con el indicador -p al extraer.

    
respondido por el NGRhodes 09.05.2014 - 11:40

Lea otras preguntas en las etiquetas