Comandos chmod y chown: cómo usarlos en la gestión de servidores
Los comandos chmod y chown son dos de los principales que debemos de conocer para el trabajo con los servidores Linux que administremos, ya se trate de un VPS, un Servidor Cloud o un Servidor Dedicado. Sirven para gestionar permisos y propiedad de los archivos de los discos del servidor, algo muy importante de cara al buen funcionamiento de las aplicaciones desplegadas y, por supuesto, para la seguridad.
Aunque sean comandos independientes, los vemos juntos porque los problemas que solucionan están muy relacionados y debemos tener presentes algunas consideraciones para no equivocarnos a la hora de escoger el que realmente se debería usar, algo que explicaremos a continuación.
El comando chmod: qué es y para qué sirve
El comando chmod (change mode) sirve para gestionar los permisos de los archivos o directorios del sistema. Cuando usamos este comando debemos tener presentes los tres niveles de gestión de permisos que existen:
- Lectura (r)
- Escritura (w)
- Ejecución (x)
Además, tener que tener en cuenta a los tres tipos de usuarios a los que podemos asignar permisos de manera independiente:
- Propietario (Owner): El dueño del archivo (o directorio)
- Grupo (Group): El grupo al que pertenece
- Otros (Others): Todos los usuarios en general
Sintaxis del comando chmod
Aclarados estos puntos, podremos entender la sintaxis del comando chmod:
chmod [opciones] permisos archivo/directorio/s
Los permisos se pueden indicar de dos maneras, por medio de una sintaxis en números octales (base 8) o por medio de caracteres. ¿Y cómo funciona la base octal? Puede resultar un poco más compleja, pero resulta más abreviada y universal. En base octal, los permisos se expresan con tres dígitos (del 0 al 7).
- El primer dígito corresponde a los permisos del usuario
- El segundo dígito a los del grupo
- El tercer dígito a los del resto de usuarios
Por ejemplo, posibles valores de permisos podrían ser 000, 644, 755, 777, etc.
Para entender lo que cada opción significa, debemos saber que los números octales tienen su correspondencia con números binarios (ceros y unos). Un cero binario significa que no se tiene permiso y un uno binario que sí se tiene.
La tabla de transformación de octal a binario sería la siguiente:
Número | Binario | Lectura (r) | Escritura (w) | Ejecución (x) |
0 | 000 | |||
1 | 001 | |||
2 | 010 | |||
3 | 011 | |||
4 | 100 | |||
5 | 101 | |||
6 | 110 | |||
7 | 111 |
- Así, 0 significa que no hay ningún permiso y 7 que los tiene todos.
- 000 significa que nadie tiene permiso para hacer nada con el fichero.
- 777 significa que todo el mundo tiene permisos para hacer cualquier cosa.
- 700 significa que existen permisos totales para el dueño del archivo, pero no para el resto de los usuarios.
Un ejemplo completo de comando sería el siguiente:
chmod 764 archivo.txt
Esto indica que:
- El usuario dueño tendrá permisos totales sobre el fichero archivo.txt
- El grupo tiene permiso de lectura y escritura (pero no de ejecución)
- El resto de usuarios sólo tienen permiso de lectura
Como modificadores u opciones del comando encontramos una muy útil, que sirve para gestionar los permisos de manera recursiva, en todas las carpetas y subcarpetas de un directorio.
chmod -R 755 mi_carpeta
El comando chown: qué es y para qué sirve
El comando chown (change owner) sirve para indicar quién es el dueño y el grupo de un archivo. Su uso es mucho más sencillo de chmod. Vamos a verlo con un ejemplo directamente.
chown usuariox:grupoy archivo.txt
Como se aprecia, se puede especificar el usuario (en este caso usuariox) y el grupo (grupoy), separados por el carácter. A continuación, se indica el nombre del archivo o directorio afectados por esta nueva configuración.
Igual que chmod, se puede especificar que la operación se realice de manera recursiva.
chown -R www-data:www-data html
Así, se especifica que la carpeta de nombre html y todo su contenido pertenecerán al usuario y grupo www-data.
Recomendaciones de uso para los comandos chmod y chown
Como habíamos comentado, estos comandos son muy relevantes en lo que respecta a la seguridad de los ficheros y carpetas del servidor. Por tanto, queremos finalizar con unos consejos importantes sobre la seguridad.
- Nunca debemos asignar permisos 777. Aunque a veces pueda parecer que una aplicación web no funciona si no le asignamos esos permisos a una carpeta donde se desea escribir información, el nivel 777 es muy peligroso, ya que estamos asignando permisos totales a esos archivos o carpetas. Generalmente, hay que buscar soluciones de permisos más restrictivas y, en cambio, modificar los propietarios o el grupo de los archivos o carpetas.
- Generalmente, trabajamos con 644 para ficheros y 755 para directorios. Esos son los permisos más estándar para los archivos y carpetas del servidor. Esta opción genérica no tiene por qué ser la necesaria para todos los proyectos, pero siempre es una solución bastante apropiada.
Nuevamente, si nuestra aplicación no funciona bien con este nivel de permisos, conviene estudiar quién se encuentra asignado como propietario y grupo de los archivos y carpetas. Un problema habitual es que el propietario sea root. Esto podría suponer que, cuando desde un lenguaje de programación se intenta acceder al archivo para su escritura, nos arroje un error de acceso. La solución adecuada nunca sería asignar 777 para que la aplicación funcione, sino encontrar el usuario y grupo adecuados para el contenido de la carpeta.
Conclusiones para comandos chmod y chown
La gestión de servidores es una tarea que requiere precisión y control, y los comandos chmod y chown son herramientas fundamentales para lograrlo. Al comprender cómo utilizar estos comandos y cuándo aplicarlos, puedes garantizar un servidor seguro y bien organizado.
Además, su importancia se extiende hasta el mundo de los dominios y el hosting web, donde una configuración adecuada de permisos y propietarios es esencial para asegurar el funcionamiento y la seguridad para crear una página web. La administración de servidores y de sitios web van de la mano, y una gestión adecuada de estos comandos es esencial para crear un entorno seguro y eficiente.