Budu nesouhlasit s odpověďmi, které říkají, že na vině je stáří bezpečnostního modelu Unix nebo prostředí, ve kterém byl vyvinut. Nemyslím si, že tomu tak je, protože existují mechanismy, jak to zvládnout.
Systém oprávnění root dává smysl, ale na desktopových systémech se zdá, že chrání nesprávná data.
Oprávnění superuživatele existují k ochraně systému před jeho uživateli. Oprávnění k uživatelským účtům slouží k ochraně účtu před jinými účty než root.
Spuštěním programu mu dáváte oprávnění dělat věci s vaším UID. Vzhledem k tomu, že vaše UID má plný přístup k vašemu domovskému adresáři, dali jste programu přechodně stejný přístup. Stejně jako má superuživatel přístup k provádění změn v systémových souborech, které vyžadují ochranu před škodlivým chováním (hesla, konfigurace, binární soubory), můžete mít ve svém domovském adresáři data, která vyžadují stejný druh ochrany.
Princip nejmenšího privilegia říká, že byste neměli poskytovat více přístupu, než je nezbytně nutné. Rozhodovací proces pro spuštění jakéhokoli programu by měl být s ohledem na vaše soubory stejný jako na systémové soubory. Pokud byste v zájmu ochrany systému nedali část kódu, kterému nedůvěřujete, neomezené používání účtu superuživatele, nemělo by mu být v zájmu ochrany vašich dat poskytnuto neomezené používání vašeho účtu.
Neexistuje způsob, jak zabránit výskytu škodlivého kódu v $HOME? A proč to nikoho nezajímá?
Unix nenabízí tak podrobná oprávnění ze stejného důvodu, že kolem příkazu rm není ochrana čepele:oprávnění zde nejsou proto, aby chránila uživatele před nimi samými.
Způsob, jak zabránit škodlivému kódu v poškození souborů ve vašem domovském adresáři, je nespouštět jej pomocí vašeho účtu. Vytvořte samostatného uživatele, který nemá žádná zvláštní oprávnění, a spouštějte kód pod tímto UID, dokud nezjistíte, zda mu můžete důvěřovat.
Existují i jiné způsoby, jak toho dosáhnout, například chrootovaná vězení, ale jejich nastavení vyžaduje více práce a uniknout z nich už není taková výzva jako kdysi.
Protože model zabezpečení založený na systému UNIX je 50 let starý.
UNIX je základem nejrozšířenějších OS a dokonce i velká výjimka Windows jím byla ovlivněna více, než je zřejmé. Pochází z doby, kdy počítače byly velké, drahé a pomalé stroje, které používali výhradně tajemní specialisté.
V té době uživatelé jednoduše neměli na žádném rozsáhlé shromažďování osobních údajů počítač, ne jejich univerzitní server, ne jejich osobní počítač (a už vůbec ne jejich mobilní telefon). Data, která se lišila od uživatele k uživateli, byla typicky vstupní a výstupní data vědeckých výpočetních procesů – jejich ztráta by mohla představovat ztrátu, ale do značné míry ztrátu, kterou by bylo možné kompenzovat jejich přepočítáním, rozhodně nic jako důsledky dnešních úniků dat.
Nikdo by neměl jejich deník, bankovní údaje nebo nahé fotky v počítači, takže je chraňte před škodlivým přístupem nebylo něco, co by mělo vysokou prioritu – ve skutečnosti by většina vysokoškoláků v 70. letech pravděpodobně byla nadšená pokud ostatní projevili zájem o jejich výzkumná data. Proto bylo zabránění ztrátě dat považováno za nejvyšší prioritu v počítačové bezpečnosti, a to je adekvátně zajištěno pravidelným zálohováním spíše než kontrolou přístupu.
To je velmi bystrý postřeh. Ano, malware spuštěný jako váš uživatel může poškodit/zničit/upravit data ve vašem domovském adresáři. Ano, oddělení uživatelů na systémech s jedním uživatelem je méně užitečné než na serverech. Stále však existují některé věci, které může dělat pouze uživatel root (nebo jeho ekvivalent):
- Nainstalujte do jádra rootkit.
- Upravte zavaděč tak, aby obsahoval časná zadní vrátka pro zachování.
- Vymažte všechny bloky pevného disku, čímž se vaše data stanou nenapravitelnými.
Upřímně řečeno, oddělení oprávnění na pracovních stanicích považuji za nejužitečnější k ochraně pracovní stanice před jejím největším nepřítelem:mnou. Je pro mě těžší podělat a rozbít můj systém.
Kromě toho můžete vždy nastavit úlohu cron jako root, která vytvoří zálohu vašeho domovského adresáře (např. rsnapshot
) a uloží jej tak, aby do něj váš uživatel nemohl zapisovat. To by byla určitá úroveň ochrany v situaci, kterou popisujete.
Povinné xkcd