Having used secured SELinux enterprise code, I’ve learned that Linux permissions can be even more complicated than Windows’ when multiple permission models suddenly overlap. There’s an endless supply of special bit flags, security contexts, and sandboxing features that all overlap.
I’ve run into very complicated Linux permission issues when combining SELinux (properly configured, not just neutered and standby) and system services in some specific configuration. Once you start applying the permission systems that Windows comes with by default in Linux, you get the same problems (or worse ones, as Linux has a multitude of permission systems stacked on top of each other).
On Windows, I recall one particularly messed up drive from another computer that not even NT_AURHORITY\SYSTEM was allowed to alter the ownership of. Luckily Linux happily stripped out all the permissions for me because Linux can plainly ignores ACL if you’re root and provide the right flags. Probably a terrible way to break ACLs in a managed environment, but this time it was a feature!
We tend to forget about it these days, but the Unix permissions model was criticized for decades for being overly simplistic. One user having absolute authority, with limited ways to delegate specific authority to other users, is not a good model for multi-user operating systems. At least not in environments with more than a few users.
A well-configured sudo or SELinux can overcome this, which is one reason we don’t bring it up much anymore. We also changed the whole model, where most people have individual PCs, and developers are often in their own little VM environment on a larger server.
I agree with the critics, the Unix permission model is too basic. I’ve run into this myself doing the very difficult operation of “reusing an ext4 USB drive on another computer” because all the files were suddenly owned by a user that didn’t even exist on my laptop.
NTFS fixed this issue by having the OS generate user IDs across systems rather than reusing the same IDs and making the administrators match everything up. I don’t think selinux can fix that, though.
I welcome the extensions bringing Linux’ permission model to the 21st century, but the way they’ve all been implemented independently does cause some weird edge cases that clearly nobody has tested.
Having used secured SELinux enterprise code, I’ve learned that Linux permissions can be even more complicated than Windows’ when multiple permission models suddenly overlap. There’s an endless supply of special bit flags, security contexts, and sandboxing features that all overlap.
I’ve run into very complicated Linux permission issues when combining SELinux (properly configured, not just neutered and standby) and system services in some specific configuration. Once you start applying the permission systems that Windows comes with by default in Linux, you get the same problems (or worse ones, as Linux has a multitude of permission systems stacked on top of each other).
On Windows, I recall one particularly messed up drive from another computer that not even NT_AURHORITY\SYSTEM was allowed to alter the ownership of. Luckily Linux happily stripped out all the permissions for me because Linux can plainly ignores ACL if you’re root and provide the right flags. Probably a terrible way to break ACLs in a managed environment, but this time it was a feature!
Omg, it’s an inside-joke at our company now.
Anytime something happens on a server that’s been running great for years, like a hard drive going bad or the time one literally caught on fire…
98% of the time it is selinux that is the reason it is doing weird things after the main fix because selinux changed a setting on the reboot.
“Have you checked selinux?” is the go to question whenever anything breaks now, even if it’s not a computer.
We tend to forget about it these days, but the Unix permissions model was criticized for decades for being overly simplistic. One user having absolute authority, with limited ways to delegate specific authority to other users, is not a good model for multi-user operating systems. At least not in environments with more than a few users.
A well-configured sudo or SELinux can overcome this, which is one reason we don’t bring it up much anymore. We also changed the whole model, where most people have individual PCs, and developers are often in their own little VM environment on a larger server.
I agree with the critics, the Unix permission model is too basic. I’ve run into this myself doing the very difficult operation of “reusing an ext4 USB drive on another computer” because all the files were suddenly owned by a user that didn’t even exist on my laptop.
NTFS fixed this issue by having the OS generate user IDs across systems rather than reusing the same IDs and making the administrators match everything up. I don’t think selinux can fix that, though.
I welcome the extensions bringing Linux’ permission model to the 21st century, but the way they’ve all been implemented independently does cause some weird edge cases that clearly nobody has tested.