3 ms·
Windows NT was designed as a multi-user system in which everything [0] lived in one of a small handful of global namespaces. They built an unbelievably complex
by amluto 4y ago
Windows NT was designed as a multi-user system in which everything [0] lived in one of a small handful of global namespaces. They built an unbelievably complex ACL and “privilege” system for it. And they allowed remote systems to connect over various Ethernet protocols and interact directly with those global namespaces. And they did the latter with cryptosystems that were obviously terrible even at the time. Of course it didn’t work.
Linux is modeled after Unix, and I don’t think security was a serious initial goal. Heck, Unix has setuid, of which nothing good can be said. Most of Linux’s security advantages were due to:
1. The lack of the aforementioned global namespaces in such an egregious way. The main global namespaces is the filesystem, and that one stares you in the face. The object manager hierarchy in Windows was basically invisible until Sysinternals figured out how to enumerate it and stuck a UI on it.
2. A lack of all the Microsoft RPC crap. Your files and processes on Linux were not all visible from outside. You only had an SMB server if you chose to run one.
3. A much less complex syscall interface. Seccomp on Linux is fairly straightforward. Windows had to come up with a complex “integrity level” scheme. (Windows is full of nasty complex things like restricted jobs that seem unlikely to be used correctly by anyone.)
But at least Windows has a sensible process model and does not have privilege increases when CreateProcess is called.
Security systems that actually work are simple.
At least they had a SAK, which everyone seems to have given up on these days.