chmod es un comando para cambiar los permisos de un archivo o una carpeta en Linux. Para entender esto,primero para ver los permisos que se tiene sobre un archivo podemos escribir:
ls -l «nombre del archivo»
Entonces aparecerá algo como esto «-rwxrw-rw-» seguido del creador del archivo y otros datos que no nos interesan.
Para explicar fácilmente lo que significa cada letra o guión los vamos a dividir en grupos de 3 (tres bits) de esta forma: «- — — —«
El guión que queda separado de los demás indica que es una carpeta y es reemplazado por la letra d
Los demás son:
- r: leer archivo/carpeta (read)
- w: escribir en el archivo/carpeta (write)
- x: ejecutar archivo/carpeta
También indican a quien le esta dando tales permisos:
- El primer grupo de izquierda a derecha indica los permisos del dueño.
- El de en medio muestra los permisos del grupo al que pertenece el archivo.
- El del final indica los permisos a todos los demás usuarios.
Entonces una vez que entendemos esto explicare las 2 formas para cambiar los permisos:
La primera es la mas fácil, pero no permite mucha flexibilidad en la asignación de permisos. Para esto escribimos:
chmod +x nombredelarchivo
Para agregar permiso de ejecutar el archivo a todos los usuarios. La «x» la podemos sustituir por «r» ó «w» para cambiar los permisos de leer y escribir respectivamente. Y si lo que queremos es quitar un permiso en lugar de «+» escribimos un «-«.
Para el segundo método consideraremos cada guión como un bit. De esta forma con cada grupo de 3 bits el numero máximo que podemos representar es el 7. Para los que no entienden de que hablo aquí les dejo una tabla:
r |
w | x | Numero decimal |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 2 |
0 | 1 | 1 | 3 |
1 | 0 | 0 | 4 |
1 | 0 | 1 | 5 |
1 | 1 | 0 | 6 |
1 | 1 | 1 | 7 |
Los 1’s indican que esta activado un permiso y los 0’s indican que esta descantivado.
Entonces para cambiar los permisos usando estos números lo escribimos de la siguiente manera:
chmod 755 archivo
Esto cambiara los permisos del archivo a rwxrw-rw- lo que significa que el dueño del archivo tiene control total sobre el, pero los demás solo pueden leerlo y cambiarlo. Como pueden ver esos valores corresponden con los de la tabla.