Användarprivilegier
I *NIX håller man hårt på att skilja på priviligerade användare och icke priviligerade användare. (Priviligerad användare=root eller admin) I Windows 98 fanns inte ens den distinktionen, alla användare hade samma rättigheter. Först i Windows XP (Om man tittar på de MS-OS som riktar sig till hemanvändare) så fanns olika nivåer av rättigheter. Dock var standard ändå att ha full tillgång till hela maskinen, vilket ledde till att så fort ett program fått tillgång till maskinen så hade programmet full tillgång.
I *NIX däremot så är det praxis att aldrig ge användaren full tillgång utom när behovet finns. I praktiken innebär det att man alltid måste ange sitt lösenord för att systemet ska tillåta dig att utföra vissa operationer. Windows har börjat apa efter det där lite sen Vista, men hur väl det faktiskt funkar kan jag inte svara på då jag inte har prövat eller alls intresserat mig för Vista. Även om lösenordsfrågandet i sig funkar och är säkert är det kanske så att Vista frågar för ofta vilket gör att användaren riskerar att trycka ja slentrianmässigt och få inte skit på datorn. Alla säkerhetrisker är inte tekniska problem.
Internet Explorer
En sak som länge var ett problem i Windows var Internet Explorer, ända sedan Windows 98 när man bestämde sig för att integrera webbläsaren med resten av operativsystemet. Det betydde att bland annat filutforskaren och hjälpsystemet använde IE som hjälpkomponent. Man uppfann även något vid namn HTA-applikationer, som dock aldrig blev särskilt utbrett. Det var omdöpta HTML-filer som kunde köras som vanliga applikationer, med tillhörande tillgång till operativsystemet.
Det var vision om webb-integration med operativsystemet. Det innebar också att det fanns (och gissningsvis finns) ett API i webbläsaren för att komma åt datorn mha Jscript. (Jo... Microsoft uppfann en gång i tiden sin egna standarder vid namn Jscript och Microsoft HTML.)
Detta skulle så klart vara begränsat så att inte åtkomst inte skulle ges till sidor på webben, men det var inte alltid det funkade så bra. Man lappade modellen istället för att göra om och göra rätt, men grundproblemet återstod. Lyckades en sida skapa ett ActiveX-objekt av rätt typ fick användaren åtkomst. (Observera att jag inte talar om ActiveX-plugins utan t ex det så kallade FSO-obektet som är en del av Windows Jscript-API) En metod jag läste om innefattade ett avancerat mönster av att rikta om webbläsaren till ett hjälp-dokument som på något sätt gav åtkomst till filsystemet och tillät intrång.
Jag tror att man till slut byggde om IE totalt i IE7 eller IE8. IE6 var dock säkert ganska säkert på ålderns höst, fast en irriterande konsekvens blev att IE inte kunde köra Javascript på lokala sidor utan användarens godkännande. Man tycker att det borde vara en smal sak att köra Javascript utan privilegier på "vanliga" HTML-sidor på hårddisken, men ändå behålla privilegierna för de system-komponenter som behöver det. Men tydligen inte.
Nätverkssäkerhet
En vidare aspekt är nätverkssäkerhet. Här har Windows och *NIX helt olika filosofier. I *NIX körs i regel så få nätverkstjänster som möjligt. Windows har däremot traditionellt sett haft nätverkstjänster igång ifall de behövs. *NIX-kod kan vara lika buggig som Windows-kod, helt klart, men ju färre tjänster desto mindre attackyta per maskin. (=mindre chans att en viss sårbarhet ska finnas på en viss dator.)
Dessutom är det standard i *NIX att inte köra nätverkstjänster som root, om det inte behövs. Istället har man i regel ett användarkonto per tjänst, så att om någo t ex lyckas ta sig in genom web-servern så har man bara tillgång till web-serverns saker. Detta poblem gav Microsoft sig på först med Vista och gav det då det fräsiga namnet "Windows Service Hardening" - något som borde ha varit självklart från början.
UNIX var dock inte problemfritt från början, men man lärde sig nätverkssäkerhet redan på 80-talet och tidigare - Windows blev däremot inte nätverkskapabelt på riktigt förrän i Windows 95, och även 95'an var på sin tid oftast ansluten över modem, medan UNIX hade agerat servrar i åratal, och därmed växt ur sina barnsjukdomar vad gäller nätverkssäkerhet. Microsoft började lära sig läxan först i början av 2000-talet med Windows XP, och knappt ens då.
Virus genom piratkopiering
Ett annat säkerhetsproblem (ur nybörjarens perspektiv åtminstone) är piratkopiering. Mycket skit kommer in den vägen. I modern tid så har Linux löst det genom lättanvända installationshantrare med fri mjukvara, främst Aptitude, där användaren kan installera saker snabbt, enkelt och gratis. Kvalitén varierar visserligen, men det går att få åtminstone ett bra OS, en bra webbläsare och hyfsat office-paket den vägen, vilket minskar risken för virus lite grann.
Slutplädering
Som slutplädering så tror jag att *NIX är säkrare på främst nätverk för att de lärde sig det tidigare än Microsoft. Men Microsoft har också det problemet att de har en såpass stor användarbas att de inte kan ändra vadomshelst radikalt. Kvidande användare kan vara ett minst lika stort problem som tekniska säkerhetsproblem, i form av minskad försäljning eller ökade supportkostnader. Om Microsoft kunde strunta i att bry sig om bakåtkompatibilitet och bygga något helt nytt så skulle det bli mycket enklare att få Windows säkert. Nu måste de istället se till att en stor mängd både program och användare trivs i Windows. Det är i längden deras största källa till säkerhetsproblem.
Fotnot: *NIX syftar på UNIX samt UNIX-derivat, främst Linux. Linux är inte UNIX, strikt sett, men beter sig i de flesta avseenden som ett UNIX. Därav termen *NIX.