For GitHub repos, you have to request public-push access specifically. If you're setting up a repo on your own, it's not an issue of configuration, but of how you serve it (git init --shared just affects the Unix permissions). "git daemon" comes with git and can be configured to allow public push by mucking with the configuration or starting it using "git daemon --enable=recieve-pack".