Ads 468x60px

viernes, 1 de marzo de 2013

Umask En Linux

Alguna vez se han preguntado como saben los sistemas operativos unix o linux que permisos otorgar por defecto al crear un directorio o archivo nuevo??? Sabe usted como poder manipular estos permisos que estan por defectos en el sistema?

pinguino




En los distintos sistemas operativos unix y tipo unix tenemos una variable de entorno que controla que permisos recibira por defecto la creacion de un directorio o archivo nuevo, esta variable se llama umask. Umask no es mas que otra forma de administrar los permisos bajo sistemas unix y linux, y podemos encontrar una entrada de esta en el archivo /etc/profile, por lo general siempre la veremos con el siguiente valor :

umask 022

Los permisos en sistemas unix y linux se otorgan como octales, decimales o simbolo:

Octal : 0000
decimal : 000
simbolos : u, a, +, -

Como manipulamos umask con los permisos estandares de nuestro sistema? sencillo, toda carpeta recien creada en Linux tiene los permisos 755, y si es un archivo de texto 655.. Ahora te preguntaras porque 755 y 655 y no 777 o 666? o 700 o 600? sencillo, porque si tenemos definido una umask 022 que es la estandar en /etc/profile, todos los permisos de los nuevos archivos se restaran con el octal que tengamos definido como umask, me explico todas las carpetas se crean con permisos 777 y los archivos de texto con el permiso 666 pero si restamos ambos a la umask ya definida en /etc/profile que por defecto es 022, obtenemos lo siguiente :

umask = 022
carpeta = 777
archivo = 666

022 - 777 = 755
022 - 666 = 644

Captan la idea? no podemos restar el primer 7 ni el primer 6 ya que 0 no tiene valor, pero si podemos restar 2 - 7 y 6 - 2, y es aqui que se definen los permisos reales que tendran todos los archivos y carpetas que recien vayamos creando. Ahora, que ocurre si modificamos el umask 022 de /etc/profile y decimos que quiero un umask 077 y guardamos los cambios en /etc/profile actualizamos con el comando source /etc/profile y creamos una carpeta nueva, que ocurrira aqui?? ya nuestra carpeta no tendra permisos 755 sino :

umask 077
carpeta 777
077 - 777 = 700

Todas las nuevas carpetas se crearan con permisos 700, donde solo el usuario que creo la carpeta  tendra acceso a entrar, modificar, borrar, actualizar, etc, el resto de usuarios y grupos no podran siquiera acceder a la carpeta ni ver que contenido tiene la misma. Lo mismo ocurre si volvemos a modificar la entrada umask en /etc/profile y decimos que ya no queremos una umask 077 sino umask 066, y actualizamos /etc/profile y creamos un archivo de texto nuevo. Ya nuestro archivo no tendra permisos 644 como ocurre cuando tenemos umask 022. Aqui seria :

umask 066.
archivo 666
066 - 666 = 600

Donde solo el usuario creador del archivo tendra acceso a modificarlo, insertar, verlo, leerlo, etc.

Ahora, editando el archivo /etc/profile  indica que los cambios se aplicaran para todos los usuarios del sistema operativo, por lo que si estas interesad@ en manipular estos permisos solo por conocer como funcionan sin provocar cambios masivos a todo el sistema, perfectamente puedes hacerlo de forma local y sin peligro. Sencillamente en tu seccion abre una konsola nueva,  y ejecuta umask XXX (Siendo XXX el valor octal que quieres definir) seguido crea una carpeta o archivo y verifica con el comando ls -l los permisos del mismo.  Este cambio solo funcionara dentro de esa terminal y mientras dures conectado a la seccion, por lo que puedes jugar y divertirte un rato manipulando los permisos en entorno linux.

Espero que la explicacion de umask les haya sido de utilidad.

No hay comentarios:

Publicar un comentario