¿Por qué me deniegan el permiso para un directorio con acl configurado para el propietario del directorio (después de eliminar todos los permisos posix estándar)?

¿Por qué me deniegan el permiso para un directorio con acl configurado para el propietario del directorio (después de eliminar todos los permisos posix estándar)?

Estoy intentando ejecutar el lscomando en un directorio que tiene permisos acl para el propietario y el grupo del directorio (sin permisos posix estándar establecidos). Esto da como resultado un Permiso denegado aunque getfacldice que el usuario debería poder hacerlo.

Esto es lo que estoy haciendo:

  1. Crea un directorio y un archivo dentro de él.

mkdir /tmp/mydir && touch /tmp/mydir/myfile

  1. Compruebe si puedo ejecutar lsen este directorio.
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
total 896
drwxrwxr-x  2 jgazula jgazula   4096 Nov  1 11:57 .
drwxrwxrwt 25 root    root    909312 Nov  1 11:57 ..
-rw-rw-r--  1 jgazula jgazula      0 Nov  1 11:57 myfile
  1. Ahora, eliminemos todos los permisos posix estándar en este directorio.

chmod 000 /tmp/mydir

  1. Verifique los permisos.
jgazula@gazula:/tmp$ ls -al /tmp | grep mydir
d---------  2 jgazula jgazula   4096 Nov  1 11:57 mydir
  1. No deberíamos poder hacerlo lsahora.
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
ls: cannot open directory '/tmp/mydir/': Permission denied
  1. Establezca los permisos de ACL para el jgazulausuario y el grupo.

sudo setfacl --mask -Rm u:jgazula:rwx,g:jgazula:rwx /tmp/mydir/

  1. Verifique los permisos de acl.
jgazula@gazula:/tmp$ getfacl -ep /tmp/mydir/
# file: /tmp/mydir/
# owner: jgazula
# group: jgazula
user::---
user:jgazula:rwx        #effective:rwx
group::---          #effective:---
group:jgazula:rwx       #effective:rwx
mask::rwx
other::---
  1. Dado que los permisos acl (incluidos los permisos efectivos) se ven bien, ¿debería poder ejecutarlos lsen el directorio?
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
ls: cannot open directory '/tmp/mydir/': Permission denied

Pero no puedo y no entiendo por qué.

  1. Curiosamente, cuando verifico los permisos posix estándar, ¿se han configurado los bits de permiso del grupo? No estoy seguro de entender por qué solo se han actualizado los permisos de grupo.
jgazula@gazula:/tmp$ ls -al /tmp | grep mydir
d---rwx---+  2 jgazula jgazula   4096 Nov  1 12:13 mydir
  1. Configuremos los permisos acl para el propietario y el grupo (es decir, omitamos el propietario/grupo del comando).

sudo setfacl --mask -Rm u::rwx,g::rwx /tmp/mydir/

  1. Verifique los permisos de acl nuevamente.
jgazula@gazula:/tmp$ getfacl -ep /tmp/mydir/
# file: /tmp/mydir/
# owner: jgazula
# group: jgazula
user::rwx
user:jgazula:rwx        #effective:rwx
group::rwx          #effective:rwx
group:jgazula:rwx       #effective:rwx
mask::rwx
other::---
  1. Compruebe si puedo ejecutar lsahora.
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
total 896
drwxrwx---+  2 jgazula jgazula   4096 Nov  1 11:57 .
drwxrwxrwt  25 root    root    909312 Nov  1 11:57 ..
-rwxrwxr--+  1 jgazula jgazula      0 Nov  1 11:57 myfile

¿Por qué el paso 6 no funciona por sí solo? Estoy configurando los permisos acl explícitamente para un usuario y grupo. ¿Por qué necesito ejecutar el paso 11?

Respuesta1

Cuando ejecuta sudo setfacl --mask -Rm u:jgazula:rwx,g:jgazula:rwx /tmp/mydir/, está creando una ACL_USERentrada para el usuario jgazula. Pero el mensaje ACL_USER_OBJpara el propietario del archivo sigue siendo ---. (Puede ver esto en el getfaclresultado del paso 7).

Según man ACL, el algoritmo de verificación de acceso es:

1.   If the effective user ID of the process matches the user ID of the file object owner, then
           if the ACL_USER_OBJ entry contains the requested permissions, access is granted,
           else access is denied.

2.   else if the effective user ID of the process matches the qualifier of any entry of type ACL_USER, then
           if the matching ACL_USER entry and the ACL_MASK entry contain the requested permissions, access is granted,
           else access is denied.

Por lo tanto, la ACL_USERentrada ni siquiera se verifica.

Básicamente, existe la misma pregunta sobre serverfault:ACL: otorgando - - - permisos para el propietario del archivo. (Pero parece que la respuesta se ACL_USERinvirtió ACL_USER_OBJ).

información relacionada