Está tratando de solucionar un problema de permisos con su servidor web y encontró información en Internet, diciendo que necesita recursivamente chmod 777
el directorio web. Antes de hacer eso, asegúrese de entender qué hace chmod -R 777
hacer 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.
Comprensión de los permisos de archivo 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.
- Se puede ver el contenido del directorio. El usuario puede listar archivos dentro del directorio con
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 ls
dominio. 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 (-
), 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 n.º
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) =4w
(escribir) =2x
(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:r-x=4+0+1=5
- Otros:r-x=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 0755
es lo 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 bajo el /var/www
directorio 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 644
y permisos de directorio a 755
.
La propiedad del archivo se puede cambiar usando el chown
comando y permisos con 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/www
find /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 cuando se cambian recursivamente los permisos.
Conclusión #
Si está administrando un sistema Linux, es crucial saber cómo funcionan los permisos de Linux.
Nunca debe configurar 777 (rwxrwxrwx
) permisos permisos de 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.