
Necesito hacer una copia de seguridad de algunos datos con la opción "p" del comando tar. El problema es que el lugar donde voy a restaurar estos datos tendrá los mismos usuarios, pero esos usuarios pueden tener ID diferentes. ¿Eso hace alguna diferencia con tar o restaurará los permisos correctamente por nombre de usuario?
Respuesta1
tar
registra permisos basados en el UID y el 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 tiene el UID 3300.
Todo virtual (quiero decirlo 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.
Respuesta2
Resumiendo respuestas anteriores y agregando alguna información importante:
Al crear archivos,
tar
siempre se conservará el ID de usuario y grupo de los archivos.a menos quedicho lo contrario con--owner=NAME
,--group=NAME
. En cualquier caso, cada archivo siempre tendrá un asociadonuméricoID de usuario y grupo.GNU
tar
, y quizás otras versiones detar
,tambiénalmacenar el usuario y el gruponombres, a menos que--numeric-owner
se utilice.bsdtar
También almacena nombres de usuarios y grupos de forma predeterminada, pero no tenía soporte para--numeric-owner
la opción cuandocreandoarchivos hasta la versión 3.0 (tenga en cuenta que admitía la opción cuandoextrayendoarchivos desde hace mucho más tiempo).Al extraer comousuario regular, todos los archivossiempreser propiedad del usuario. Y no puede ser diferente, ya que extraer un archivo significa crear uno nuevo en el sistema de archivos, y un usuario normal no puede crear un archivo y cederle la propiedad a otra persona.
Al extraer comoraíz,
tar
restaurará de forma predeterminada la propiedad de los archivos extraídos,a menos que--no-same-owner
Se utiliza, lo que le dará propiedad para rootearse.En GNU tar, bsdtar y quizás otras versiones de
tar
, la propiedad restaurada la realiza el usuario (y el grupo).nombre, si esa información está en el archivoyhay un usuario coincidente en el sistema de destino. De lo contrario, se restaura por ID. Si--numeric-owner
se proporciona la opción, los nombres de usuarios y grupos se ignoran y se utilizan los ID. En cualquier caso, siempre que se utilicen ID numéricos, no aparecerá un usuario y un grupo coincidentes.nonecesita existir en el sistema.Los permisos y las marcas de tiempo también se guardan en el archivo y se restauran de forma predeterminada, a menos que se utilicen opciones
--no-same-permissions
y/o .--touch
Cuando lo extrae el usuario, el del usuarioumask
esrestadode permisos a menos que--same-permissions
se utilice.--preserve-permissions
y--same-permissions
son alias, y tienen la misma funcionalidad que-p
¡Espero que esto ayude a aclarar el problema! :)
Respuesta3
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. Sólo si el usuario no existe en uno de los sistemas lo copiará con el uid, a menos que le indiques lo contrario.
Respuesta4
Utilice la opción --same-owner para GNU tar. Verhttp://www.gnu.org/software/tar/manual/html_section/Attributes.html