The logic exists on the block chain. It is executed on each and every machine that follows the chain. This is how executions are verified, 'everyone' has to agree on the outcome.
But in many cases you do want some ability to upgrade the code, and then you simply program in that ability by creating a repointable proxy with whatever authorization logic you want.
If you are a big name in the Ethereum community, they will soft fork Ethereum so that your mistake is rolled back.
Precedent seems to indicate otherwise.
[1] https://www.theregister.co.uk/2017/07/20/us30_million_below_...