Si sueles usar linux en tu ordenador, sabrás de sobra como funciona el sistema de permisos y usuarios en este sistema. Pero si no es tu caso, puede ser engorroso y confuso cuando te enfrentes por primera vez a problemas de funcionamiento en tu servidor administrado por ti o incluso compartido. Así que en esta entrada voy a intentar explicar por encima el funcionamiento, y con tres simples comandos harás el trabajo sin complicaciones. Si quieres saltarte la explicación, pincha aquí.

Explicación

Los permisos en linux se dividen en tres: lectura (r), escritura (w) y ejecución (x). Pueden ser aplicados a archivos o directorios, y se explican así:

  • Lectura: pueden ser leídos (obvio). Si es un directorio, puedes ver su contenido, pero si quieres leer el contenido de alguno de sus archivos debes tener ese permiso para el archivo también.
  • Escritura: se pueden modificar. En el caso de directorios, se puede añadir, editar o borrar su contenido
  • Ejecución: en el caso de un archivo, éste se podrá ejecutar como una aplicación. En el caso de un directorio, podrás usar el nombre del mismo en búsquedas y con aplicaciones.

¿Y a quién se aplica estos permisos? De nuevo, hay tres identidades a las que aplicar su permiso correspondiente:

  • Usuario: el dueño del archivo.
  • Grupo: el grupo al que pertenece el dueño, y que suele tener más usuarios con un rol similar.
  • Otros: todos los que no sean ni el dueño ni pertenezcan al grupo del dueño.

Relativamente sencillo, como podéis ver. Combinando estos dos parámetros se definen los permisos para cada directorio y archivo de todo el sistema operativo. Por ejemplo, los archivos del sistema pertenecen a root, y suelen ser de solo lectura para el resto de los usuarios. De la misma forma, dentro de la parte pública del servidor interesa que sólo puedan ser modificados los archivos por el grupo de usuarios con acceso ftp o administradores.

permisos

Permisos con Filezilla

Así un archivo cualquiera puede aparecer con permisos -rw-r–r– ; y un directorio drwxr–r–. ¿Complicado? No. Si te fijas, el primer carácter ‘d’ indica que es un directorio, y si es un archivo simplemente está vacío ‘-‘. El resto de caracteres se divide en tres grupos de tres (¿te suena?). El primer grupo es el dueño, el segundo el grupo y el tercero otros. Y las letras ya las conocéis. Si aparece un guión ‘-‘, significa que no tiene permiso, y si tiene su letra correspondiente es que sí lo tiene. Así que el ejemplo anterior (-rw-r–r–) es un archivo para el que el dueño puede leer y modificar pero no ejecutar, y que el grupo y otros sólo pueden leerlo. Y el otro ejemplo del directorio, es casi lo mismo, simplemente el dueño también tiene permisos de ejecución.

Ahora bien, no es demasiado práctico para editarlos de una forma rápida y visual, así que se suele usar la representación octal, igual que en la imagen que acompaña a este texto. Básicamente, lectura=4, escritura=2 y ejecución=1. Si un usuario tiene todos los permisos, es un 7, si no tiene ninguno, un 0, si puede leer y escribir será un 6. De este modo, con tres dígitos configuras los permisos para todos los usuarios. El ejemplo anterior (-rw-r–r–) se traduce a 644, y el del directorio (drwxr–r–) sería 744.

Cambiar los permisos

Para cambiar los permisos en el servidor, puedes hacerlo de dos maneras. La primera es gráficamente, con un programa de ftp como Filezilla. Tienes una imagen del mismo más arriba. Pero si deseas hacerlo recursivamente, y con más control sobre la operación, necesitas la terminal o putty para usar ssh.

El comando que se usa es chmod. Por ejemplo, chmod 644 <nombrearchivo> . Simplemente substituyes nombrearchivo por el archivo o directorio al que le deseas cambiar los permisos y listo. También se puede añadir y quitar un permiso, sin modificarlos todos, pero no vamos a entrar en eso. Lo que realmente nos interesa saber de todo esto es que para la parte pública de un servidor, es recomendable que los directorios sean 755 y los archivos 644. Incluso se podría restringir a 444 para los archivos de configuración importantes que no hace falta modificar una vez se hayan ajustado perfectamente.

Tres comandos para hacerte la vida más fácil en tu servidor

Toda esta teoría está muy bien, pero para quien esté comenzando a gestionar un servidor, es nuevo y confuso, así que voy a explicar tres comandos que harán todo el trabajo sucio de una manera eficiente. Incluso podríais modificarlos ligeramente para conseguir otros efectos más acordes a vuestras necesidades.

find . -type d -exec chmod 755 {} \;

find . -type f -exec chmod 644 {} \;

¡¡¡Importante!!! Debes ejecutarlos en la carpeta pública principal de tu servidor, por ejemplo la carpeta de WordPress o Joomla.

El primero de ellos busca en esa carpeta y en todas las subcarpetas todos los directorios que existan, y les aplica los permisos 755. El segundo busca todos los archivos dentro de todos los directorios, y les aplica los permisos 644. ¡Y ya está! Trabajo realizado.

chown -R www-data:www-data *

¿Y este otro comando? Recordarás que hablamos del ‘dueño’ del archivo, que es el que tiene los permisos menos restrictivos. Pues bien, si gestionas tú mismo el servidor, el jaleo con el usuario root, el tuyo propio y el que usa apache para servir las páginas web puede ser lioso. Así que para evitar complicaciones, el comando hace que TODOS los archivos y carpetas, en la principal y en todos los subdirectorios, pertenezcan al usuario y grupo www-data, que es el usuario que se suele utilizar con apache para la parte pública. Si en tu caso es otro, debes modificar el comando, chown -R usuario:grupo * Substituye usuario y grupo por los tuyos y todo listo.