Foros del Web » Programando para Internet » PHP »

Problemas con fopen y permisos. ¿cual es la manera correcta de trabajar?

Estas en el tema de Problemas con fopen y permisos. ¿cual es la manera correcta de trabajar? en el foro de PHP en Foros del Web. Hola, un saludo a todos, Les voy a comentar una duda/problema que tengo en php y no acabo de entender, despues de haber mirado todo ...
  #1 (permalink)  
Antiguo 31/05/2004, 18:33
 
Fecha de Ingreso: noviembre-2003
Mensajes: 51
Antigüedad: 14 años
Puntos: 0
Problemas con fopen y permisos. ¿cual es la manera correcta de trabajar?

Hola, un saludo a todos,

Les voy a comentar una duda/problema que tengo en php y no acabo de entender, despues de haber mirado todo en google php.net etc...

Antes de nada comentaros que hasta ahora yo no habia tenido este problema ya que no trabajaba con archivos en php , siempre lo hacia con BD, pero debido a una aplicacion que me han pedido he de utilizar archivos, lo que me hizo pensar en las funciones de php como fopen, fwrite, etc... pero me encuentro con el siguiente problema que el archivo.php que ha de crear el archivo me da error en la funcion fopen a no ser que le de a la carpeta permisos 0777 o 0757 en definitiva el ultimo (el de todo el mundo) ha de ser 7 y creo que esto es un agujero de seguridad ¿ no es asi ?, despues de darle permisos totales el codigo funciona bien pero se crea el archivo con dueño y grupo99 el codigo es el siguiente:

ignore_user_abort(true);
$file="/home/dominio/public_html/carpeta/.estadisticas";

if (!(file_exists($file)))
{
if (!($fo= fopen($file,"w+"))){
echo "Lo sentimos pero existe un problema con esta pagina, <br/>".
"consulta al <a href=mailto:[email protected]?subject=Pagina%20con%20pro blemas%20error=3459 >webmaster</a>.";
exit;
}}
else if (!($fo= fopen($file,"r+")))
{
echo "Lo sentimos pero existe un problema con esta pagina, <br/>".
"consulta al <a href=mailto:[email protected]?subject=Pagina%20con%20pro blemas%20error=3459 >webmaster</a>.";
exit;

}
fclose($fo);
ignore_user_abort(false);

Si utilizo el archivo despues de darle a la carpeta permisos 777:

Me funciona correcto y se crea un archivo con grupo y usuario 99.


Si el archivo que ha de crear fopen lo creo yo y lo subo al server, con mi grupo y yo como dueño osea, grupo: dominio y dueño: 32187 y con permisos 0664 ( la carpeta sigue teniendo permisos 777) tampoco funciona ya que php, por lo que se ve funciona como usuario y grupo 99 y no puede acceder a mi archivo, me da el siguiente mensaje:

Warning: fopen(/home/dominio/public_html/carpeta/.estadisticas): failed to open stream: Permission denied in

/home/dominio/public_html/carpeta/archivo.php on line 66
(Este error no me preocupa ya que es por no poder cerrar un archivo , que no se ha abierto)
Warning: fclose(): supplied argument is not a valid stream resource in /home/dominio/public_html/carpeta/archivo.php on line 74

¿Es normal esta manera de trabajar con php???
Mi SO es linux red hat en un hosting remoto, con cpanel y php 4.2.x sobre apache 1.3.xx.
Creo que ya hay suficiente informacion ya me direis.
¿conoceis algun link a manual referente a este tema?
gracias

Última edición por soy-yo; 31/05/2004 a las 19:07
  #2 (permalink)  
Antiguo 31/05/2004, 19:32
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
la mejor forma es asegurarse que todos los archivos y carpetas tengan el CHMOD en 777, eso paara que te sea mas facil de hacer, es por medio de tu FTP, o buen con el PHP, usando la función chmod
  #3 (permalink)  
Antiguo 01/06/2004, 04:17
 
Fecha de Ingreso: noviembre-2003
Mensajes: 51
Antigüedad: 14 años
Puntos: 0
¿Pero hacer eso no es una salvajada a nivel de seguridad? ten en cuenta que estoy en un hosting compartido.....
  #4 (permalink)  
Antiguo 01/06/2004, 04:38
 
Fecha de Ingreso: noviembre-2003
Mensajes: 51
Antigüedad: 14 años
Puntos: 0
Quiza sea la manera en la que esta configurado el server, en php.net no te esplican nada sobre permisos para usar fopen , ¿ quiza deberia poner esta pregunta en servidor apache?
  #5 (permalink)  
Antiguo 01/06/2004, 04:45
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

PHP usa un usuario propio. Incluso puede ser distinto del usuario Apache, con lo que a veces con ficheros (imagenes) subidas por PHP no se pueden ver en la web porque apache no tiene permisos.

Mas que un problema de PHP, es un problema de configuracion del servidor, en cuanto usuarios y demas. Tu desde PHP te lo encuentras con los usuarios ya configurados. La solucion seria crear desde PHP esos directorios para que PHP sea el dueño del directorio y bastase un 755. Pero siendo un alojamiento compartido, no se si eso implicaria que el PHP de las otras webs tambien serian dueños de ese directorio. Aunque si esta configurado el open_basedir no podrian acceder a el.

No se, creo que esto seria mas tema de discusion para sysadmins, ya que son ellos los que acaban configurando todos los permisos en los servidores.

Quizas en este caso concreto puedan orientarte en el foro de Linux, ya que es el SO de tu servidor.

Suerte.

PD: De todas formas, comentalo con tu sysadmin. Puede que te diga que poniendo los permisos a 0777 sigue siendo seguro por el open_basedir o el safe_mode.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 01/06/2004, 04:57
 
Fecha de Ingreso: noviembre-2003
Mensajes: 51
Antigüedad: 14 años
Puntos: 0
Pero entonces por lo que comentas php por mucho que configures open_basedir y safe_mode tiene problemas de seguridad ya que para que tu puedas ver lo que hay en el archivo con usuario y grupo 99 te dan permisos de lectura lo que colleva que cualquiera desde ssh pueda leer esos archivos aunque no sean suyos, no se estoy sorprendido....
  #7 (permalink)  
Antiguo 01/06/2004, 05:05
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
No soy sysadmin (realmente me pierdo fuera de w98 ). No se como van los permisos en linux. Ni PHP ni Linux son inseguros, pero seguro que se pueden configurar de una forma insegura.

Si entiendes un poco del tema, ten una charla con el sysadmin de tu servidor. Quizas entre ambos configurais mejor el servidor.

Suerte.

PD: Lo mismo que digo PHP y Linux, tambien hay que tener ojo con MySQL. Conozco hostings donde puedes ver el nombre de la databases de tus vecinos (no sus tablas ni su contenido). Ya se que no es mucho, pero cuanto menos sepa el enemigo, mejor.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 01/06/2004, 12:06
 
Fecha de Ingreso: noviembre-2003
Mensajes: 51
Antigüedad: 14 años
Puntos: 0
Gracias por tu tiempo...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:06.