Anuncios

Bienvenidos sean a este post, hoy veremos una funcion de PHP.

Anuncios

Esta funcion nos cambia el grupo de un archivo. Cuando nos referimos al grupo, ,es al grupo del S.O que podra acceder al archivo en cuestion. Veamos como es su sintaxis:

chgrp(archivo, grupo);
Anuncios
Anuncios

El primer argumento sera el archivo que modificaremos, y el segundo parametro sera el nuevo grupo. Esta funcion devuelve un valor booleano para indicar si se realizo con exito o no. Un ejemplo por el que puede fallar esta operacion, es porque pasamos un grupo inexistente o bien PHP no tiene los permisos suficientes para hacerlo. Siendo true cuando se realizo con exito y false cuando no. Otro tema a tener en cuenta, los archivos que podemos modificar son los locales del equipo y no con archivos remotos. Veamos un ejemplo, para ello primero crearemos un archivo con el siguiente comando:

$ touch archivo.txt
Anuncios

Esto genera un archivo vacio en sistemas basados en Unix. Veamos los parametros que genero para nuestro archivo:

-rw-r--r-- 1 tinchicus tinchicus   0 nov 29 10:50 archivo.txt
Anuncios

En mi caso genero el archivo con mi usuario y el grupo que pertenece mi usuario. Esto puede ser distinto en el caso de ustedes. Pasemos a crear un nuevo archihvo en el mismo directorio y le agregaremos el siguiente codigo:

<?php

$archivo = "archivo.txt";
$texto = "%s pertenece al grupo %s\n"
$arr = posix_getpwuid(filegroup($archivo));
printf($texto, $archivo,$arr['name']);
chgrp($archivo, "root");
clearstatcache();
$arr = posix_getpwuid(filegroup($archivo));
printf($texto, $archivo,$arr['name']);

?>
Anuncios
Anuncios

Primero definimos dos variables, siendo el primero para el archivo que modificaremos y el segundo para el mensaje que mostraremos. La siguiente linea se encargara de obtener todos los datos posix del id de S.O que le pasemos. Para esta ocasion, usaremos a filegroup y el archivo que generamos, esto devolvera toda la informacion del grupo en cuestion. Con nuestro array creado, lo siguiente es mostrar el texto que asignamos anteriormente en la variable, y mediante printf lo mostraremos pero le pasamos la variable del archivo y del array la clave relacionada con el nombre del grupo. Esto completara los campos internos del texto y formateandolo. Lo siguiente sera aplicar a la funcion donde pasaremos el archivo y luego el nuevo grupo que tendra. La funcion que sigue a esta es para limpiar del cache los resultados del filegroup y posix_getpwuid anteriores y finalmente, repetimos la linea para mostrar el grupo del archivo. Ejecutemos para ver como es su salida:

$ php cambio.php
archivo.txt pertenece al grupo tinchicus
PHP Warning:  chgrp(): Operation not permitted in /home/tinchicus/lenguajes/php/c/cambio.php on line 7
archivo.txt pertenece al grupo tinchicus
$
Anuncios

Observen que nos mostro correctamente el nombre del grupo que tiene el archivo pero despues nos devuelve un error. Esto es asi porque PHP puede no tener los permisos suficientes para realizar este cambio. Pueden tomar dos acciones: la primera es cambiar el usuario que ejecuta a PHP para que tenga los permisos o simplemente lo hacen con SUDO. Ejecutemos nuevamente pero ahora con sudo:

$ sudo php cambio.php
archivo.txt pertenece al grupo tinchicus
archivo.txt pertenece al grupo root
$
Anuncios

Observen como ahora funciono perfectamente y nos devolvio el nuevo nombrre del grupo que le asignamos, si lo comprueban por fuera ahora tendra los siguientes datos:

-rw-r--r-- 1 tinchicus root        0 nov 29 10:50 archivo.txt
Anuncios

En resumen, hoy hemos visto a chgrp, que es, para que sirve, como se utiliza, un ejemplo para entenderlo, asi como tambien algunos inconvenientes que pueden suceder. Espero les haya resultado 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.

Anuncios
pp258

Donatión

It’s for site maintenance, thanks!

$1.50