debinfor
Sistema Debian

El comando chmod

El comando chmod cambia los permisos de cada fichero dado según el modo, que puede ser o bién una representación simbólica de los cambios a realizar, o bién un número octal que representa el patrón de bits de los nuevos permisos ($ man chmod).

Se usa como usuario root o administrador:

chmod [opciones] modo directorio o fichero...

Existen tres permisos básicos:

Representación Permiso Detalle
r Lectura Permite ver el nombre de los archivos dentro del directorio, pero sin poder saber nada mas sobre ellos.
w Escritura Agregar, eliminar y renombrar archivos del directorio.
x Ejecución Permite ser ejecutado, como un script.

En un sistema Unix, con respecto a "permisos", existen los siguientes tipos de usuarios:

Representación Tipo de usuario Detalle
u Dueño Es el dueño del archivo o directorio.
g Grupo Grupo al que pertenece el archivo.
o Otros Los otros usuarios que no son ni el dueño ni del grupo.
a Todos Todos los tipos de usuario (dueño, grupo y otros).

El comando chmod puede cambiar permisos en cualquiera de los dos modos disponibles:

Modo Detalle
Simbólico Es el dueño del archivo o directorio.
Octal Grupo al que pertenece el archivo.

Como se usa con el modo simbólico:

El operador + añade permisos a los ya existentes en cada fichero;
El operador - hace que se quiten de los que ya había; y
El operador = hace que sean los únicos que el fichero va a tener.

chmod o=rwx *
Asigna permisos de lectura, escritura y ejecución para los usuarios "otros" a todos los archivos de la carpeta.

chmod a=rwx fichero.txt
Asigna todos los permisos a todos los usuarios para el archivo fichero.txt

chmod go= *
Quita todos los permisos para los usuario del grupo y los usuarios otros.

chmod u=rwx,g=rw,o= *
Da todos los permisos al dueño del fichero, a los del grupo del dueño le asigna permisos de lectura y escritura y a los otros usuarios les quita todos los permisos.

chmod a=r *
Da permisos únicamente de lectura a todos los tipos de usuario.

De forma similar, también se puede añadir o quitar permisos con los operadores +, - y =.
Para esto se indica el tipo de usuario y el permiso que se resta o añade, por ejemplo:

chmod a-wrx *
Esto quita todos los permisos a todos los tipos de usuario.

chmod a+r,gu+w *
Este comando asigna permisos de lectura a todos los usuarios y permisos de escritura al dueño del archivo y el grupo del dueño.

chmod u=w,a+r *
Este comando asigna permisos de escritura al usuario dueño y a todos los usuarios les añade permiso de lectura.


Como se usa con el modo octal:

El modo en octal es un número en base 8 (octal) que especifica el permiso.
Los permisos expresados en un número octal comienzan con un 0. Por ejemplo, 0777, este indica todos los permisos posibles para todos los tipos de usuarios.

0 - Elimina TODOS los permisos.
1 - Elimina los permisos de lectura y escritura, pero habilita el permiso de ejecución.
2 - Elimina los permisos de lectura y ejecución, pero habilita el permiso de escritura.
3 - Elimina el permiso de lectura, pero habilita los permisos de escritura y ejecución.
4 - Elimina los permisos de escritura y ejecución, pero habilita el permiso de lectura.
5 - Elimina el permiso de escritura, pero habilita los permisos de lectura y ejecución.
6 - Elimina el permiso de ejecución, pero habilita los permisos de lectura y escritura.
7 - Habilita TODOS los permisos.

# chmod 740 archivo.txt

# chmod 740 directorio

7 - Habilita todos los permisos al dueño.
4 - Sólo permiso de lectura al grupo.
0 - Elimina todos los permisos a los otros

Ejemplos:

chmod 0777 archivo.txt
Asigna todos los permisos al archivo archivo.txt

chmod 0666 *
Asigna permisos de lectura y escritura, no de ejecución a todos los archivos y directorios del directorio donde ejecutamos el comando.

chmod -R 0644 *
Esto da permisos a todos los archivos y directorios del directorio donde se invoca el comando y de todos los directorios que cuelgan de él. Los permisos asignados son de lectura a todos los usuarios, de escritura sólo al dueño del archivo y de ejecución a nadie.

Fuentes:

Página man chmod

Enlace 1

Enlace 2

Enlace 3