CHMOD: Permisos en archivos y carpetas en Unix y Linux

El comando CHMOD te permite colocar permisos de acceso para los archivos en tu servidor web o cuenta de hospedaje compartido.
Este comando es comúnmente utilizado para colocar permisos en archivos PHP o scripts Perl.

Por ejemplo, muchos scripts tienen los permisos para que el propietario o dueño (OWNER) pueda leer, escribir y ejecutar, mientras que para el grupo (GROUP) y cualquier otra persona (ANYBODY) de manera general los permisos son de lectura y ejecutar, casi nunca de escritura. Para este tipo de permisos, limitados pero con suficiente autorización para usarlos y ejecutarlos, el número que lo representa es 755.

Otro permiso común es el 777, el cual permite escribir (lo cual incluye modificar o eliminar) sobre el archivo. Si estos permisos están asignados a ANYBODY entonces cualquier persona desde la web podrá modificar el archivo. De manera general lo encontramos asignados para OWNER pero casi nunca para GROUP o ANYBODY, ya que representa una falla en la seguridad y un riesgo latente.

Los números mencionados representan niveles de permisos para distintos grupos. Los grupos de usuarios con los que contamos son: OWNER (también llamado USER, es el propietario de los archivos), GROUP que representa algún grupo específico y ANYONE o WORLD, y que es para todo mundo.

Los permisos disponibles son:
0 (cero) = Sin permisos
1 = permiso de ejecutar únicamente
2 = permiso de escribir solamente
3 = escribir y ejecutar
4 = permiso de leer
5 = leer y ejecutar
6 = leer y escribir
7 = leer, escribir y ejecutar

Como puedes ver aquí, colocar un 7 en las 3 posiciones significa acceso abierto a todas las opciones de permiso para ese grupo.

Por ejemplo, si usas el CHMOD 650, la explicación entonces sería:
– El primer número, 6, da al OWNER los permisos de lectura y escritura sobre el archivo.
– El segundo número, 5, le da al GROUP los permisos de lectura y ejecución.
– El tercer número, 0, le da a todos los demás ningún permiso sobre el archivo.

Al usar CHMOD tienes 3 grupos de números, lo cual representa igualmente 3 grupos de usuarios:
1. Owner o User, el cual de manera general es el webmaster
2. Group, un grupo de usuarios configurado por el webmaster
3. World o Anyone, que es básicamente cualquier usuario que usa tu sitio web.

Cada digito de estos grupos de números configura los permisos de cada uno de los grupos que mencionamos. La suma de esos números es lo que dará los permisos asignados para cada grupo.

0 = ningún permiso; esta persona no puede leer, escribir y ejecutar en el archivo
1 = ejecutar solamente
2 = escribir solamente
3 = escribir y ejecutar (1+2)
4 = leer solamente
5 = leer y ejecutar (4+1)
6 = leer y escribir (4+2)
7 = leer y escribir y ejecutar (4+2+1)

Podemos hacer el siguiente ejercicio sobre el hipotético archivo hola.txt:
CHMOD 700 hola.txt
Sólo tú como dueño del archivo puedes leer, escribir, o ejecutar en el archivo

chmod 777 hola.txt
Todo mundo puede leer, escribir, o ejecutar en el archivo

chmod 744 hola.txt
Puedes leer, escribir y ejecutar en el archivo. Grupo puede leer y todo mundo puede leer, nada más.

chmod 444 hola.txt
Tú como dueño, el grupo y todo mundo puede solamente leer en el archivo.

Al ver listado el archivo lo ves más o menos asi
hola.txt -rwxr–r– 5 February

La secuencia -rwxr–r– indica los permisos otorgados en el archivo hola.txt. El primer – te indica que hola.txt es un archivo. Las siguientes tres letras, rwx muestra que el dueño del archivo (owner) puede leer, escribir, y ejecutar. Los siguientes tres, r–, muestran que los permisos del grupo son de lectura solamente, y los siguientes tres elementos, r–, muestran que los permisos para todo mundo son sólo de lectura igualmente.

Ejemplo de permisos sobre archivos y sobre carpetas:

Las carpetas comparten básicamente la misma estructura de permisos de acceso que los archivos. En este caso, la carpeta no es intercedida en sus permisos por una – sino por una letra d.