usuario usted una todos sobre quitar puede propietario por permisos los estos especifico eso dar como carpeta cambiar archivos archivo linux git

usted - dar permisos a un usuario sobre una carpeta linux



git: no se puede enviar(error de desempaquetado) relacionado con problemas de permisos (13)

Tengo este problema cuando intento presionar git:

error: insufficient permission for adding an object to repository database ./objects fatal: failed to write object error: unpack failed: unpack-objects abnormal exit To ssh://<repo url>/<repo dir> ! [remote rejected] master -> master (n/a (unpacker error)) error: failed to push some refs to ''ssh://<repo url>/<repo dir>''

He tenido esto antes de forma esporádica y siempre hemos tenido que resolverlo por cada usuario al repositorio y establecer permisos de grupo en todos los archivos con

chmod -R g+w *

Esta nunca fue una solución satisfactoria y ahora nos ha mordido el culo porque uno de los muchachos está fuera y nadie sabe la contraseña de usuario de su repositorio. Por lo tanto, estoy tratando de resolverlo correctamente.

El error parece ocurrir cuando alguien intenta hacer un cambio que alterará un directorio de repositorio que es propiedad de otro usuario (por lo tanto, estableciendo la opción de escribir en grupo arriba). He hecho un poco de búsqueda de Google y he encontrado un par de soluciones discutidas (ninguna de las cuales funcionó para mí)

1) asegúrese de que el grupo con el que se comparten los directorios de repos es el grupo primario de cada usuario (creo que ya es el caso: cada usuario tiene solo un grupo, por lo que debe ser su grupo principal, ¿no?)

2) Configuración de git repo core.sharedRepository, como se detalla aquí: Git: No puedo presionar desde una computadora . Cambié esto pero no hizo ninguna diferencia. ¿Necesito volver a cargar la configuración o algo para realmente afectar el cambio?

Esto es lo que mi configuración repo parece atm:

[core] repositoryformatversion = 0 filemode = true bare = true sharedRepository = all [receive] denyNonFastForwards = True

Agradecido por cualquier consejo o sugerencia! máximo


En caso de que alguien más esté atascado con esto: solo significa que los permisos de escritura son incorrectos en el repositorio al que usted está presionando. Vaya y chmod -R it para que el usuario al que está accediendo al servidor git tenga acceso de escritura.

http://blog.shamess.info/2011/05/06/remote-rejected-na-unpacker-error/

Simplemente funciona.


Donde trabajo, hemos usado este método en todos nuestros repositorios durante algunos años sin ningún problema (excepto cuando creamos un nuevo repositorio y nos olvidamos de configurarlo de esta manera):

  1. Establezca ''sharedRepository = true'' en la sección ''[core]'' del archivo de configuración.
  2. Cambie la identificación del grupo del repositorio a un grupo compartido por todos los usuarios que pueden presionarlo:

    chgrp -R shared_group /git/our_repos chmod -R g+w /git/our_repos

  3. Establezca el bit setgid en todos los directorios del repositorio para que los nuevos archivos / directorios mantengan el mismo grupo:

    find /git/our_repos -type d -exec chmod g+s {} +

  4. Agregue esta línea al gancho de pre-recepción en el repositorio para asegurar que los nuevos permisos de archivo permitan la lectura / escritura grupal:

    umask 007


Es un error de permiso. La forma más apropiada y segura para mí fue agregar usuarios a un grupo suplementario que el repositorio. es propiedad de (o viceversa):

groupadd git chgrp -R git .git chgrp -R git ./ usermod -G -a git $(whoami)


Este problema también puede ocurrir después de las actualizaciones de Ubuntu que requieren un reinicio.

Si el archivo /var/run/reboot-required existe, realice o programe un reinicio.


Para mí es un problema de permisos:

En el servidor git ejecuta este comando en el directorio repo

sudo chmod -R 777 theDirectory/


Para mí, este error ocurrió cuando estaba sin espacio en mi control remoto.

Solo necesitaba leer el resto del mensaje de error:

error: file write error (No space left on device) fatal: unable to write sha1 file error: unpack failed: unpack-objects abnormal exit


Por lo que vale, tuve el mismo problema con mi propio VPS y fue causado por mi bajo espacio en el disco duro en VPS. Confirmado por el comando df -h y después de limpiar el disco duro de mi VPS; el problema desapareció

Aclamaciones.


Recibí un error similar y, a continuación, miro cómo lo resolví.

Mi estructura de directorio: /opt/git/project.git y el usuario de git es git

$ cd /opt/git/project.git $ sudo chown -R git:git .

chown con la opción -R cambia de forma recursiva la propiedad y el grupo (desde que escribí git: git en el comando anterior) del directorio actual. chown -R es necesario ya que git cambia muchos archivos dentro de su directorio git cuando ingresa al repositorio.


También estaba teniendo problemas con esto, pensando que mi administrador remoto de gitolite estaba corrupto o algo mal.

Mi configuración es Mac OS X (10.6.6) portátil con servidor remoto Ubuntu 10 con gitolite.

Resultó que el problema era con mi pago local de gitolite-admin.

A pesar del error "desempaquetar fallido", resultó que el problema era local.

Me di cuenta de esto revisándolo nuevamente como gitolite-admin2, haciendo un cambio y empujando.

Voila! ¡Funcionó!


Tuve este error durante dos semanas, y la mayoría de las soluciones indicaron ''chmod -R'' como la respuesta, desafortunadamente para mí mis repositorios git (local / remoto / compartido - con el equipo) estaban todos en el sistema operativo Windows, y aunque chmod -Rv mostró todos los archivos cambiados a ''rwxrwxrwx'', un subsiguiente ''ls -l'' todavía mostraba todos los archivos como ''rwxr-xr-x'' y el error se repitió. Finalmente vi esta solución de Ariejan de Vroom. Funcionó y todos pudimos tirar y empujar nuevamente.

Tanto en el local (el local que tiene problemas para presionar) como en los repos remotos, ejecute los siguientes comandos:

$ git fsck $ git prune $ git repack $ git fsck

En una nota lateral, traté de usar los permisos de archivos nativos de Windows / ACL e incluso recurrí a elevar al usuario problemático a Administrator, pero nada de eso pareció ayudar. No estoy seguro si el entorno es importante, pero puede ayudar a alguien con una configuración similar: miembro del equipo problemático y remoto (Windows Server 2008 R2 Standard), mi local (Windows 7 VM).


Una forma más sencilla de hacerlo es agregar un script posterior a la recepción que ejecuta el comando chmod después de cada inserción en el repositorio ''hub'' en el servidor. Agregue la siguiente línea a hooks / post-receive dentro de su carpeta git en el servidor:

chmod -Rf u+w /path/to/git/repo/objects


Yo uso gitosis para manejar este tipo de cosas. Gitosis tiene un único usuario (generalmente llamado "git") que posee todos los repositorios, y utiliza control de acceso basado en clave pública para cada repositorio. Puede que no sea adecuado para tu configuración, pero probablemente valga la pena echarle un vistazo (sin juego de palabras).


Para el error de permiso al usar el repositorio de git en la instancia de AWS, lo resolví exitosamente creando un grupo, y asignándolo a la carpeta de repositorio recursivamente (-R) y dando el derecho escrito a este grupo, y luego asigno el usuario de instancia de aws predeterminado (ec2-user o ubuntu) a este grupo.

1. Crea un nombre de grupo share_group o algo más

sudo groupadd share_group

2. cambie la carpeta de repositorio de ''root'' group a ''share_group''

sudo chgrp -R share_group /path/to/your/repository

3. agregue la autoridad de escritura a share_group

sudo chmod -R g+w /path/to/your/repository

4. El último paso es asignar el usuario actual: usuario predeterminado cuando se inicia sesión (de manera predeterminada, ec2 es ''ec2-user'', el usuario de la instancia de ubuntu es ''ubuntu'' en ubuntu en aws) y share_group. Estoy usando ubuntu insance en aws, entonces mi usuario predeterminado es ubuntu.

sudo usermod -a -G share_group ubuntu

Por cierto, para ver la propiedad de la carpeta o archivo simplemente escriba:

ls -l /path/to/your/repository

''

Salida:

drwxr-x--x 2 root shared_group (explicación, consulte: https://wiki.archlinux.org/index.php/File_permissions_and_attributes ).

Después del paso 3, verás

drwx--x--x 2 root root

cambiado a

drwxr-x--x 2 root share_group

En este caso, no asigné el usuario ''ubuntu'' al grupo raíz, para la consideración de la seguridad. Puede intentar asignarle usuario predeterminado a la raíz de acuerdo con el paso 4 (simplemente saltee los primeros 3 pasos

De otra manera, probé la solución por:

chmod -Rf u+w /path/to/git/repo/objects No funcionó para mí, creo que debería ser la razón por la que mi carpeta de repositorio pertenece al usuario raíz, no al usuario de Ubuntu, y ''git'' por defecto usa el usuario predeterminado (usuario ec2 o usuario de Ubuntu. Puede probar para cambiar al usuario y probarlo.

Finalmente, el código de abajo definitivamente funciona para mí, pero 777 no es bueno para la seguridad

sudo chmod -R 777 /path/to/your/repo