GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo afecta umask a las ACL?

Encontré este ejemplo, titulado:ACL y MASK en Linux. En este artículo se demuestran los siguientes ejemplos que creo que ayudan a comprender cómo ACL y umask interactuar entre sí.

Antecedentes

Cuando se crea un archivo en un sistema Linux, los permisos predeterminados 0666 se aplican mientras que cuando se crea un directorio, los permisos predeterminados 0777 se aplican.

ejemplo 1 - archivo

Supongamos que configuramos nuestra umask en 077 y tocamos un archivo. Podemos usar strace para ver lo que sucede realmente cuando hacemos esto:

$ umask 077; strace -eopen touch testfile 2>&1 | tail -1; ls -l testfile
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
-rw-------. 1 root root 0 Sep 4 15:25 testfile

En este ejemplo podemos ver que el sistema llama a open() se hace con los permisos 0666, sin embargo cuando el umask 077 luego es aplicado por el kernel, se eliminan los siguientes permisos (---rwxrwx ) y nos quedamos con rw------- también conocido como 0600.

ejemplo - 2 directorio

El mismo concepto se puede aplicar a los directorios, excepto que en lugar de que los permisos predeterminados sean 0666, son 0777.

$ umask 022; strace -emkdir mkdir testdir; ls -ld testdir
mkdir("testdir", 0777)                  = 0
drwxr-xr-x 2 saml saml 4096 Jul  9 10:55 testdir

Esta vez estamos usando el mkdir dominio. El mkdir el comando luego llamó a la llamada del sistema mkdir() . En el ejemplo anterior podemos ver que el mkdir comando llamado mkdir() llamada al sistema con los permisos predeterminados 0777 (rwxrwxrwx ). Esta vez con una máscara de 022 se eliminan los siguientes permisos (----w--w- ), por lo que nos queda 0755 (rwxr-xr-x ) cuando se crearon los directorios.

ejemplo 3 (aplicación de ACL predeterminada)

Ahora vamos a crear un directorio y demostrar lo que sucede cuando se le aplica la ACL predeterminada junto con un archivo dentro.

$ mkdir acldir
$ sudo strace -s 128 -fvTttto luv setfacl -m d:u:nginx:rwx,u:nginx:rwx acldir

$ getfacl --all-effective acldir
# file: acldir
# owner: saml
# group: saml
user::rwx
user:nginx:rwx          #effective:rwx
group::r-x          #effective:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:nginx:rwx      #effective:rwx
default:group::r-x      #effective:r-x
default:mask::rwx
default:other::r-x

Ahora vamos a crear el archivo, aclfile :

$ strace -s 128 -fvTttto luvly touch acldir/aclfile

# view the results of this command in the log file "luvly"
$ less luvly

Ahora obtenga los permisos del archivo recién creado:

$ getfacl --all-effective acldir/aclfile 
# file: acldir/aclfile
# owner: saml
# group: saml
user::rw-
user:nginx:rwx          #effective:rw-
group::r-x          #effective:r--
mask::rw-
other::r--

Fíjate en la máscara, mask::rw- . ¿Por qué no es mask::rwx? como cuando se creó el directorio?

Verifica el luvly archivo de registro para ver qué permisos predeterminados se usaron para la creación del archivo:

$ less luvly |grep open |tail -1
10006 1373382808.176797 open("acldir/aclfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 <0.000060>

Aquí es donde se pone un poco confuso. Con la máscara establecida en rwx cuando se creó el directorio, esperaría el mismo comportamiento para la creación del archivo, pero no funciona de esa manera. Es porque el núcleo está llamando al open() función con los permisos predeterminados de 0666 .

Para resumir

  • Los archivos no obtendrán permiso de ejecución (enmascaramiento o efectivo). No importa qué método usemos:ACL, umask o máscara y ACL.
  • Los directorios pueden obtener permisos de ejecución, pero depende de cómo esté configurado el campo de enmascaramiento.
  • La única forma de establecer permisos de ejecución para un archivo que está bajo permisos de ACL es configurarlos manualmente usando chmod .

Referencias

  • página man de acl

por motivos de seguridad, el sistema operativo Linux no permite la creación automática de un archivo con un bit de ejecución. Esto es para evitar que los atacantes cibernéticos escriban programas en dichos archivos y los ejecuten si obtienen acceso a su servidor. Es solo una precaución de seguridad. Siempre tendrá que configurar manualmente el bit de ejecución en los archivos después de crearlos con la utilidad chmod


Linux
  1. Comprensión de cómo Umask controla los permisos iniciales de archivo/directorio en Linux

  2. ¿Cómo funciona Rm? ¿Qué hace Rm?

  3. Cómo grep \n en el archivo

  4. Mover un archivo mientras está en uso:¿cómo funciona?

  5. ¿Qué significa un + al final de los permisos de ls -l?

Permisos de Linux:cómo encontrar los permisos de un archivo

Comando Chmod:cómo cambiar los permisos de archivo en Linux

Cómo cambiar los permisos de archivo usando FileZilla

Cómo cambiar los permisos de archivo en cPanel

Cómo cambiar los permisos de archivo

¿Cómo funciona /proc/*?