Permisos De Archivo Por Defecto En Linux (umask)

Publicado: 5 enero 2008 en Informática, Linux Tips

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!

Anuncios
comentarios
  1. Ricard dice:

    Muchas gracias,

    me ha quedado clarísimo!

    Ricard – Barcelona

  2. Salomón Rincón dice:

    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?

  3. Tavix dice:

    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

  4. ho dice:

    HOYGA NO HAY CHANCE

  5. fer dice:

    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. PAPITO25 dice:

    HOYGAA, NO HENTIENDO SU TEOREMA, PUDIERA EXPONERLO MEHOR?

  7. PAPITO25 dice:

    HOYIGAAN MADRESITAS SI KIEREN SESO LLAMENME 688652922

  8. alberto dice:

    puros weones ñoños en est wea!!!

    giles culiaos!!

  9. victor dice:

    Primero, aunque se explique como 777 – 022, es posible que el kernel no haga la operación resta.

    Si la hace, al encontrarse con un numero negativo, lo deja en cero.

    Si no hace resta, utiliza este método (que no tiene casos criticos)

    777 = 111 111 111 (binario)
    000 = 000 000 000
    not 000 = 111 111 111

    permisos = 777 and (not 000) = 777

    en el caso de 007, not 007 = 111 111 000
    y al hacer el and:
    111 111 111 (777)
    111 111 000 (007)
    ————-
    111 111 000 = 770

    Tanto el not (~) como el and (&) a nivel de bits están integrados en C, así que estas dos operaciones son mucho menos costosas que una resta (por la integración en el lenguaje, y por la diferencia de complejidad del hardware)

    Espero que les haya gustado la explicación 😉

    Un saludo.

  10. Homero dice:

    Él lo explicó de la manera “humana” el 077 – 022
    Las operaciones son anivel de bits, además hagan la resta en octal que es como se manejan los permisos Unix, ustedes hicieron la resta en decimal

  11. mario dice:

    compa tengo un problema cambie por error todos los directorios de la raiz de linuz a los directorios

    drwxr-xr-x directorios
    -rwrx-xr-x archivos

    y en la consola se perdio la interfaz grafica, no se puede entrar al servidor..desde que paso esto….usted podria ayudarme para saber como recuperar los persos que linux tiene por defull

  12. camilo dice:

    Hola, tengo problema con los permisos intente esto pero aun no me resuelve el problema y es el siguiente.
    Me envían un mail con archivo adjunto en xls lo abro con libreoffice 3.3 pero me lo abre como solo lectura. Veo el temporal y me doy que le da permiso de lectura solamente. y necesito que me deje modificarlos. alguien tiene una idea como puedo solucionarlo?

  13. camilo dice:

    Disculpen uso ubuntu 10.10

  14. mauricio dice:

    Excelente la explicacion. Ademas de explicar a traves del metodo de resta explica el metodo binario que no hay equivocacion mediante le mismo.

    Gracias

  15. edgardo dice:

    como modifico mi mascara de manera permanente, solo tengo un subidirectorio llamado imagenes, que esta en public_html.

    No tengo tal archivo bashrc en mi servidor, parece que no trabaja con eso, y bueno, todo es windows. Saben como hacerlo. Por favor si alguien sabe como hacerlo de forma sencilla contestar

  16. tu dice:

    no entiendo nada

  17. Xelo dice:

    Debian Squeeze
    prueben:
    chmod a+rwx [ archivo ]

  18. Angel dice:

    Bien explicado, pero es mas facil decir que umask lo que aplica son restricciones. Y dejarse de tanta vuelta.

    Si r_x es 4 + 0 + 1 = 5 y al umask hay que darle el 2, es mas facil decir: que no quiero que se pueda hacer? escribir? pues 2.

    Asi pues: umask 0026

    No nos quita a nosotros ningun permiso,
    Al grupo le quita el de escritura,
    Y al resto el de lectura y escritura.

    anghdezl@ubuntu:~$ umask 0026 ; mkdir ejem
    anghdezl@ubuntu:~$ ls -l
    drwxr-x–x 2 anghdezl anghdezl 4096 May 15 19:42 ejem

    Por lo menos a mi si me lo parece….

  19. Jesus Contreras dice:

    cuando quiero ver los permiso de mi directorio prueba y accedo a prueba y pon ls -l me aparece total 0 que significa??

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s