Traductor




Los Permisos

Cuando intentamos trabajar con archivos, es necesario tener los permisos para ello.
Para los usuarios de Linux, estos conceptos resultarán familiares, mientras para los usuarios de Windows, esto resulte un tanto desconocido.


Para el manejo de ficheros y directorios en PHP, todo archivo y directorio tiene tres niveles de permisos de acceso: 

  • Los que se aplican al propietario del archivo.
  • Los que se aplican al grupo que tiene el archivo
  • Los que se aplican a todos los usuarios. 
Los permisos se representan mediante un sistema octal (mas usual) o a través de letras en entorno Linux.

En cuanto a las letras

Su significado son los siguientes: 
  • r read - lectura 
  • w write - escritura (en archivos: permiso de modificar, en directorios: permiso de crear archivos en el dir.) 
  • x execution - ejecución 
Las nueve posiciones de permisos son en realidad un bit que o esta encendido (mostrado con su letra correspondiente) o esta apagado (mostrado con un guión -), asi que, por ejemplo, permisos como rwxrw-r--, indicaría que los permisos del propietario (rwx) puede leer, escribir y ejecutar el archivo, el grupo (o sea los usuarios que esten en mismo grupo del archivo) (rw-) podrá leer y escribir pero no ejecutar el archivo, y cualquier otro usuario del sistema (r--), solo podrá leer el archivo, ya que los otros dos bits de lectura y ejecucción no se encuentran encendidos o activados. 


Permisos en formato numérico octal

La cambinación de valores de cada grupo de los usuarios forma un número octal, el bit x es 20es decir 1, el bit w es 21 es decir 2, el bit r es 22 es decir 4, tenemos entonces: 

  • r = 4 
  • w = 2 
  • x = 1 
La combinación de bits encendidos o apagados en cada grupo da ocho posibles combinaciones de valores, es decir la suma de los bits encendidos:
  • - - - = 0 no se tiene ningún permiso
  • - - x = 1 solo permiso de ejecución
  • - w - = 2 solo permiso de escritura
  • - w x = 3 permisos de escritura y ejecución
  • r - - = 4 solo permiso de lectura
  • r - x = 5 permisos de lectura y ejecución
  • r w - = 6 permisos de lectura y escritura
  • r w x = 7 todos los permisos establecidos, lectura, escritura y ejecución


Tabla de permisos para ficheros
Usuarios
Propietario
Grupo
Otros
Permisos
Lectura
4
4
4
Escritura
2
2
2
Ejecución
1
1
1

Cuando se combinan los permisos podemos obtener diferentes resultados:
Permisos
Valor
Descripción
rw-------
600
El propietario tiene permisos de lectura y escritura.
rwx--x--x
711
El propietario lectura, escritura y ejecución, el grupo y otros solo ejecución.
rwxr-xr-x
755
El propietario lectura, escritura y ejecución, el grupo y otros pueden leer y ejecutar el archivo.
rwxrwxrwx
777
El archivo puede ser leido, escrito y ejecutado por quien sea.
r--------
400
Solo el propietario puede leer el archivo, pero ni el mismo puede modificarlo o ejecutarlo y por supuesto ni elgrupo ni otros pueden hacer nada en el.
rw-r-----
640
El usuario propietario puede leer y escribir, el grupo puede leer el archivo y otros no pueden hacer nada.

Cuando se otorgan los permisos de un archivo, es necesario establecer en la misma instrucción, los tres niveles de usuarios.
Suponga un archivo que desea darle todos los permisos para el propietario, permiso de lectura al grupo y ningún permiso para todos los demás usuarios. Sumando los valores que acabamos de ver en la tabla, vemos que el propietario recibe el valor 7 (4+2+1), el grupo recibe el valor 4, y el resto de los usuarios recibe 0.
Así pues, la secuencia adecuada es 740. Cuando se cambian los permisos desde PHP, esta secuencia siempre debe ir precedida por un cero "0" para asegurarnos que el intérprete entienda que se trata de un número octal.
Por lo tanto la secuencia quedaría 0740.

Para cambiar los permisos de un archivo recurrimos a la función chmod(), que recibe dos argumentos:
  • El primero es el nombre del archivo, con la ruta si es necesario.
  • El segundo es la secuencia de permisos que queremos establecer.
También contamos con la función fileperms(), que recibe como argumento el nombre de un fichero (y la ruta si es necesario), y nos devuelve un valor numérico que indica los permisos actuales del fichero.
El valor devuelto por esta función, no está en formato octal habitual de los permisos.
Debemos transformarlo a octal y substraer los últimos 4 caracteres, esto nos dará como resultado la secuencia de caracteres que indican el permiso del archivo o directorio incluyendo el cero del inicio.
<?php
    echo (substr(printf('%o', fileperms("textoSimple.txt")), -4));
?>
Como puede ver, se trata de un código muy simple, usando la función fileperms(), recuperamos los permisos de un archivo ubicado en el directorio .
La secuencia obtenida, la formateamos en octal mediante la función printf(), y sustraemos los últimos 4 caracteres de dicha secuencia, en esta ocasión al colocar un número negativo a la función substr(), empezará a contar del último caracter al inicio.

Si te hemos ayudado : )

Te agradeceríamos que apoyaras este proyecto



No se te olvide Comentar y Compartir
en:
                          

0 comentarios:

Publicar un comentario