It is a bit of a hack, but you put a file in /etc/cron.hourly with the following line:
chmod -R a+rw /public
This will fix up the files once an hour. You could do this more frequently with a specific crontab entry. More sophiticatedly, you could use a find (again in script or cron) to discover the files with "incorrect" permissions, and just fix those. This would avoid reseting the ctime for all the files whenever the script was run.