El comando CHMOD son utilizamos para gestionar los permisos de archivos y directorios dentro del sistema, en este artículo hemos preparado ejemplos que te ayudarán a comprender mejor los permisos chmod.
¿Qué son los permisos CHMOD?
Los permisos CHMOD a través del comando con el mismo nombre permiten cambiar los permisos de acceso para tus carpetas y ficheros dentro de un sistema UNIX, lo cual incluye servidores dedicados o VPS.
Por ejemplo, el comando CHMOD 777 haría que un archivo tuviera todos los permisos para todos los usuarios.
El número que acompaña a CHMOD indica a quién se le va a dar permiso y qué tipo de permiso se le va a dar; de esta manera, el primer dígito representa al propietario del archivo (el que lo creó o subió), el segundo al grupo de usuarios de FTP en ese mismo dominio y el tercero a un usuario corriente.
El valor de cada dígito indica qué permiso va a tener cada tipo de usuario, de la siguiente forma:
- 4 equivale a lectura
- 2 a escritura y
- 1 a ejecución.
Para dar más de un permiso a la vez habría que sumar los valores (por ejemplo para dar permiso de lectura y escritura pero no de ejecución sería 4 + 2 = 6; si quisiera dar permiso de lectura y ejecución para todos los usuarios menos el propietario debe ejecutar el comando CHMOD 755: el propietario mantiene todos los permisos (4+2+1), mientras que el resto sólo tienen lectura y escritura (4+1).
Asignando permisos CHMOD
Una de las dudas más habituales cuando nos enfrentamos a la instalación de scripts (perl, php) es la asignación de los permisos correspondientes.
Las preguntas sobre permisos CHMOD suelen ser las más habituales en todos los foros que se dedican a estos temas. En este artículo abordaremos qué son los permisos, para que sirven, y cómo asignarlos.
CHMOD ("Change mode") es un comando UNIX/LINUX que permite cambiar los permisos de acceso de un archivo. Cada archivo tiene nueve clases de acceso, que pueden ser permitidas o denegadas. Se pueden aplicar diferentes permisos al dueño del fichero, al grupo al que el fichero pertenece y al resto de usuarios. Cada una de estas tres clases de usuarios (dueño, grupo, resto de usuarios) puede tener permisos de lectura, escritura y ejecución
Al instalar cualquier archivo en una página web, podemos definir sus propiedades, para determinar en que forma será accesible para los visitantes de la página.
Estas propiedades son lo que llamamos permisos y según cuales asignemos a cada archivo este será solo de lectura, de escritura o ejecutable, o cualquier combinación de los tres.
Piensa por ejemplo en una página de html sencilla, respecto de la cual solo nos interesa garantizar que todo el mundo pueda verla pero no modificar; el archivo que contiene esa página necesita únicamente permisos de lectura, pero no de ejecución ni de escritura. Por contra, si se trata de un script, necesitará probablemente permisos de lectura y de ejecución, etc.
Los permisos CHMOD
En este documento nos referimos a la asignación de permisos chmod en servidores unix (unix, linux, freebsd, todos ellos pertenecientes a la familia unix, y con diferencia los más difundidos en la red).
La asignación de permisos se hace mediante el comando CHMOD. Por eso, cuando al leer las instrucciones de instalación de cualquier aplicación web te encuentres con la misteriosa frase "haz chmod 644 tal_archivo.htm" ten en consideración que nos están diciendo los permisos que ese archivo necesita.
Los servidores Windows tienen su propio sistema de permisos, en los que no vamos a entrar aquí.
El sistema operativo UNIX está diseñado para ser multiusuario. Por ello UNIX permite tres niveles de acceso a los archivos, para tres categorías diferentes de usuarios:
- Owner (propietario) La persona que el sistema reconoce como dueño del archivo.
- Group (grupo): Conjunto de usuarios con permisos similares. Muy usado en entornos de trabajo, es de escasa aplicación en páginas Web.
- Other (otros): Cualquier otra persona.
Es un error asociar el concepto de usuario a una persona real. Se trata de una abstracción, que se refiere no a personas sino a categorías. Por ejemplo, si nosotros creamos un script, somos efectivamente sus autores y propietarios; pero ese script está destinado a la red. Nosotros, y el resto de personas, accederán al archivo no a través de nuestra máquina local sino por Internet.
Es frecuente en los servidores la creación de usuarios genéricos (root, www, www-user etc). En definitiva no olvides que cuando asignas permisos a un script, el owner puede ser cualquiera que visite la página, lo cual será necesario si como es normal se trata de scripts que se administran vía Web.
Tipos de permisos chmod
Los tipos de permisos chmod son los siguientes:
- Read (lectura): Permiso para ver el archivo o directorio, sin hacer cambios.
- Write (escritura): Permiso de escritura: puede escribir el archivo, y por tanto, cambiarlo.
- Execute (ejecución): El archivo o directorio puede ser ejecutado. Se usa para directorios con scripts, formularios, etc ...
En el caso de los directorios:
- read: listar los archivos de un directorio
- write: añadir nuevos archivos al directorio
- execute: acceder a los archivos del directorio
Cómo conocer los permisos de un archivo?
Si tenemos acceso ssh al servidor, escribimos el comando ls -l y vemos algo así:
# -rw-r--r-- 1 gospelidea gospelidea 1272 Sep 28 07:31 index.php
El comando chmod puede usarse con letras o números. La forma más corriente es expresar los permisos numéricamente.
Para comprender el significado tienes que tener en cuenta que convencionalmente 4 significa permiso de lectura. 2 permisos de escritura y 1 permiso de ejecución. Sumando estos valores vemos que un archivo puede tener los siguientes permisos (por cada tipo de usuario):
- 4 = lectura
- 2 = escritura
- 1 = ejecución
6 (4+2)= lectura y escritura
5 (4+1)= lectura y ejecución
3 (2+1)= escritura y ejecución
7 (4+2+1)= lectura, escritura y ejecución
Todo ello para los tres tipos de usuario.
Así, un chmod file 777 significa que owner, group y others tienen permiso de lectura, escritura y ejecución. chmod 766 significa que el owner tiene permiso de lectura, escritura y ejecución, y el group y others permiso de lectura y escritura. Chmod 744 significa que el owner tiene permisos de lectura, escritura y ejecución, y group y others únicamente permisos de lectura.
Como ves, son tres dígitos, de izquierda a derecha designan los permisos del owner, group y others.
Vemos a continuación su equivalente en letras:
- 0 = --- = sin acceso
- 1 = --x = ejecución
- 2 = -w- = escritura
- 3 = -wx = escritura y ejecución
- 4 = r-- = lectura
- 5 = r-x = lectura y ejecución
- 6 = rw- = lectura y escritura
- 7 = rwx = lectura, escritura y ejecución
De esta manera, en el ejemplo anterior:
# rw-r--r--
Significa que el owner tiene permisos de lectura y escritura (rw-); el group permisos de lectura únicamente (r--) y other, permiso de lectura (r--).
¿Cómo sería el equivalente numérico?
El equivalente número para rw-r-r-- sería 644.
Modificar permisos CHMOD
Para modificar los permisos chmod de los archivos vía web podemos utilizar el administrador de archivos de cPanel.
Si prefieres hacerlo desde un cliente FTP puedes seguir los pasos a continuación:
- WS_FTP: clic derecho sobre el archivo o directorio, y elegir "chmod" en el menú emergente, también es posible haciendo clic derecho y elegir del menú "SITE", y en la barra mostrada escribir el comando UNIX, por ejemplo, "chmod 666 config.php".
- CuteFTP: clic derecho sobre el archivo o carpeta y elegir "Change file attributes" del menú emergente. Para ver los permisos en la ventana, click derecho sobre la ventana y elegir "Long listing".
- NICO: clic derecho sobre el Archivo o carpeta y elegir “Cambiar Atributos” del menú emergente, y efectuar los cambios.
- FILEZILLA: clic derecho sobre el Archivo o carpeta y elegir “Atributos de Archivo” del menú emergente, y efectuar los cambios.