Permisos básicos en GNU/Linux con chmod

¡Buenas gente! 🙂 antes que nada cabe mencionar que es mi primer aporte a la comunidad, espero que a alguien le sea de utilidad

=> Estructura básica de permisos en archivos
=> Estructura básica de permisos en directorios
=> Usuario, Grupos y Otros
=> Chmod octal

1.- Estructura básica de permisos en archivos

Hay 3 atributos básicos para archivos simples: lectura, escritura y ejecutar.

>> Permiso de lectura (read)
Si tienes permiso de lectura de un archivo, puedes ver su contenido.

>> Permiso de escritura (write)
Si tienes permiso de escritura de un archivo, puedes modificar el archivo. Puedes agregar, sobrescribir o borrar su contenido.

>> Permiso de ejecución (execute)
Si el archivo tiene permiso de ejecución, entonces puedes decirle al sistema operativo que lo ejecute como si fuera un programa. Si es un programa llamado “foo” lo podremos ejecutar como cualquier comando.
O un script (interprete) que necesita permiso de lectura y ejecución, un programa compilado solo necesita ser lectura.

Los caracteres atribuidos a los permisos son:
r quiere decir escritura y viene de Read
w quiere decir lectura y viene de Write
x quiere decir ejecución y viene de eXecute

Usando chmod para cambiar los permisos
chmod (change mode) es el comando utilizado para cambiar permisos, se pueden agregar o remover permisos a uno o mas archivos con + (mas) o – (menos)

Si quieres prevenirte de modificar un archivo importante, simplemente quita el permiso de escritura en tu “archivo” con el comando chmod

$ chmod -w tuArchivo

si quieres hacer un script ejecutable, escribe

$ chmod +x tuScript

si quieres remover o agregar todos los atributos a la vez

$ chmod -rwx archivo
$ chmod +rwx archivo

también puedes usar el signo = (igual) para establecer los permisos en una combinación exacta, este comando remueve los permisos de escritura y ejecución dejando solo el de lectura

$ chmod =r archivo

Cuidado con editar los permisos de tus archivos, si los editas no olvides dejarlos como estaban originalmente

2.- Estructura básica de permisos en directorios

En el caso de los directorios tenemos los mismo permisos, pero con un significado diferente.

>> Permiso de lectura en un directorio
Si un directorio tiene permiso de lectura, puedes ver los archivos que este contiene. Puedes usar un “ls (list directory)” para ver su contenido, que tengas permiso de lectura en un directorio no quiere decir que puedas leer el contenido de sus archivos si no tienes permiso de lectura en esos.

>> Permiso de escritura en un directorio.
Con el permiso de escritura puedes agregar, remover o mover archivos al directorio

>> Permiso de ejecución en un directorio.
Ejecución te permite usar el nombre del directorio cuando estas accediendo a archivos en ese directorio, es decir este permiso lo hace que se tome en cuenta en búsquedas realizadas por un programa, por ejemplo, un directorio sin permiso de ejecución no seria revisado por el comando find

3.- Usuarios, Grupos y Otros

Ahora conocemos los 3 permisos y como agregar o remover estos, pero estos 3 permisos son almacenados en 3 lugares diferentes llamados.
Usuario (u) proviene de user
Grupo (g) proviene de group
Otros (o) proviene de other

Cuando ejecutas

$ chmod =r archivo

Cambia los permisos en 3 lugares, cuando haces una lista de directorios con “ls -l” veras algo parecido a.

-r--r--r--    1  wada  users  4096 abr 13 19:30 archivo

nota esas 3 “r”s para los 3 diferentes tipos de permisos

donde:

x-------------x-------------x
|  permisos   |  pertenece  |
x-------------x-------------x
|  rwx------  | usuario     |
|  ---r-x---  | grupo       |
|  ------r-x  | otros       |
x-------------x-------------x

podemos remover permisos para cada dueño; supongamos que tenemos un archivo:

-rwxr-xr-x    1  wada  users  4096 abr 13 19:30 archivo

Para remover los permisos de ejecución a grupos y otros basta con usar:

$ chmod g-x,o-x archivo

nuestro archivo quedara con estos permisos

-rwxr--r--    1  wada  users  4096 abr 13 19:30 archivo

si deseas remover a usuario el permiso de escritura:

$ chmod u-x archivo
-r-xr--r--    1  wada  users  4096 abr 13 19:30 archivo

Agregando y removiendo dos permisos a la vez:

$ chmod u-x+w archivo
-rw-r--r--    1  wada  users  4096 abr 13 19:30 archivo

¿muy simple verdad?

4.- chmod en octal

La representación octal de chmod es muy sencilla

Lectura tiene el valor de 4
Escritura tiene el valor de 2
Ejecución tiene el valor de 1

Entonces:

x-----x-----x-----------------------------------x
| rwx |  7  | Lectura, escritura y ejecución    |
| rw- |  6  | Lectura, escritura        |
| r-x |  5  | Lectura y ejecución       |
| r-- |  4  | Lectura               |
| -wx |  3  | Escritura y ejecución             |
| -w- |  2  | Escritura                         |
| --x |  1  | Ejecución             |
| --- |  0  | Sin permisos          |
x-----x-----x-----------------------------------x

Por lo tanto:

x------------------------x-----------x
|chmod u=rwx,g=rwx,o=rx  | chmod 775 | 
|chmod u=rwx,g=rx,o=     | chmod 760 |
|chmod u=rw,g=r,o=r      | chmod 644 |
|chmod u=rw,g=r,o=       | chmod 640 |
|chmod u=rw,go=          | chmod 600 |
|chmod u=rwx,go=         | chmod 700 |
x------------------------x-----------x


71 comentarios

  1.   AurosZx dijo

    Yo nunca le agarré sentido a los octales 😛 Gracias por el artículo!

    1.    woqer dijo

      un truco sencillo es verlo en binario: rwx representan 3 bits (Read,Write,eXecute). si queires permisos de lectura y escritura, te quedaría 110 binario, que en octal es el número 4. Además si sabes que se organiza como GUO (Grupo,Usuario,Otros) ya lo tienes hecho. Ejemplo: lectura, escritura y ejecución para grupo y usuario; lectura y ejecución para otros; quedaría: 111,111,101 –> 775

      1.    fico dijo

        Gracias. no había visto de esa forma

      2.    R1791 dijo

        Cuidado porque 110 binario no es en octal el número 4 .
        El número 110 binario es en octal el numero 6

    2.    Anónimo dijo

      Básicamente tenemos por un lado el usuario o los usuarios y por otra lado los permisos
      Permisos:
      r = read (lectura)
      w = write (escritura)
      x = exe (ejecución)
      – = ningún permiso.
      Usuarios:
      u = dueño, administrador.
      g = grupo.
      o = todos los demás.
      Con ls -l vemos los permisos ya sea directorio o fichero para darlos todos por ejemplo con :
      sudo ugo+rwx ‘nombre fichero’ //Daríamos todos los permisos.

  2.   sieg84 dijo

    se va directo a las notas
    .
    gracias!

  3.   JerryKpg dijo

    Muy bueno!

  4.   Kevin Maschke dijo

    Buenas!

    Muy buen artículo, pero una pequeña corrección debería realizarse:

    r quiere decir escritura y viene de Read
    w quiere decir lectura y viene de Write
    x quiere decir ejecución y viene de eXecute

    (R) Read es Lectura y (W) Write es Escritura

    Un saludo!

    1.    Wada dijo

      Eso pasa por hacer notas a altas horas de la noche hahahaha perdón mi error en cuanto pueda lo corrijo, ahorita me da error, Gracias 🙂

      1.    RAW-Basic dijo

        Te dá error.. ..porque por más que seas el autor del post, no te dan el permiso de editarlo una vez posteado..

        Otro pequeño error.. ..en el punto 3.-..cuando decís “si deseas remover a usuario el permiso de escritura”..pusiste “$ chmod u-x archivo”.. ..y debería ser “$ chmod u-w archivo”..para que coincida con lo que decís..y con el resultado..

        1.    Wada dijo

          Anotado

    2.    juan perez dijo

      r quiere decir LEER y viene de Read
      w quiere decir ESCRIBIR y viene de Write
      x quiere decir ejecución y viene de eXecute

  5.   Dark Purple dijo

    Yo he intentado compartir una carpeta con Samba, y dar permisos de lectura y escritura a invitados, pero el caso es que cuando creo una carpeta nueva desde uno de los dos equipos (huésped o cliente) esa nueva carpeta no tiene asignados permisos para lectura y escritura para todos… ¿Hay alguna manera de arreglar eso sin tener que editar los permisos cada vez que se crea una carpeta? Es un poco engorroso. Por cierto, todo lo hago mediante interfaz gráfica.

    1.    Wada dijo

      Investiga acerca de setfacl

  6.   Marcos dijo

    Muy claro el artículo. Un detalle, donde dice:
    |chmod u=rwx,g=rx,o= | chmod 760 |
    Debería ser:
    |chmod u=rwx,g=rw,o= | chmod 760 |
    o bien:
    |chmod u=rwx,g=rx,o= | chmod 750 |

    1.    Steeven Abraham Santos Farias dijo

      Porque amigo?

      1.    Fefo dijo

        Porque x equivale a 5 y en el ejemplo esta como 6
        g=rx 6 Error
        g=rx 5 Correcto
        g=rw 6 Correcto

  7.   Rainiero Herrera dijo

    Para Dark Purple:
    De lo poco que aun estoy aprendiendo, he rescatado este conocimiento (que no sé realmente si te ayudará en tu problema, pero vale probar; y que falta en esta publicación):
    Dar permisos recurrentes (-R) así:
    chmod -R 777 directorio_padre/*
    Esto daría todos los permisos a todos los usuarios, grupos, y otros respecto a la carpeta padre, y a todas las carpetas y archivos que se encuentren dentro (permisos por defecto para las nuevas creadas en este directorio, al menos así es en mi slax)

  8.   Rainiero Herrera dijo

    En forma gráfica, deberías buscar alguna opción que diga “hacer recurrente esta orden” o “hacer esto para las carpetas incluidas”

  9.   Bruno Cascio dijo

    Yo soy de los que a mi máquina siempre le tiré el 777 por comodidad, pero con estos comandos voy a ponerme las pilas y ser mas precavido, gracias por el aporte!

  10.   yo dijo

    Gracias me sacaste de la duda

  11.   Manuel Caleb dijo

    Muy buen aporte… sigue asi…

  12.   edibrets dijo

    muy muy bueno gracias 😀

  13. Excelente explicación, por fin me queda claro de una…

  14.   Camila dijo

    hola!

    mira, no se si sea pertinente pero tengo un problema con los permisos para grabar, borrrar, en mi mp4. No me deja cambiar los permisos, por lo que solo esta para lectura. Ingrese los comandos que diste pero la respuesta fue
    chmod: cambiando los permisos de «/media/0C87-B6D2»: Sistema de archivos de solo lectura

    he revisar muchos foros y nada me ha funcionado, te cuento que soy principiante en esto asi que puede ser que algo yo estoy haciendo mal.

    espero que puedas ayudarme.

    besos

    1.    Anónimo dijo

      Prueba ingresando como super usuario

    2.    Javi_VM dijo

      Puede ser que no tengas el “driver” adecuado. Con el sistema de ficheros NTFS no te deja escribir a menos que tengas instalado el paquete ntfs-3g. No sé el mp4 qué sistema tendrá…

  15.   cristhian alexis galeano ruiz dijo

    Excelente, gracias.

  16.   fran dijo

    gracias por tutorial 🙂 muy util

  17.   Yerson Rico dijo

    casualmente estuve leyendo sobre el comando chmod en una guia sobre administracion de sistemas linux, la cual tambien me quedo claro, solo que alla me hablaron de 3 comandos mas -s -S y -t que son unos permisos adicionales, eso fue lo que no me quedo claro, mañana le echare otra leida bien, muy buenas tus tablas, saludos

  18.   javier dijo

    Se agredece el aporte. Justo lo que necesitaba

  19.   Juan Gomez dijo

    Hola, muy interesante, quisiera saber como o as bien con que programa puedo editar archivos, chmod o q estan en esa carpeta,
    Quiero editar unos permisos, que están hay…

    O como es esto… gracias

    Gracias

  20.   LM dijo

    Muy bien explicado, gracias

  21.   ISMAEL dijo

    EXCELENTE APORTE, GRACIAS POR DAR PARTE DE TU TIEMPO PARA HACERLO.

  22.   Miguel dijo

    Buen aporte. Gracias por él. Quisiera hacer una aclaración que considero importante. En español remover no es equivalente al inglés remove. En español remover no significa eliminar.
    Según la RAE significa:

    1. tr. Pasar o mudar algo de un lugar a otro. U. t. c. prnl.
    2. tr. Mover algo, agitándolo o dándole vueltas, generalmente para que sus distintos elementos se mezclen.

    En este sentido, en lugar de remover, debería usarse el verbo eliminar.

    1.    elav dijo

      Es cierto, yo mismo digo Remover cuando elimino algo, sobre todo en términos informáticos.

    2.    Wada dijo

      Falto que agregaras la tercer linea…
      3. tr. Quitar, apartar u obviar un inconveniente.
      Nunca lo dije en el afán de “Eliminar” si no de quitar 🙂 perdón si se entendió por eliminar. Gracias por pasar y por la aclaración la tendré en cuenta.

  23.   Fabian Garcia dijo

    Buenas

    Por favor alguien me aclara una duda, eso segun tengo entendido aplica solo para el usuario y el grupo dueño del archivo o directorio, pero si tengo un usuario o grupo “xyz” por ejemplo, como hago para asignarle permiso ya sea de r, w o x solo a ese usuario o grupo y no al o los propietarios.

  24.   a dijo

    como puedo ver los permisos de un grupo en especifico y como puedo editarlos para que tenga lso mismos permisos de root

  25.   tazmania dijo

    Hola tengo un problemita las pc las tengo en lubuntu y en dominio con el usuario local no da problema pero con el usuario del dominio si y es a la hora de abrir mozilla y el thunderbird que se queda congelado todo el sistema espero puedan ayudarme
    saludes

  26.   Justo Gonzalez dijo

    Excelente la explicacion

  27.   Orianis dijo

    Excelente artículo… Solo me gustaría poder contar con la respuesta de algún piadoso de este foro, sobre la siguiente duda: “Si agregue a un usuario A a mi grupo GROUP, cuyos permisos de este grupo GROUP son rwx, todos los usuarios de este grupo, incluyendo A, tendrán estos permisos rwx sobre el directorio/archivos internos? Tomando en cuenta que los archivos internos ya tienen también rwx para el grupo GROUP? Gracias!!!!!! 🙂

  28.   JeFNDZ dijo

    Buen curro. Simple y entendible.

  29.   Segora dijo

    Soy absolutamente nuevo en esto y esta info. me a resultado maravillosamente. Gracias.

  30.   Daniela dijo

    Excelente aporte, de mucha utilidad, gracias (:

  31.   Eduardo Alemán Loredo dijo

    Muy instructivo… Muy pedagógico.

  32.   Miguel dijo

    Gracias por el articulo, me ayudo mucho, esto es muy confuso xDDDD

  33.   Leps dijo

    Muy útil tu aporte, extrañamente tengo un problema que los archivos que siempre he usado están “solo lectura” ejecute
    chmod 777 archivo
    root@Leps:/home/leps# chmod: cambiando los permisos de «Descargas/canaima-popular-4.1~estable_i386/canaima-popular-4.1~estable_i386.iso»: Sistema de ficheros de sólo lectura

    y con todos los archivo es lo mismo, de hecho lo ejecute con Ctrl+Alt+F1 como root y es lo mismo. Que puedo hacer?

  34.   Rancher dijo

    Excelente Información!! me fue de mucha ayuda.
    Muchas Gracias.

  35.   Gustavo Urquizo dijo

    Muy buena la nota. Estaba urgido por aplicar permisos y gracias este tutorial, lo pude hacer en minutos. Muy recomendable.

  36.   KaliNovato dijo

    hice un chmod -R 777 sobre la raiz de mi instalaciòn, es decir /
    y reinicie el kali linux ya hora no carga
    Alguna idea?

    1.    Diego dijo

      si, se te rompio todo, tenes que reinstalar el ubuntu, y lo se porque a mi me paso lo mismo!!!

  37.   Vicente dijo

    Está muy bien el tutorial, muy completo. Quizás los pequeños errores, pero ya se ha comentado que no se pueden editar. Aún así muy bueno para aprender

  38.   Kevin dijo

    r quiere decir escritura y viene de Read
    w quiere decir lectura y viene de Write

    Ahí te confundiste. r leer read, w modificar write

  39.   Wekmentor dijo

    Muy útil! Para los que no estamos muy metidos en el tema administración de linux, estos tutoriales van genial.

    Felicidades por el blog!

  40.   Bertholdo Suarez Perez dijo

    Saludo visitantes de Desdelinux Blog.

    Me ocurre algo curioso usando una distro ubuntera como LMint.
    Copio y Pego la carpeta de un theme al directorio /usr/share/themes mediante uso de ‘sudo’ (pidiendo contraseña de mi usuario).
    Allí en esa carpeta del sistema, al hacer un listado mediante ‘ls -l’, ó ‘ls -la’, dicha carpeta del theme o tema, es de propiedad de mi nombre de usuario (y grupo), es decir, no de Root.

    Entonces, me dispongo a hacer el cambio de quitarle el permiso de escritura a mi usuario sobre dicho directorio del tema descargado, ya que al revisar todos sus ficheros y carpetas recursivamente con ‘ls -laR’, mi usuario es el único que puede escribir en dichas carpetas y ficheros. Claro supongo que todopoderoso Root también.
    Situándome desde Terminal, con ‘cd /usr/share/themes/el-theme-descargado’, y luego simplemente ejecutando ‘chmod -Rv u-w *’, sin requerir ‘sudo’ o permisos de root. Me informó que modificó exitosamente el permiso de escritura de mi usuario a todos los ficheros y subcarpetas de ‘el-theme-descargado’. Pero, no modificó los permisos de la carpeta madre desde donde ejecuto el comando, ‘el-theme-descargado’, teniendo en cuenta que por norma recursivamente debería hacerlo.

    Al revisar mediante el explorador de archivos “Caja” dicha carpeta del tema descargado, me aparecen las primeras subcarpetas de allí con un candadito, y ocurre algo absurdo, puedo copiar cualquiera de esas carpetas y pegarla allí mismo con todo su contenido, siendo que debería estar denegado. Y luego al intentar eliminar dicha copia, no puede efectuarlo: permiso denegado, supongo debido a que todos los subdirectorios y ficheros de dentro, antes se les hubo elminado el permiso de escritura, como practiqué.

    Desconozco si sea un Bug del comando chmod, el que no modifique el permiso de la carpeta desde donde se lance el comando, y luego el rollo de poder copiar subdirectorios que se les configuró sin permiso de escritura.

    En los artículos de internet, incluído el presente, describe que estos son los pasos para hacerlo recursivamente bien.
    Busqué en inglés, a ver si faltase alguna opción del comando, pero no hallé al respecto. Sin embargo induje de test previos, que el comando se podría usar así ‘chmod -Rv u-w ./ *’ , y efectivamente, me modifica los permisos de la carpeta o directorio desde donde ejecuto el comando, la carpeta del theme descargado, a pesar de que no he visto esa opción de ‘./’ en el uso de chmod.
    Si algún conocedor, por favor me pueda dilucidar sobre mis dudas.

    Gracias.

  41.   the king dijo

    Si un usuario tiene permisos de escritura y no tiene permisos de lectura sobre un archivo puede modificar el fichero?

    1.    Alvaro Torijano dijo

      Si

    2.    Alvaro Torijano dijo

      Otra cosa: las iniciales de los permisos estan equivocadas.
      La r es de Read, y significa lectura. Idem para escritura.

  42.   Larry-laffer dijo

    excelente por fin lo entendi esta bien explicado

  43.   emmanuel dijo

    me quedo una duda con ejemplos k ponen
    el comando ejemplo: chmod -r 777
    segun remuevo los permisos de Read a usuarios,grupos,otros pero el 777(rwx) entonces a k se refiere??

    no serial igual k chmod u-r,g-r,o-r ????

  44.   Manuel Moreno dijo

    Muy bien, espero seguir aprendiendo de Linux

  45.   Andres Reyes dijo

    Muchas gracias! Excelente aporte…

  46.   Anónimo dijo

    exelente, gracias

  47.   César dijo

    Muy buena explicación, me estaba rallando con una partición en la que no podía modificar los archivos. Luego me he enterado que no tenía instalado ntfs-3g ya que es una partición ntfs y solucionado.

  48.   run 3 dijo

    O un script (interprete) que necesita permiso de lectura y ejecución, un programa compilado solo necesita ser lectura.

  49.   juan dijo

    a mi me aparece una “d” al principio de usuario drwxr-xr-x. ¿que significa? yo supongo que es directorio pero no estoy seguro

  50.   bukatony dijo

    Ahora conocemos los 3 permisos y como agregar o remover estos, pero estos 3 permisos son almacenados en 3 lugares diferentes llamados

  51.   y8 dijo

    -r–r–r– 1 wada users 4096 abr 13 19:30 archivo ?

  52.   G switch 3 dijo

    Si es un programa llamado “foo” lo podremos ejecutar como cualquier comando. https://gswitch3.net

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.