¿Cómo puedo asegurarme de que un usuario no pueda ejecutar un script PHP y que solo se ejecute como parte de un trabajo cron?Asegúrese de que un script PHP se ejecute solo como un trabajo cron?
Respuesta
Puede establecer una variable de entorno en su crontab. Una línea como IS_CRON=1
se puede colocar al comienzo de su crontab, luego verifique su programa php para get_env("IS_CRON") == 1
.
Por supuesto, también debe usar los permisos de archivos, ya que no se pueden omitir fácilmente. Si esto se ejecuta como parte del cron de raíz, chown root:root yourscript.php
y chown 700 yourscript.php
.
Como ircmaxell dice que sería mejor que se ejecute como un usuario distinto de root asumiendo que no necesita permisos de root para lo que está haciendo. Solo estaba adivinando tu configuración.
Yo sugeriría establecer una variable de entorno dentro de su crontab y luego la comprobación de esto dentro de su script PHP
¿Cuál fue el voto negativo? – robjmills
No era mío, pero yo diría "por seguridad por oscuridad". Si bien su sugerencia evitaría la ejecución * accidental *, una ojeada a la secuencia de comandos le dirá a cualquiera qué variable de entorno necesita establecerse (similar a un letrero "no ejecute manualmente").Las respuestas con "configurar un usuario por separado para cronjobs y solo permiten que el usuario acceda y ejecute el script" abordan el origen del problema (similar a un bloqueo que solo puede desbloquear el usuario específico). – Piskvor
Probablemente hay varias maneras de hacer esto. Por encima de todo, diría que colocarlo en un directorio propiedad de root, y que solo pueda leerse por root, podría acercarse a lograr el efecto que está buscando.
¿Hay algún proceso que esté buscando específicamente para restringirlo? Si es así, usando permisos, no sea legible para ninguno de esos procesos.
Cree un usuario para tareas cron y establezca permisos de la secuencia de comandos para que solo se pueda ejecutar como este usuario. Por supuesto, debe colocar la secuencia de comandos en el crontab de ese usuario, lo que puede hacer iniciando sesión como ese usuario y ejecutando crontab
. Simplemente no le dé la contraseña de ese usuario a cualquier otro usuario ...
Al principio también estaba pensando en establecer una variable de entorno que evitaría ejecutar este script desde la web ... Pero simplemente no poner el script en el espacio donde el servidor web busca páginas para sitios web, haría lo mismo.
Y nada impide que un usuario aleatorio configure primero la variable de entorno y luego ejecute la secuencia de comandos.
¿Qué tal si tu script PHP verifica si $_SERVER['REMOTE_ADDR']
está vacío, y si no lo está, haz que el script salga sin hacer nada más?
- 1. puede hacer que un script php se ejecute para siempre con Cron Job?
- 2. ¿Cómo obtendré un trabajo cron para que se ejecute cada 30 minutos?
- 3. ejecutar script php solo por cron
- 4. Cómo hacer que el script php ejecute otro script php
- 5. ¿Se ejecutan dos comandos secuencialmente en un trabajo cron?
- 6. SQL ¿Cómo hacer que un trabajo ejecute un trabajo?
- 7. Haga que un script PHP se ejecute para siempre, acceda a una cola
- 8. ¿Cómo hacer que un bookmarklet se ejecute solo una vez?
- 9. cómo configurar el trabajo cron desde el script php?
- 10. ¿Cómo ejecutar el trabajo cron cuando termina otro trabajo cron?
- 11. Ejecutando un script de Python usando Cron?
- 12. Cron trabajo creando archivo vacío cada vez que se ejecuta
- 13. ¿Qué uso cuando un trabajo cron no es suficiente? (Php)
- 14. ¿Cómo configurar una tarea CRON para que se ejecute solo una vez por conjunto de instancias?
- 15. ¿Puede PHP detectar si se ejecuta desde un trabajo cron o desde la línea de comandos?
- 16. ¿Cómo anular el registro de un trabajo CRON en AppEngine?
- 17. Trabajo de Cron en Ubuntu para php
- 18. $ _SERVER ['DOCUMENT_ROOT'] no funciona en el script php que se ejecuta en cron
- 19. cómo hacer que jenkins ejecute un script de python que ejecute una compilación?
- 20. Cómo hacer un trabajo cron cada 72 minutos
- 21. script cron para actuar como una cola O una cola para cron?
- 22. Cómo agregar un trabajo cron en Linux
- 23. ¿Cómo hacer que Hudson CI ejecute un script de Powershell?
- 24. Cómo ejecutar un trabajo de Cron para Node.js
- 25. trabajo PHP CRON, cabeceras HTTP no de salida
- 26. ¿Cuánto tiempo puede funcionar un trabajo de cron de PHP para/lo estoy haciendo bien?
- 27. Ruta de archivo para un trabajo de Cron
- 28. Permitir que PHP ejecute un script bash con permisos de raíz
- 29. ¿Cómo creo un trabajo cron que se ejecutará todos los días a las 12:20 a.m.
- 30. entrada automáticamente una contraseña cuando un script bash se ejecute
Parece una solución perfecta ... Estoy un poco nuevo en trabajos de cron ... ¿cómo podría configurar el elemento IS_CRON = 1? – Starlin
@Starlin, simplemente ponga esa línea al comienzo de su archivo crontab –
Un usuario también puede establecer variables de entorno. – geoffspear