this post was submitted on 02 Sep 2023
29 points (100.0% liked)

Programming

13376 readers
1 users here now

All things programming and coding related. Subcommunity of Technology.


This community's icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.

founded 1 year ago
MODERATORS
 

I have never dug into low level things like cpu architectures etc. and decided to give it a try when I learned about cpu.land.

I already was aware of the existence of user and kernel mode but while I was reading site it came to me that "I still can harm my system with userland programs so what does it mean to switch user mode for almost everything other than kernel and drivers?" also we still can do many things with syscalls, what is that stopping us(assuming we want to harm system of course) from damaging our system.

[edit1]: grammar mistakes

you are viewing a single comment's thread
view the rest of the comments
[–] jarfil@beehaw.org 3 points 1 year ago (1 children)

Windows 7 and later, have even better anti-non-superuser protections than Unix-like systems. It's taken a while for Linux to add a capabilities permission system to limit superusers, something that's been available on Windows all the time.

[–] ricecake@beehaw.org 2 points 1 year ago (1 children)

Er, selinux was released nearly a decade before Windows 7, and was integrated into mainline just a few years later, even before vista added UAC.

Big difference between "not available" and "often not enabled".

[–] jarfil@beehaw.org 1 points 1 year ago

Windows 95 already had an equivalent of selinux in the policy editor, "often not enabled". UAC is the equivalent of sudo, previously "not available".

Windows 7 also had runtime driver and executable signature testing ("not available" on Linux), virtual filesystem views for executables ("not available" on Linux), overall system auditing ("often not enabled" on Linux), an outbound per-executable firewall ("not available" on Linux), extended ACLs for the filesystem ("often not enabled" and in part "not available" on Linux)... and so on.

Now, Linux is great, it had a much more solid kernel model from the beginning, and being OpenSource allows having a purpose-built kernel for either security, flexibility, tinkerability, or whatever. But it's still lacking several security features from Windows, which are useful in a generalistic system that allows end-users to run random software.

Android had to fix those shortcomings by pushing most software into a JVM, while Flatpak is getting popular on Linux. Modern Windows does most of that transparently... at a hit to performance... and doesn't let you opt-out, which angers tinkerers... but those are the drawbacks of security.