Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/07/2008, 15:15
oreja_tronica
 
Fecha de Ingreso: agosto-2007
Mensajes: 3
Antigüedad: 16 años, 9 meses
Puntos: 0
Cambio de permisos de un fichero (para linux) utilizando stat

Hola a todos.

Programo una pequeña aplicacion en C para cambiar los permisos de un fichero. No obstante me exigen que accesa a la estructura que permite acceder a la informacion del fichero (dueño,fcha de creacion, etc).

La mejor forma para eso (la mejor que conozo) es utilizar la llamada a sistema fchmod(int fd,mode_t modo), supongo que habra otra que se parezca a algo asi como chmod (char *ruta,mode_t modo) . hasta ahy todo bn. (en C)

Hablando de la estructura stat, creo que la mayoria de nosotros utilizamos un apuntador a esa estructura y le pasamos como a la funcion stat(), o lstat() o fstat(), la cadena de caracteres o el identificador de archivo o proceso, y un apuntador de tipo stat, esa funcion llena el apuntador de tipo stat con toda la informacion del fichero en cuestion. (otra vez en C!!!)

El asunto al final es que se utilizar esta estructura stat para leer la informacion del fichero utilizando algo asi como

#include <librerias que no me acuerdo.h>

struct stat buff;

stat(pepito.sh,&buff) //accedo a la informacion de pepito.sh y la guardo sobre buff

buff.st_mode; //accedo a los permisos de pepito.sh

pero si hago algo como

mode_t newModo = 0777;

buff.st_mode=newModo;

obviamente se cambia la informacion en memoria que corresponde a la struct buff, no obstante ese newModo (permiso) no se actualiza en el archivo pepito.sh, ese fichero sigue en el disco con su permiso original.

Alguno de uds sabe como se puede actualizar ese permiso en disco utilizando la estructura stat y no la llamada a sistema fchmod() o chmod() ????