Bienvenidos sean a este post, hoy veremos una funcion de PHP.
Esta funcion nos permite cambiar los permisos en un archivo. Cuando nos referimos a los permisos, estamos hablando de como se podra acceder o no al archivo. Veamos como es su sintaxis:
chmod(archivo, permisos);
Primero pasaremos el archivo, con su path si es necesario, y luego los permisos que asignaremos. En el S.O. tenemos dos posibilidades de establecer los permisos pero esta funcion acepta un solo tipo. Pero para poder entender el concepto vamos a ver las dos formas posibles. La primera es con los siguientes valores:
- r (lectura)
- w (escritura)
- x (ejecucion)
Estos son los tres tipos de permiso que podemos asignar al usuario, grupo y el resto (otros) tanto de archivos como directorios. Veamos unos ejemplos:
u=rwx,g-rwx,o-rwx
u=w,g=rwx,o-rwx
u=rwx,g=rwx,o=rwx
La primer linea esablece en el usuario que el usuario dueño del mismo tenga permisos totales. Es decir, de lectura, escritura y ejecucion. Pero para el grupo dueño y el resto de los integrantes del equipo no tendran ningun tipo de acceso al archivo. La segunda linea establece que el usuario solo tiene acceso de escritura, el grupo tetndra acceso total al archivvo y el resto sigue sin tener acceso. La utima linea, dara control total para todos sobre el archivo. Pero tambien disponemos de otra posibilidad de establecer los permisos y es a traves de valores octales. Veamos cuales son:
- 4 (lectura)
- 2 (escritura)
- 1 (ejecucion)
Al igual que en los casos anteriores cada valor representa el tipo de acceso que concederemos al archivo. Pero a diferencia de la forma anterior, debemos sumar los valores para determinar los permisos. Veamos unos valores:
700
270
777
El prrimer valor equivale a la primer linea de los casos anteriores, establece permisos totales para el usuario dueño en el archivo. En el segundo caso, equivale a la segunda linea anterior. Establece el permiso de escritura para el dueño, totales para el grupo y los otros sin permisos. En el ultimo caso, concedemos permisos totales a todos en el archivo. Es lo que comentamos anteriormente, para conceder todos los permisos sumamos a los tres valores. Si no queremos que tenga acceso le pasamos cero, pero si quisiera que solo tenga lectura y ejecucion deben pasar el valor de 5. Esta es la forma correcta que la funcion acepta los permisos. Para entender el concepto, vamos a realizar un ejemplo. Lo primero que haremos sera generar un archivo mediante el siiguiente comando:
$ touch archivo.txt
Este genera un archivo vacio en sistemas basados en Unix. Pasemos a crear un nuevo archivo en el mismo directorio y agregaremos el siguiente codigo:
<?php
$archivo = "archivo.txt";
echo substr(sprintf('%o', fileperms($archivo)), -3) . "\n";
chmod($archivo, 0777);
clearstatcache();
echo substr(sprintf('%o', fileperms($archivo)), -3) . "\n";
chmod($archivo, 0700);
clearstatcache();
echo substr(sprintf('%o', fileperms($archivo)), -3) . "\n";
chmod($archivo, 0655);
clearstatcache();
echo substr(sprintf('%o', fileperms($archivo)), -3) . "\n";
?>
Primero definimos una variable con el nombre del archivo. Lo siguiente es mostrar los permisos actuales del archivo mediante fileperms. Pero para ser mas especificos vamos a usar substr para delimitar la cantidad de digitos que mostraremos y sprintf es para darle un formato de octal, porque sino nos devolvera un valor muy diferente, y luego repetiremos tres veces lo mismo. Primero ejecutaremos la funcion a la cual le pasaremos el archivo con el permiso 777 para darle control total a todos pero con una salvedad, le pondremos un 0 adelante. Esto es asi porque es para indicarle que el valor pasado es de tipo octal, de lo contrario lo transformara directamente a octal y puede dar resultados diferentes. Ejecutamos a clearstatcache para que limpie el valor de fileperms en el cache y luego volvemos a repetir la linea para mostrar los permisos como hicimos anteriormente. Esto mismo lo repetimos dos veces pero para primero cambiar el control total al dueño del archivo y el otro para conceder permisos de lectura y escritura para el dueño y permisos de lectura y ejecucion para el grupo y los otros. Ejecutemos para ver como es la salida:
$ php cambio.php
644
777
700
655
$
Observen como nos muestra los permisos originales, y luego cada uno de los modificados con los distintos llamados a la funcion. Veamos como son los permisos finales del archivo:
-rw-r-xr-x 1 tinchicus tinchicus 0 nov 29 17:11 archivo.txt
En resumen, hoy hemos visto a chmod, que es, para que sirve, como se utiliza, una breve explicacion de los permisos en Unix, asi como una serie de ejemplos, y un ejemplo practico para verlo en accion. Espero les haya resultado de utilidadd sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donatión
It’s for site maintenance, thanks!
$1.50
