Bienvenidos sean a este post, hoy veremos una funcion de PHP.
Esta funcion nos permite modificar el usuario o dueño de un archivo. Veamos como es su sintaxis:
chown(archivo, usuario);
El primer argumento sera el archivo que modificaremos y el segundo sera el nuevo dueño. Podemos pasar tanto el nombre del usuario como el uuid. Nos devolvera un valor booleano para indicar si fue exitoso, true, y en caso contrario un false. Veamos un ejemplo para entender como trabaja pero primero crearemos un archivo vacio, para sistemas basados en Unix pueden usar el siguiente comando:
$ touch archivo.txt
Con nuestro archivo creado, si miramos sus atributos pueden ser como los siguientes:
-rw-r--r-- 1 tinchicus tinchicus 0 nov 30 11:08 archivo.txt
En el caso de ustedes no va a tener este dueño y grupo pero va a ser algo similar a esto. Con esto realizado, pasemos a crear un nuevo archivo en el mismo directorio y agregaremos el siguiente codigo:
<?php
$archivo = "archivo.txt";
$arr = posix_getpwuid(fileowner($archivo));
echo "Usuario actual: " . $arr['name'] . "\n";
chown($archivo, "root");
clearstatcache();
$arr = posix_getpwuid(fileowner($archivo));
echo "Usuario nuevo: " . $arr['name'] . "\n";
?>
Primero definimos una variable con nuestro archivo a modificar. Lo siguiente es almacenar el resultado devuelto por posix_getpwuid, esta funcion devuelve todos los datos en base a usuario o id del usuario que le pasemos. Esto nos devolvera un array con cada uno de los valores del usuario informado. Por esta razon, solo seleccionaremos a la clave name y la mostraremos con un mensaje indicando que es el usuario actual. Aplicamos la funcion al archivo y le pasamos un nuevo usuario. Limpiamos el cache de posix_getpwuid y volvemos a repetir lo comentado antes de cambiar al usuario. Ejecutemos para ver como es tu salida:
$ php cambio.php
Usuario actual: tinchicus
PHP Warning: chown(): Operation not permitted in /home/tinchicus/lenguajes/php/c/cambio.php on line 6
Usuario nuevo: tinchicus
$
Como pueden ver, en este caso fallo porque no tenemos los permisos suficientes. Si bien nos devolvio los datos no modifico al usuario, como se puede ver en ambas salidas. Para solucionarlo debemos ejecutarlo de la siguiente manera:
$ sudo php cambio.php
Usuario actual: tinchicus
Usuario nuevo: root
$
Ahora si funciono correctamente, mostrando al usuario viejo y nuevo del archivo. Si lo comprobamos en el S.O, los atributos se veran de la siguiente manera:
-rw-r--r-- 1 root tinchicus 0 nov 30 11:17 archivo.txt
Antes de finalizar, esta funcion solo puede modificar archivos que se encuentran locales en el servidor y no podemos modificarlo en servidores remotos.
En resumen, hoy hemos visto chown, que es, para que sirve, como se utiliza, y un ejemplo para poderlo en accion, asi como tambien un error que puede surgir y como solucionarlo. Espero les haya sido de utilidad 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
