No se pueden capturar archivos con permiso 640 mientras se es parte de su grupo

No se pueden capturar archivos con permiso 640 mientras se es parte de su grupo

He pasado horas tratando de encontrar por qué no va bien, pero ahora me rindo y aquí estoy.

Mi configuración/problema: tengo un VPS remoto al que me conecto mediante SSH (claves pub/priv, sin contraseña).
El usuario es debian.
En este VPS, ejecuto un postgres:14.3-alpinecontenedor acoplable.

Esta ventana acoplable tiene dos volúmenes montados en /home/debian:
postgres-certs
postgres-data

La identificación de usuario/grupo del usuario en la ventana acoplable es 70. Más informaciónaquí:
Como sabrá, existen reglas de seguridad en torno a los certificados, por lo que, como se explica en el enlace anterior, configuré los derechos 640 para postgres-certsla carpeta:

drw-r-----  2    0   70 4096 jun  7 22:45 postgres-certs
drwxr----- 19   70 1000 4096 jun 11 20:40 postgres-data

Como puede ver, ambas carpetas tienen derechos de lectura grupal.
por favor encuentre mis grupos:

debian@db-dev:~$ id
uid=1000(debian) gid=1000(debian) groups=1000(debian),70(docker-pg-alpine),998(docker)

Como puede ver, estoy en los grupos 70 y 1000, los mismos definidos en las dos carpetas.
Si intento capturar un archivo en una de estas carpetas, esto es lo que obtengo (funciona, por supuesto, si lo sudo):

debian@db-dev:~$ cat postgres-certs/server.crt 
cat: postgres-certs/server.crt: Permission denied

Sólo para demostrarle que el archivo tiene los mismos permisos que su directorio:

debian@db-dev:~$ sudo ls -ln postgres-certs/server.crt 
-rw-r----- 1 0 70 2903 jun  7 22:44 postgres-certs/server.crt

Sí, me desconecté (desconecté ssh, incluso reinicié), también detuve mi contenedor para asegurarme de que no cause ningún problema.
Simplemente no entiendo por qué no puedo capturar un maldito archivo en estas carpetas mientras tienen derechos de lectura grupal y yo estoy en los grupos...
Si pueden encontrar lo que está mal, sería maravilloso.

Respuesta1

Para acceder a los archivos, debe haber xconfigurado el directorio.

  • Para un archivo, (x) le permite ejecutar si el archivo es un programa.

  • Para un directorio, (x) le permite ingresar un directorio y acceder a los archivos.


De acuerdo ala chmodpágina de manual, (x) permite permiso de búsqueda para directorios.

Las letras rwxXst seleccionan bits de modo de archivo para los usuarios afectados: leer (r), escribir (w), ejecutar (o buscar directorios) (x), ejecutar/buscar solo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario (X), establecer ID de usuario o grupo en ejecución (es), indicador de eliminación restringida o bit adhesivo (t).

De acuerdo a estoDocumento del sistema de archivos Unix, (x) le permite ingresar al directorio y acceder a los archivos.

Para directorios, el permiso de ejecución le permite ingresar al directorio (es decir, cd en él) y acceder a cualquiera de sus archivos.


Para futura referencia, podrías usar:

sudo chmod g+x ~/postgres-certs

para agregar (x) permiso para el grupo en un directorio.

Sin embargo, en lugar de cambiar el permiso a 650, probablemente deberías usar:

sudo cat postgres-certs/server.crt

en su lugar, para que pueda mantener el conjunto de permisos predeterminado para el directorio.

información relacionada