Permiso denegado en la carpeta 777

17
john@ubuntu01:~$ sudo ls -l /var/opt/gitlab/git-data/repositories/GL/www.git
total 25068
drwxr-xr-x  2 git  git      4096 aug 14 19:58 branches
-rw-r--r--  1 git  git        66 aug 14 19:58 config
drwxrwxrwx  2 root root     4096 aug 15 14:56 custom_hooks
-rw-r--r--  1 git  git        73 aug 14 19:58 description
-rw-r--r--  1 git  git        23 aug 14 19:58 HEAD
lrwxrwxrwx  1 git  git        47 aug 14 19:58 hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks
drwxr-xr-x  2 git  git      4096 aug 14 19:58 hooks.old.1471193907
-rw-r--r--  1 git  git      1329 aug 15 14:48 index
drwxr-xr-x  2 git  git      4096 aug 15 13:58 info
drwxr-xr-x 71 git  git      4096 aug 15 14:55 objects
-rw-r--r--  1 git  git        98 aug 15 13:58 packed-refs
-rw-r--r--  1 git  git  25618530 aug 15 14:03 post-receive.log
drwxr-xr-x  5 git  git      4096 aug 14 20:31 refs
john@ubuntu01:~$ ls -l /var/opt/gitlab/git-data/repositories/GL/www.git
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission denied

Aquí hay ACL

john@ubuntu01:~$ sudo lsattr /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks
-------------e-- /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks/post-receive

Nunca he visto esto antes. ¿Sin permiso para LS incluso con 777? Necesito compartir esta carpeta para un desarrollo más conveniente. ¿Cómo puedo resolverlo? Gracias.

EDITADO: (aquí están sus solicitudes)

john@ubuntu01:~$ sudo ls -ld /var/opt/gitlab/git-data/repositories/GL/www.git
drwxrwxrwx 8 git git 4096 aug 15 14:48 /var/opt/gitlab/git-data/repositories/GL/www.git
john@ubuntu01:~$ sudo ls -ld /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks
drwxrwxrwx 2 root root 4096 aug 15 14:56 /var/opt/gitlab/git-data/repositories/GL/www.git/custom_hooks

EDITADO MÁS

sudo ls -ld /var/opt/gitlab/git-‌​data/repositories/GL/‌​www.git
ls: cannot access '/var/opt/gitlab/git-‌​data/repositories/GL/‌​www.git': No such file or directory

hmmm ... que es esto?

usuario1797147
fuente
1
¿ lsNo se muestran los permisos del directorio que está utilizando?
Zanna
es custom_hooks y tiene raíz raíz drwxrwxrwx 2, ver arriba
user1797147
1
ls: cannot access '/var/opt/gitlab/git-data/repositories/GL/www.git': Permission deniedpor lo que nos muestran lo que sucede cuandols -ld /var/opt/gitlab/git-data/repositories/GL/www.git
Zanna
1
¿Podrías hacer lo que te pedí? si no tiene permiso de ejecución en el directorio principal, entonces 777 en este no lo ayudará
Zanna
2
Al parecer, su problema es más alto en el árbol entonces. Sigue subiendo un nivel y examinando los permisos, y encontrarás que uno de ellos no tiene permiso x para o, por ejemplodrwxr-x---
Zanna

Respuestas:

21

Esto sucede porque hay un directorio más alto en el árbol donde no tiene permiso de ejecución. Si un directorio principal no tiene permiso de ejecución para algún usuario, entonces ese usuario no puede establecer ningún subdirectorio independientemente de los permisos en esos subdirectorios.

Ejemplo:

$ ls -l cake
drwxr-xr-x 2 zanna zanna 4096 Jul 12 11:43 brownies
$ chmod 666 cake
$ ls -l cake/brownies
ls: cannot access 'cake/brownies': Permission Denied

Aunque soy el propietario del directorio 'brownies' y todos los usuarios tienen permiso para leerlo e ingresarlo, no puedo acceder a él si su directorio principal no tiene permiso de ejecución.

Es mejor usar grupos para administrar permisos que dar a los directorios el permiso 777. ¿Estás seguro de que necesitas hacer eso?

Cómo solucionar el problema de una manera más segura:

Asumamos en /var/opt/gitlab directorio tiene algo como esto:

drwxr-x--- 5 git git 4096 aug 14 17:30 gitlab

Agregue usted y todos los demás usuarios que necesitan permiso para el grupo git, por ejemplo:

sudo usermod -a -G john git

Los usuarios tienen que cerrar sesión y volver a iniciarla para que esto surta efecto. Incluso si se necesita permiso de escritura en un subdirectorio, no es necesario agregarlo en un directorio principal, por cierto, por lo que no tiene que usarchmod en absoluto. Es posible que desee cambiar los permisos de su subdirectorio para evitar que alguien pueda escribir en él:

chmod 775 /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks

o

chmod o-w /var/opt/gitlab/git‌​-data/repositories/GL‌​/www.git/custom_hooks
Zanna
fuente
1
Gracias de nuevo, no, solo estaba probando un script. Siéntase mucho más cómodo para editar con N ++ en Windows que Gudit rudimentario. También rudimentario Nautilus que no es capaz de CORTAR algo y luego PEGAR haciendo una nueva carpeta al mismo tiempo ... o haga clic derecho -> Nueva carpeta.
user1797147