Permisos De Archivo Por Defecto En Linux (umask)
5 Enero 2008
Cuando creamos un archivo en nuestro sistema por defecto se le asignan permisos de lectura y escritura tanto para el propietario como para todos los demás, los permisos pueden ser modificados para que se asignen otros permisos distintos a los que vienen por defecto en la distribución, ésto lo logramos mediante el comando umask.
Hay dos formas de cambiar el valor de los permisos por defecto, una temporal que es ejecutando el comando desde la consola, y que durará mientras nos encontremos activos en esa consola y la otra es hacerla de manera permanente modificando el archivo .bashrc que se encuentra en nuestra carpeta home y que afectará solo a nuestro usuario y la otra es modificando el archivo /etc/profile que afectará a todos los usuarios del sistema, para poder modificar el segundo debemos tener permisos de root.
Generalmente el valor por defecto es 022 en casi todas las distribuciones linux, puedes comprobarlo con el siguiente comando:
huevas@Ubuntu:~$ more /etc/profile | grep umask
Si ejecutas ese comando sustituyendo /etc/profile por .bashrc probablemente no aparezca nada dado que esta configurado directamente en profile, pero es no es impedimento para agregar el umask en .bashrc y afectar únicamente nuestro usuario.
Aquí empezamos a jugar un poco con los números para poder entender un poco más lo que viene debes de saber como se manejan los permisos de lectura, escritura y ejecución de los archivos, si no sabes que onda, aqui puedes aprender un poco al respecto, existen permisos base para la creación de archivos y la de directorios, los permisos base de los archivos es 666 y los de los directorios es 777 partiendo de ésta base de permisos la operación para determinar los permisos de creación de archivos y de directorios es que restemos el valor que le hemos dado a umask a los permisos base, si creamos un archivo se lo restamos a los permisos base de los archivos que son 666 y en caso de ser un directorio lo que se hace es restárselo a los permisos base de los directorios que son 777, a continuación veremos un ejemplo para que sea más claro.
DIRECTORIOS
Permisos base para directorios: 777
Permisos definidos en umask: 022
Operación: Restarle el umask a los permisos base de la siguiente manera:
777 – 022 = 755
Recordando que los valores de los permisos son 1 : Ejecución, 2 : Escritura y 4 : Lectura tenemos que los directorios se crearán con permisos de lectura, escritura y ejecución para el propietario y solo de lectura y ejecución para todos los demás.
ARCHIVOS
Permisos base para archivos: 666
Permisos definidos en umask: 022
Operación: Restarle el umask a los permisos base de la siguiente manera:
666 – 022 = 644
Recordando que los valores de los permisos son 1 : Ejecución, 2 : Escritura y 4 : Lectura tenemos que los archivos se crearán con permisos de lectura y escritura para el propietario y solo de lectura para todos los demás.
¿Cómo modifico el umask?
Bien, como ya se había mencionado arriba, hay dos formas de modificar el valor de umask, una es ejecutando en la consola el comando umask seguido del valor que queremos que obtenga que será sólo temporal es decir en el momento en que cerremos la consola se perderá ese valor y se volverá al que se encuentra almacenado en /etc/profile y la otra hacerlo de forma permanente modificando el archivo .bashrc que solo afectará a nuestro usuario o modificando el archivo /etc/profile que afectará a todos los usuarios del sistema, bien, a continuación veremos un ejemplo de la modificación temporal.
huevas@Ubuntu:~/Pruebas$ umask 022 ; touch archivo ; mkdir directorio
huevas@Ubuntu:~/Pruebas$ ls -l
total 4
-rw-r–r– 1 huevas huevas 0 2008-01-05 12:31 archivo
drwxr-xr-x 2 huevas huevas 4096 2008-01-05 12:31 directorio
huevas@Ubuntu:~/Pruebas$ rm archivo ; rmdir directorio/
huevas@Ubuntu:~/Pruebas$ umask 044 ; touch archivo ; mkdir directorio
huevas@Ubuntu:~/Pruebas$ ls -l
total 4
-rw–w–w- 1 huevas huevas 0 2008-01-05 12:33 archivo
drwx-wx-wx 2 huevas huevas 4096 2008-01-05 12:33 directorio
huevas@Ubuntu:~/Pruebas$
En el ejemplo de arriba podemos ver que umask tendrá los permisos por defecto 022, posteriormente creamos un archivo y un directorio, si hacen las cuentas verán que los permisos son correctos acorde a la resta entre umask y los permisos base, después eliminamos el archivo y directorio y modificamos el umask para que tenga un valor de 044, volvemos a crear el archivo y el directorio y mostramos los permisos, hagan las cuentas!!!, que tal???. Ahora, ésto es temporal cuando cerremos la consola umask volverá a tener 022.
Para hacerlo permanente editamos el archivo .bashrc que se encuentra en nuestro home, si están en la consola pueden ejecutar el siguiente comando “gedit .bashrc” y agregar al final del archivo la linea “umask 022″ el 022 pueden modificarlo como ustedes gusten, es el valor que queremos sea restado para obtener los permisos deseados, guardamos el archivo cerramos la consola y la volvemos a abrir, de ahora en adelante umask tendrá el valor que especificamos en .bashrc, si queremos todo como antes pueden eliminar la linea que agregaron al archivo o darle el valor 022.
Espero les sea útil. Saludos!



20 Marzo 2008 at 11:17 pm
Muchas gracias,
me ha quedado clarísimo!
Ricard – Barcelona
26 Junio 2008 at 1:42 am
Que pasa si pongo umask igual a 007 y despues creo un archivo? con que permisos queda el archivo?
El problema que veo es para los archivos 666 – 007 = 659.
Lo que no entiendo es como se traduce ese 9, es decir, que permisos tendrán el resto de los usuarios sobre el archivo?
13 Julio 2008 at 2:33 am
Me parece que te salteaste parte de la historia… como es que llegas a ese 9?
No hay chance de llegar a un nueve ahi haciendo AND de bits
16 Agosto 2008 at 9:30 am
HOYGA NO HAY CHANCE
26 Noviembre 2008 at 4:07 am
Gracias.
26 Octubre 2009 at 9:14 pm
aún estoy confundida
-rw -r– r– 1 huevas huevas 0 2008-01-05 12:31 archivo
aqui no hace falta algo
debe ser 9 solo hay 8
rwx r-x r-x 2 huevas huevas 4096 2008-01-05 12:31 directorio
6 Noviembre 2009 at 8:39 am
HOYGAA, NO HENTIENDO SU TEOREMA, PUDIERA EXPONERLO MEHOR?
6 Noviembre 2009 at 8:41 am
HOYIGAAN MADRESITAS SI KIEREN SESO LLAMENME 688652922