Esta entrada de Comandos de GNU/Linux es exclusivamente sobre el cambio de permisos, propietario y grupo en archivos y carpetas. Debido a su complejidad y al contrario que otras entadas, voy a explicarlo con detenimiento para evitar confusiones y problemas futuros, sobre todo con los permisos.
Tipos de permisos Existes tres tipos de permisos y dependiendo de si es un archivo o una carpeta se comporta de la siguiente forma:
- Lectura (r): Archivos: ver su contenido. Carpetas: solo permite ver el nombre de lso archivos que contiene.
- Escritura (w): Archivos: modificar el contenido del archivo, renombrarlo o eliminarlo. Carpetas: agregar, renombrar o eliminar archivos.
- Ejecucion (x): Archivos: ejecutar el archivo. Carpetas: acceder a sus subcarpetar pero no ver su contenido.
- Propietario (u): usuario al que pertenece el archivo o carpeta. Solo hay un propietario.
- Grupo (g): grupo al que pertenece el archivo o carpeta. Cualquier usuario que pertenezca a este mismo grupo.
- Otros (o): cualquier usuario que no sea el propietario o pertenezca al grupo.
- Todos (a): el conjunto de los anteriores.
ls -lh ARCHIVO.txt
: muestra los permisos, el propietario y el grupo al que pertenece el ARCHIVO.txt.chown USUARIONUEVO ARCHIVO.txt
: cambia el propietario del ARCHIVO.txt al USUARIONUEVO.chgrp GRUPONUEVO ARCHIVO.txt
: cambia el grupo del ARCHIVO.txt al GRUPONUEVO.chown USUARIONUEVO:GRUPONUEVO ARCHIVO.txt
: cambia tanto el propietario como el grupo del ARCHIVO.txt al USUARIONUEVO y GRUPONUEVO.
Comprobar los permisos
Cuando vemos los permisos de un archivo con el comando ls -lh
, nos debería mostrar algo como lo siguiente:drwxrw---- 2 USUARIO GRUPO 4,0K oct 30 17:53 CARPETA
-rw-r--r-- 1 USUARIO GRUPO 13K oct 30 17:53 ARCHIVO.txt
" style="border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: bold; letter-spacing: -1px; margin: 0px; padding: 0.5em; word-break: break-all; word-wrap: break-word;">drwxrw---- 2 USUARIO GRUPO 4,0K oct 30 17:53 CARPETA
-rw-r--r-- 1 USUARIO GRUPO 13K oct 30 17:53 ARCHIVO.txt
El conjunto de 10 letras corresponden a los permisos del archivo o carpeta, Siendo el primer carácter el correspondiente a determinar si es un directorio (d), y los siguientes en grupos de tres corresponden al propietario (u), al grupo (g) y al resto de usuarios (o). En cualquier caso, si un permiso no esta asignado aparece con -.
En el ejemplo anterior, la CARPETA (drwxrw——) tendría los siguientes permisos:- d: para demarcar que es un directorio
- rwx: el propietario tiene los permisos de lectura, escritura y ejecución.
- rw-: el grupo solo tiene permisos de lectura y escritura.
- ---: el resto de usuario no tiene ningún permiso.
- -: no es un directorio.
- rw-: el propietario solo tiene permisos de lectura y escritura.
- r--: el grupo solo tiene permisos de lectura.
- r--: el resto de usuario solo tiene permisos de lectura.
chmod +r ARCHIVO.txt
: añade el permiso de lectura a todos los usuarios.chmod -w ARCHIVO.txt
: quita el permiso de escritura a todos los usuarios.chmod u+r ARCHIVO.txt
: añade el permiso de escritura solo al propietario.chmod g-x ARCHIVO.txt
: quita el permiso se ejecución solo al grupo.chmod u=rwx ARCHIVO.txt
: asigna los permisos para el propietario, otorgando permisos de lectura, escritura y ejecución.chmod o= ARCHIVO.txt
: asigna los permisos para el resto de usuario, no dando ningún permiso.chmod u=rwx,g=rwx,o= ARCHIVO.txt
: asigna los permisos para el usuario y grupo como lectura, escritura y ejecución y para el resto de usuario sin ningún permiso.
Cambiar permisos con números
Se asigna mediante tres números, correspondiendo cada uno a una clase (propietario, grupo y resto de usuarios). Para calcular el numero correspondiente a cada clase, tan solo hay que sumar en relación a los permisos que queramos otorgar.- 4: lectura.
- 2: escritura.
- 1: ejecución.