• Publicidad

Otra duda sobre CGI...

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Otra duda sobre CGI...

Notapor Guille » 2006-09-02 13:22 @599

¡¡Hola a todos!!

Mi problema es que deseo ejecutar un CGI desde un usuario, que debe eliminar, borrar o listar, en carpetas de otros usuarios...

He intentado darle esas propiedades a traves del sudo pero no he tenido resultados y tengo igual error 500, he intentado ejecutarlo en la carpeta del usuario con el archivo de nombre de root pero recibo también error 500.

Alguien tiene alguna sugerencia... :?:

¡¡¡Saludos para todos!!!
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina

Publicidad

Notapor Guille » 2006-09-02 13:27 @602

Mi log de error apache muestra lo siguiente:

Premature end of script headers: /home/guille/public_html/Scripts/h.pl


Saludos!!
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina

Notapor explorer » 2006-09-02 13:37 @609

Realmente no importa donde esté el cgi, porque luego, con chdir o indicando el path completo, se tiene acceso a todos los ficheros y carpetas que el usuario que está ejecutando el cgi tiene.

Eso quiere decir que los permisos de ficheros y directorios que se quieren modificar deben tener permisos adecuados para ese usuario. O que el usuario que ejecuta el cgi pertenezca al mismo grupo que los ficheros. O que los ficheros pertenezcan al grupo del usuario.

Esta última es la mejor opción. En mi sistema, por ejemplo, el servidor web es el usuario www-data, que pertenece al grupo www-data. Cuando el cgi corre, lo hace como ese usuario, por lo que podrá tener acceso y modificar todos los ficheros que tengan permiso de modificación para ese usuario y/o grupo. Lo que suelo hacer es que los ficheros pertenezcan al grupo www-data, mientras que la propiedad del fichero pertenece al usuario original. Dándole al fichero, además, permiso de modificación al grupo, pues entonces el servidor web ya puede cambiarlos.

Naturalmente, también es válida dar a los ficheros y directorios todos los permisos para que todo el mundo (entre ellos el usuario www-data) puedan modificarlos.

Otra opción es poner el bit de setuid al cgi, con lo que el cgi corre con la personalidad del propietario o la del grupo (según se ponga en un sitio o en otro el bit de setuid). Esto es más peligroso, porque estamos corriendo un programa como un usuario normal, mientras antes lo hacíamos como el www-data, que normalmente tiene muchos menos privilegios y accesos.

Recuerda que para ejecutar el cgi en un determinado directorio, es necesario decirle al servidor web que allí se puede ejecutar cgi.

Más información:
http://quark.fe.up.pt/ApachES/manual-es ... ermissions
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Guille » 2006-09-02 14:57 @664

Lamentablemente no he podido hacer de ninguna de las 2 maneras ya que poniendo el setuid al archivo y el ejecutable a nombre de root sigo recibiendo error 500...

Y en cuanto a la otra posibilidad tampoco es viable ya que todos los usuarios se encuentra con su archivos de tipo usuario.usuario

Pero escribiendo este post, se me ha ocurrido una idea que tal vez puede funcionar agregare a todos los grupos al usuario que ejecuta el script.

Luego cuento como fue....

Saludos!!!
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina

Notapor Guille » 2006-09-04 09:36 @441

Ey de nuevo por aca... :lol:

Les comento que lo anterior ha funcionado pero varias dudas estéticas con respecto al funcionamiento.

En el código tengo lo siguiente:

Código: Seleccionar todo
my $mail = `ls /home/usuario/mail/ -l`;
print "$mail";


Esto me devuelve algo asi:
Código: Seleccionar todo
total 156
-rw-rw---- 1 usuario mail 544 Dec 27 2005 Borrador
-rw-rw---- 1 usuario mail 544 Apr 30 17:30 Correo electr&APM-nico no deseado
-rw-rw---- 1 usuario mail 504 Dec 27 2005 Drafts
-rw-rw---- 1 usuario mail 544 Jun 5 12:40 Elementos enviados
-rw-rw---- 1 usuario mail 504 Dec 27 2005 INBOX.Drafts
-rw-rw---- 1 usuario mail 504 Dec 27 2005 INBOX.Sent
-rw-rw---- 1 usuario mail 504 Dec 27 2005 INBOX.Trash


Mi pregunta es la siguiente, hay alguna manera de poder hacer que esto salga como en la terminal renglón por renglón y no todo junto, ya he intentado ponerlo en un array y poniendo los subíndices, pero ya el subíndice [0], no es el primer renglón del que aparece en la terminal, ¿a que se debe eso?

La manera que encuentro para hacerlo es meter la salida en un archivo y luego imprimir esto pero bueno... la otra manera sería mas facil..

¡¡¡Saludos y gracias!!!
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina

Notapor explorer » 2006-09-04 10:07 @463

Para que salga renglón por renglón, como en la terminal, pero en una página web, debemos recordar que para el html, un caracter de fin de línea es como un espacio en blanco más. Por eso salen todos los renglones juntos.
Hay varias soluciones. La clásica es insertar toda la salida dentro de marcas de texto preformateado:
Código: Seleccionar todo
print '<pre>', $mail, '</pre>';

Otra forma es añadir una ruptura de línea a cada fin de línea:
Código: Seleccionar todo
$mail =~ s/\n/<br \/>\n/g;

Todo esto se puede hacer porque toda la respuesta del comando 'ls' se guardó en una variable escalar.
Se podría haber guardado en una variable array, por lo que entonces tendríamos un renglón por cada elemento del array:
Código: Seleccionar todo
@mail = qx( ls -l );
print $mail[0];  # total 156
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Guille » 2006-09-04 11:04 @503

Ha funcionado de manera excelente gracias explorer!!! :D


Saludos para todos !!
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron