Thanks to MadHatter, I found the solution. The filesystem had been created as one big root partition (not by me!) with /usr, /var, /home and so on simply as subdirectories. For some reason, it had also been mounted nosuid, presumably in a misguided attempt at security. I'm promoting this to an answer so it will show up more readily for anyone suffering the same issue. I should have checked mount options but didn't think to as it's such a silly situation to encounter.