la actualización del submódulo de git falló con ‘fatal: se detectó propiedad dudosa en el repositorio en’

4 minutos de lectura

avatar de usuario
HuihuaJiang

Monté un nuevo disco duro en mi estación de trabajo Linux. Parece funcionar bien. Quiero descargar algún repositorio en el nuevo disco. Así que ejecuto git clone XXX, y funciona bien. Pero cuando cd en la carpeta y ejecuto git submodule update --init --recursive. falló con

fatal: detected dubious ownership in repository at '/media/data/users/jhu3szh/serialize'
To add an exception for this directory, call:

git config --global --add safe.directory /media/data/users/jhu3szh/serialize

Pensé que tal vez solo era una pequeña advertencia, así que ejecuté git config --global --add safe.directory /media/data/users/jhu3szh/serialize. Sin embargo, cuando ejecuto el submódulo git nuevamente, aparecieron más errores similares. Hay muchos submódulos en el repositorio.

Alguien me puede dar alguna explicación de lo que pasó? Busqué la información del error en google, pero apenas puedo obtener información útil. Gracias por adelantado.

  • ¿Estás seguro de que tienes los permisos adecuados en el directorio? Otras publicaciones sobre un problema similar sugieren que puede deberse a la falta de permisos.

    – Nox

    14 de julio a las 9:50

  • No es una cuestión de la modos de archivos en el repositorio (aunque definitivamente debería no configúrelos en 0777 en la mayoría de los casos, por lo que es posible que desee deshacer su chmod si puedes; desafortunadamente, sin restaurar desde una copia de seguridad, eso es generalmente difícil). La queja en cambio tiene que ver con propiedades decir, el ID de usuario que posee cada uno de los distintos directorios.

    – torek

    14 de julio a las 12:21

  • Puede asegurarse de que todos los repositorios sean propiedad del ID de propietario correcto (al no ejecutar cualquier cosa con sudo si es posible), o pasar por alto la seguridad (pero si lo hace, está tomando cierto nivel de riesgo como lo demuestra la existencia de CVE). Para corregir la propiedad de los repositorios existentes, utilice chown para cambiar su propiedad al propietario correcto. Por supuesto, esto requiere el uso de sudo—pero al menos puedes usarlo solo una vez, para arreglar esta condición, y luego dejar de usarlo…

    – torek

    14 de julio a las 12:22


  • Para eludir completamente la seguridad, agregue * como un directorio “seguro” (tenga en cuenta que esto requiere una versión de Git que admita *; 2..36 o posterior, por ejemplo).

    – torek

    14 de julio a las 12:25

  • @Koithé, todavía no

    –Huihua Jiang

    18 de julio a las 1:41

avatar de usuario
Stin

silencio todo safe.directory advertencias

tl; dr

Silenciar todas las advertencias relacionadas con git safe.directory sistema. Asegúrese de entender lo que está haciendo.

git config --global --add safe.directory '*'

Versión larga

Adaptado de esta publicación en No puedo agregar el directorio principal a directorio.seguro en Git.

Tuve el mismo problema y lo resolví deshabilitando directorio seguro cheques, que terminarán con todos los errores de “repositorio inseguro”.

Esto se puede hacer ejecutando el siguiente comando1:

git config --global --add safe.directory '*'

Lo que agregará la siguiente configuración a su global .gitconfig expediente:

[safe]
    directory = *

Antes de desactivar, asegúrese de entender esta medida de seguridady por qué existe. Tú no debería hacer esto si sus repositorios están almacenados en una unidad compartida.

Sin embargo, si usted es el único usuario de su máquina el 100% del tiempo, y sus repositorios se almacenan localmente, por lo que, en teoría, deshabilitar esta verificación no debería representar un mayor riesgo.

También tenga en cuenta que actualmente no puede combinar esto con una ruta de archivo, lo que sería relevante en mi caso. El comando no interpreta el comodín. * como operador por decir, solo se necesita el "*" argumento para significar “deshabilitar comprobaciones de repositorios seguros/considerar todos los repositorios como seguros”.


1 – Si esto falla en su programa de terminal particular en Windows, intente rodear el comodín con comillas dobles en lugar de simples (a través de este problema de GitHub):
git config --global --add safe.directory "*"

avatar de usuario
Prakash Sahoo

Tengo el mismo problema y lo solucioné cambiando el propietario del directorio. Por favor, inténtalo
chown -R

Cree un nuevo directorio en su disco donde su usuario actual sea el propietario de este nuevo directorio. En este nuevo directorio, clone su repositorio git.

Asegúrese de que está utilizando el usuario de terminal correcto. Para mí, había cambiado temporalmente al usuario raíz, lo que habría causado problemas. Cambió de nuevo al usuario estándar con su git-user y el error se fue.

avatar de usuario
detener9k

Si ocurre el mismo problema en NTFS/Windows, asegúrese de que las carpetas principal de .git y .git sean propiedad del usuario exacto desde el que ejecuta git.
Es posible que no funcione solo el mismo grupo (Administradores) o solo el padre de .git.

Preferiría mucho hacer este comentario bajo la respuesta correcta, pero aún no puedo

¿Ha sido útil esta solución?