Pregunta

¿Alguien ha utilizado PHP (probado y exitoso) CHMOD un directorio a través de un navegador Web?

Mis obstáculos son: (A) script PHP se ejecuta como "nadie" desde el navegador (B) directorio superior al que quiero CHMOD es propiedad del usuario FTP y "nadie" no tiene permisos de escritura a la misma

Así que cuando trato de chmod 0666 / usr / www / dirOwnedbyFTPuser / dirIamTryingToCHMOD / consigo permiso denegado

Si alguna vez ha escrito y ejecutar con éxito una secuencia de comandos para hacer esto, usted puede compartir el código de snipit conmigo? Gracias ... estado en esto por meses.

¿Fue útil?

Solución

Si es posible hacerlo a través de php. Sin embargo habituales reglas se aplican los permisos de Linux con el fin de que busca a chmod scripts no son propiedad del usuario de Apache (nadie) y el usuario apache no tiene permisos de escritura a continuación, un método consiste en dar permiso Apache para usar sudo

Se advirtió - esto es potencialmente un enorme agujero de seguridad !!!

Puede dar permiso para usar sudo Apache editando el archivo sudoers. Se recomienda que no se edita este archivo directamente como un error te puede dejar completamente atornillado así en mi sistema (Ubuntu) tipo I

sudo visudo

Luego hay que añadir una línea para el usuario "nadie". Puede restringir los permisos de sudo a un script o carpeta en particular, así que recomiendo escribir un script para cambiar los permisos y luego colocar esto en una carpeta lejos de cualquier otros scripts. De esa manera Apache no tiene privilegios de administrador completos en su sistema (que es un pensamiento bastante miedo). También puede poner un poco de código en el script de shell para restringir los archivos que se pueden cambiar.

También es necesario para permitir que Apache sudo sin una contraseña que usted no tiene manera de introducir la contraseña a través de php. Así, la línea deberá añadir es algo así como

nobody ALL=(ALL)NOPASSWD:/path/to/my/script

A continuación, en php que acaba de agregar un prefijo de comando con sudo

passthru ("sudo /path/to/my/script ...");

(hay algunas otras funciones que puede utilizar en lugar de tránsito (), fue sólo el primero que vino a la mente)

Como he dicho antes, esto es potencialmente muy peligroso y mientras lo anterior funcionará, sólo he utilizado en mi propio sistema privado antes, nunca en un servidor de producción pública. Estoy seguro de que mucha gente le tiene comentarios sobre la seguridad de este modo estaría interesado en escuchar lo que otros peligros potenciales y agujeros de seguridad no podían estar con este método. Yo sé una cosa similar puede hacerse utilizando SuExec pero no estoy muy familiarizado con él por lo que si alguien tiene alguna pros o los contras de SuExec más de este método estaría interesado en escuchar ellos.

Nota final: me gustaría cambiar el usuario apache de nadie a algo así como 'Apache' o 'www' - probablemente sólo ser tonto, pero no me gusta la idea de dar permisos de root a un usuario llamado nadie !!!

Espero que esto ayude!

Otros consejos

Sí, puede chmod de PHP a través de un navegador web. (Sí, todos sabemos que puede ser una mala idea) ..

Pero - sólo puede grabar archivos chmod que el script PHP tiene permiso para usar! Si ejecuta el servidor web PHP como nadie, entonces se puede chmod los archivos propiedad de "nadie" ...

http://www.php.net/ftp Usted podría tener registro de php como el usuario ftp y hacerlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top