Busqueda sobre Linux y software libre

Noticias sobre linux y software libre - Google 

Abrir un archivo del sistema desde php en Ubuntu

Pregunta


tengo otra pregunta
 
cuando me encuentro en la terminal de ubuntu escribo lo siguiente:
 
gksu gedit  /etc/misarchivos/configuracion.conf
 
y eso me abre el archivo con privilegios para editarlo y luego guardarlo como administrador "su"
 
ocurre lo siguiente, ...... eso mismo necesito realizarlo desde PHP con código, he encontrado que con fopen("/etc/misarchivos/configuracion.conf") puedo abrir un archivo, 
intentando hacerlo con fopen al hacerlo correr me sale el error que no tengo permiso, claro es porque me falta gksu gedit para tener privilegio de administrador "su"
Ahora por otro lado encontre lo siguiente:
 
$ultima_linea system('ls'$retval);
 
system dice que me ejecuta comandos desde php, lo he probado y si funciona, quise combinar los dos 
fopen() y system() , pero no obtuve un buen resultado.
 
Alquien me puede ayudar por favor, o darme alguna guia ?????
 

 Respuesta


como ejecutas el script PHP, desde consola o mediante el navegador??

Aver si te sirve esto:
Desde la consola con el cliente php puedes ejecutar: 



sudo php /var/www/fichero.php

puedes combinarlo junto con system y hacer lo que necesitas.





Otra respuesta


¿Por que no cambias los permisos antes de ejecutar tu script de PHP?
   chmod 777 /etc/misarchivos/configuracion.conf

Si no quieres cambiar los permisos, puedes executar tu archivo de php con sudo:
 sudo php micodigo.php

Si quieres evitar usando una contraseña, puedes editar tu archivo /etc/sudoers:
  sudo visudo
Y añadir esta linea:
 %users ALL = NOPASSWD: cat /etc/misarchivos/configuracion.conf

Entonces, puedes usar esto en tu script de php:
 exec("sudocat /etc/misarchivos/configuracion.conf", $a);

Donde $a tiene el contenido del archivo en un array.





Y otra respuesta


En general es una mala idea poner permisos para todo el mundo. Yo suelo
decir que también que es una idea peresoza por no buscar mejores
caminos.

Por lo que se indica , asumo que su código PHP se está ejecutando vía
el servidor web apache. Y por ahí debe ir la solución.

El tema de permisos de acceso a un archivo, es validado por el sistema
verificando la propiedad del archivo y la propiedad del proceso. En la
mayoría de los sistemas el servidor web (por tanto PHP) se ejecutan bajo
un usuario determinado (propietario del proceso), en Debian www-data, en
CentOS apache.

Entonces si quiero tener un script PHP que ejecutado via web pueda
editar un archivo, todo lo que tengo que hacer es que mi usuario
www-data/apache sea dueño de ese archivo. Esto es bastante permisivo, y
en general la seguridad recomienda dar el permiso mínimo necesario. Asi
que en lugar que sea dueño del archivo es mejor que sólo pertenezca a su
grupo.

Traduciendo a órdenes sería así: (asumiendo que el usuario bajo el cual
corre el servidor web es 'apache')

chown root.apache /etc/misarchivos/configuracion.conf
chmod u=rw,g=rw,o= /etc/misarchivos/configuracion.conf

A partir de este momento un script PHP como se menciona antes podría
hacer fopen("/etc/misarchivos/configuracion.conf") y modificar el
archivo.

Para averiguar que usuario es dueño del proceso "servidor web" se puede
hacer: ps aux | grep http

En mi máquina obtengo esto:

[root@hardy ~]# ps aux | grep http
apache    1668  0.0  6.1  43084 22812 ?        S    Aug17
0:04 /usr/sbin/httpd
apache   10130  0.0  6.8  45276 25144 ?        S    Aug18
0:04 /usr/sbin/httpd
root     19690  0.0  4.9  35804 18200 ?        Ss   Jun05
10:07 /usr/sbin/httpd
apache   21769  0.0  6.5  44112 24000 ?        S    Aug17
0:05 /usr/sbin/httpd
apache   26457  0.0  6.1  42944 22752 ?        S    Aug18
0:03 /usr/sbin/httpd
apache   28042  0.0  5.4  41460 20136 ?        S    09:31
0:00 /usr/sbin/httpd
root     29736  0.0  0.1   1836   492 pts/0    S+   13:00   0:00 grep
http

Ads by CJ - Linux Foundation

Share This