Está tratando de solucionar un problema de permisos con su servidor web y encontró información en Internet, diciendo que necesita recursivamente chmod 777al directorio web. Antes de hacer eso, asegúrese de comprender lo que chmod -R 777hace y por qué nunca debe establecer permisos en 777.

Este artículo explica el modelo básico de permisos de Linux y qué significan los números correspondientes a los permisos.

Comprender los permisos de archivos de Linux

En Linux, el sistema operativo controla el acceso a los archivos mediante los permisos, los atributos y la propiedad de los archivos. Comprender el modelo de permisos del sistema de archivos de Linux le permite restringir el acceso a archivos y directorios solo a usuarios y procesos autorizados y hacer que su sistema sea más seguro.

Cada archivo es propiedad de un usuario en particular y un grupo y se le asignan derechos de acceso de permiso para tres clases diferentes de usuarios:

  • El propietario del archivo.
  • Los miembros del grupo.
  • Otros (todos los demás).

Hay tres tipos de permisos de archivo que se aplican a cada clase de usuario y le permiten especificar qué usuarios pueden leer el archivo, escribir en el archivo o ejecutar el archivo. Se aplican los mismos atributos de permiso para archivos y directorios con un significado diferente:

  • El permiso de lectura.
    • El archivo es legible. Por ejemplo, cuando se establece el permiso de lectura, el usuario puede abrir el archivo en un editor de texto.
    • El contenido del directorio se puede ver. El usuario puede listar archivos dentro del directorio con el ls comando.
  • El permiso de escritura.
    • El archivo se puede cambiar o modificar.
    • El contenido del directorio se puede modificar. El usuario puede crear nuevos archivos , eliminar archivos existentes , mover archivos , renombrar archivos , etc.
  • El permiso de ejecución.
    • El archivo se puede ejecutar.
    • Se puede ingresar al directorio usando el cd comando.

Los permisos de archivo se pueden ver usando el ls comando. Aquí hay un ejemplo:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

El primer carácter muestra el tipo de archivo. Puede ser un archivo normal ( -), un directorio ( d), un enlace simbólico ( l) o cualquier otro tipo especial de archivo.

Los siguientes nueve caracteres representan los permisos del archivo, tres tripletes de tres caracteres cada uno. El primer triplete muestra los permisos del propietario, el segundo grupo los permisos y el último triplete muestra los permisos de todos los demás.

número de permiso

El permiso de archivo se puede representar en un formato numérico o simbólico. En este artículo, nos centraremos en el formato numérico.

El número de permiso puede constar de tres o cuatro dígitos, que van del 0 al 7.

Cuando se utiliza un número de 3 dígitos, el primer dígito representa los permisos del propietario del archivo, el segundo el grupo del archivo y el último todos los demás usuarios.

Los permisos de escritura, lectura y ejecución tienen el siguiente valor numérico:

  • r(leer) = 4
  • w(escribir) = 2
  • x(ejecutar) = 1
  • sin permisos = 0

El dígito de permisos de una clase de usuario específica es la suma de los valores de los permisos para esa clase.

Cada dígito del número de permisos puede ser una suma de 4, 2, 1 y 0:

  • 0 (0+0+0) – Sin permiso.
  • 1 (0+0+1) – Solo permiso de ejecución.
  • 2 (0+2+0) – Solo permiso de escritura.
  • 3 (0+2+1) – Permisos de escritura y ejecución.
  • 4 (4+0+0) – Solo permiso de lectura.
  • 5 (4+0+1) – Permiso de lectura y ejecución.
  • 6 (4+2+0) – Permisos de lectura y escritura.
  • 7 (4+2+1) – Permiso de lectura, escritura y ejecución.

Por ejemplo, si el número de permiso se establece en 750, significa que el propietario del archivo tiene permisos de lectura, escritura y ejecución, el grupo del archivo tiene permisos de lectura y ejecución y otros usuarios no tienen permisos:

  • Propietario: rwx=4+2+1=7
  • Grupo: rx=4+0+1=5
  • Otros: rx=0+0+0=0

Cuando se utiliza el número de 4 dígitos, el primer dígito tiene el siguiente significado:

  • setuid=4
  • setgid=2
  • pegajoso=1
  • sin cambios = 0

Los siguientes tres dígitos tienen el mismo significado que cuando se usa un número de 3 dígitos. Si el primer dígito es 0 se puede omitir y la moda se puede representar con 3 dígitos. El modo numérico 0755es el mismo que 755.

Para ver los permisos del archivo en notación numérica (octal), use el stat comando:

stat -c "%a" filename
644

Nunca use chmod 777

Establecer permisos 777 para un archivo o directorio significa que todos los usuarios podrán leerlo, escribirlo y ejecutarlo y puede representar un gran riesgo de seguridad.

Por ejemplo, si cambia recursivamente los permisos de todos los archivos y subdirectorios del /var/wwwdirectorio a 777, cualquier usuario del sistema podrá crear, eliminar o modificar archivos en ese directorio.

Si experimenta problemas de permisos con su servidor web, en lugar de establecer recursivamente el permiso en 777, cambie la propiedad del archivo al usuario que ejecuta la aplicación y establezca los permisos del archivo en 644y los permisos del directorio en 755.

La propiedad del archivo se puede cambiar usando el chown comando y los permisos con el chmod comando.

Digamos que tiene una aplicación PHP en su servidor ejecutándose como usuario “linuxize”. Para establecer los permisos correctos, ejecutaría:

chown -R linuxize: /var/wwwfind /var/www -type d -exec chmod 755 {} \;find /var/www -type f -exec chmod 644 {} \;

Solo la raíz, el propietario del archivo o el usuario con privilegios sudo pueden cambiar los permisos de un archivo. Tenga mucho cuidado al usar chmod, especialmente al cambiar recursivamente los permisos.

Conclusión#

Si está administrando un sistema Linux, es crucial saber cómo funcionan los permisos de Linux.

Nunca debe establecer rwxrwxrwxpermisos 777 ( ) para archivos y directorios. 777 significa que cualquiera puede hacer cualquier cosa con esos archivos.

Siéntase libre de dejar un comentario si tiene alguna pregunta.