Índice/Index

viernes, 15 de junio de 2012

Como calcular permisos de umask

Hola, hoy voy a escribir sobre como se calculan los permisos resultantes de umask (máscara de usuario). El umask es una orden que establece que permisos por defecto se van a establecer al crear un archivo por determinado proceso o usuario.

Primero lo básico: los permisos se ven de esta forma en los sistemas Unix: rwx-rwx-rwx.

Donde r - Lectura
w - Escritura
x - Ejecución

Y donde el primer grupo de rwx corresponde al dueño, el segundo al grupo y el tercero a otros usuarios.

Por ejemplo: rwx-r-x-r-x 

En este caso los permisos serían: el dueño tiene derecho a lectura, escritura y ejecución. El grupo a lectura y ejecución. Otros usuarios a lectura y ejecución.


Entonces para calcular los permisos resultantes según la umask sería así:

Por ejemplo si nuestra umask es 022, el permiso por defecto para directorios sería: 755 (drwx-r-x-r-x) y para archivos 644 (rw-r---r--).

Antes de hacer los cálculos:

Los permisos iniciales para directorios son 777
Los permisos iniciales para archivos son 666

En los siguientes pasos se verá como se aplican estos valores iniciales para obtener los permisos por defecto que nos proporciona la umask.

Primero se hace una operación NOT binaria a 022:

Empezemos por el primer 2 (otros usuarios):

NOT 010 = 101 = 5

El siguiente 2 también sería 5 el resultado (grupo).

Para el 0 (dueño):

NOT 000 = 111 = 7

Por lo tanto el resultado es 755

Ahora pasamos a obtener los permisos que tendrán por defecto los directorios con esta umask negada:

Sólo debemos aplicar un AND de 755 y los permisos iniciales para directorios (777):

Iniciemos con otros:

101 (5)
AND 
111 (7) 
                   101 (5) RESULTADO

Grupo:

101 (5)
AND
111 (7)
                    101 (5) RESULTADO

Dueño:

111 (7)
AND
111 (7)
                    111 (7) RESULTADO

Por lo tanto los permisos que se establecerán por defecto para los directorios serán 755 (rwx-r-x-r-x).

Ahora lo mismo pero para los archivos. Para ellos los permisos iniciales son de 666. Entonces el AND será entre 755 y 666.

Otros:

101 (5)
AND 
110 (6) 
                   100 (4) RESULTADO

Grupo:

101 (5)
AND
110 (6) 
                   100 (4) RESULTADO

Dueño:

111 (7)
AND
110 (6) 
                   110 (6) RESULTADO

Por lo tanto los permisos que se establecerán por defecto para los archivos serán de 644 (rw--r---r--).

En resumen con umask 022 obtenemos permisos 755 para directorios y 644 para archivos.

Y bueno eso es todo espero lo haya explicado bien, cualquier duda pueden comentar. Esto lo hice porque para el siguiente post hay que establecer umask para suPHP, para que así se pueda entender porque se le da el valor que se le da al campo umask en esa configuración. Saludos!


2 comentarios:

  1. cuando algo esta bien hecho y bien explicado hay que agradecerlo, a si que , Gracias.

    ResponderEliminar
  2. Gracias! y perdón por responder tan tarde, pero tengo mucho trabajo, afortunadamente :)

    ResponderEliminar