¿Tar conserva los permisos si cambian las ID de usuario?

20

Necesito hacer una copia de seguridad de algunos datos con la opción "p" en el comando tar. El problema es que el lugar donde voy a restaurar esta información tendrá todos los mismos usuarios, pero esos usuarios pueden tener ID diferentes. ¿Eso hace alguna diferencia en tar o restaurará los permisos correctamente por nombre de usuario?

Mario
fuente

Respuestas:

9

tarregistra permisos basados ​​en el UID y GID, no en la cadena asociada a ellos. Entonces, si el UID en un servidor era 3300 y estaba vinculado a 'bob', en el nuevo servidor el archivo será propiedad del usuario que tenga el UID 3300.

Todo virtual (quiero decir todo, pero nunca puedes estar 100% seguro) en UNIX usa los valores UID: GID, porque eso es lo que realmente se almacena en el nivel del sistema de archivos. El nombre es solo una simple búsqueda en el archivo passwd, las comprobaciones subyacentes se realizan utilizando los valores numéricos.

OchoBitTony
fuente
Ah, eso no es bueno ... Supongo que en la mayoría de las situaciones es adecuado. Desafortunadamente, no para mí ... Gracias, EightBitTony.
Marius
3
Lo más probable es que se refiera a GID (identificador de grupo), no a GUID (Identificador único global).
un CVn
66
GNU tar también guarda los datos de nombre de usuario / grupo, porque puedo verlo si enumero un archivo en una máquina que no tiene esos usuarios. Debe haber una forma de hacer que lo use durante la extracción.
Rob H
3
Esta respuesta es simplemente incorrecta. tar hace nombres de propietarios de registros.
Steffen Heil
55

Resumiendo respuestas anteriores y agregando información importante:

  • Al crear archivos, tarsiempre conservará los archivos de usuario y la ID de grupo, a menos que se lo indique con --owner=NAME, --group=NAME. Pero aún así siempre habrá un usuario y un grupo asociado con cada archivo.

  • GNU tar, y quizás otras versiones de tar, también almacenan los nombres de usuarios y grupos , a menos que --numeric-ownerse usen. bsdtar también almacena los nombres de usuarios y grupos de forma predeterminada, pero el soporte para la --numeric-owneropción al crear no apareció hasta bsdtar 3.0 (tenga en cuenta que bsdtar admitió la opción al extraer durante mucho más tiempo).

  • Cuando se extrae como usuario normal , todos los archivos serán siempre propiedad del usuario. Y no puede ser diferente, ya que extraer un archivo es crear un nuevo archivo en el sistema de archivos, y un usuario normal no puede crear un archivo y otorgarle la propiedad a otra persona.

  • Cuando se extrae como root , tarpor defecto restaurará la propiedad de los archivos extraídos, a menos que --no-same-owner se use, lo que le dará la propiedad al root.

  • En GNU tar, bsdtar, y tal vez otras versiones de tar, la propiedad restaurada se realiza por el usuario (y de grupo) nombre , si es que la información en el archivo y hay un usuario coincidente en el sistema de destino. De lo contrario, se restaura por ID. Si --numeric-ownerse proporciona la opción, los nombres de usuarios y grupos se ignoran.

  • Los permisos y las marcas de tiempo también se guardan en el archivo y se restauran de manera predeterminada, a menos que se usen opciones --no-same-permissionsy / o --touch. Cuando el usuario lo extrae, el usuario umaskse resta de los permisos a menos que --same-permissionsse use.

  • --preserve-permissionsy --same-permissionsson alias, y tienen la misma funcionalidad que-p

Espero que esto ayude a aclarar el problema! :)

MestreLion
fuente
3
Excelente respuesta; Responde a esta pregunta, así como a cualquier otra pregunta que pueda surgir sobre el tema.
user1107893
Cabe señalar que solo las versiones recientes de GNU tarpermiten especificar nombres arbitrarios en --ownero --group, en el pasado tarhicieron una búsqueda gratuita en la máquina actual /etc/passwdy se negaron a ejecutarse si no había coincidencia.
Matteo Italia
¿Qué sucede si crea un archivo con un nombre especificado --ownerpero también agregado en la --numeric-ownerbandera? ¿Cómo maneja el alquitrán estos requisitos competitivos?
CMCDragonkai
@CMCDragonkai: --ownery --numeric-ownerno son mutuamente excluyentes, y tienen propósitos muy distintos: --owner=USERNAMEanularán los archivos y los propietarios de directorios al archivar los archivos, mientras --numeric-ownerque simplemente no almacenarán el nombre de usuario, solo su ID numérica.
MestreLion
4

Use la opción --same-owner para GNU tar. Ver http://www.gnu.org/software/tar/manual/html_section/Attributes.html

Colin 't Hart
fuente
Esto está documentado como el valor predeterminado para los superusuarios, y parece responder a la pregunta del OP de manera diferente a la respuesta aceptada. (El enlace dice que cuando GNU tar se restaura usando --same-owner, primero busca los nombres en / etc / passwd). El único problema pendiente es si la versión OP de tar implementa --same-owner.
Mike Sherrill 'Cat Recall'
El OP está usando alguna distribución de Linux, mejor que incluso la posibilidad de usar GNU tar, creo. Y siguiendo la documentación es posible, mientras que la respuesta aceptada indica que no es ...
Colin 't Hart
@Catcall: lo siento, acepté la respuesta sin tener la oportunidad de probarla. A veces confío ciegamente en las personas. Aún así, la persona que respondió tenía razón, ya que no estaba restaurando con "- mismo propietario" y luego has agregado a la respuesta. Lástima que no puedo aceptar ambos. Estoy usando Debian Squeeze que de hecho admite "--same-owner". Gracias por el consejo.
Marius
@ Mario: Estoy bastante seguro de que puedes cambiar la respuesta aceptada cuando lo desees. (Solo señalaré que no he proporcionado ninguna respuesta a esta pregunta, solo comentarios. No tengo ningún representante en juego.)
Mike Sherrill 'Cat Recall'
4

Si está intentando transferir archivos entre dos sistemas, rsync establecerá de forma predeterminada los permisos por nombre de usuario en lugar de uid, mirando los nombres de usuario en ambos extremos. Solo si el usuario no existe en uno de los sistemas, lo copiará con el uid, a menos que usted indique lo contrario.

Conceder
fuente
Esto no responde directamente a la pregunta del OP, pero cualquiera que haga la pregunta del OP también debería aprender esto.
Mike Sherrill 'Cat Recall'