Ve většině případů se při instalaci programu ze zdroje doporučuje vytvořit nového uživatele a novou skupinu a zadat /usr/local/<myapp>
nedávno vytvořeného uživatele a vlastnictví skupiny.
-
Proč je taková praxe považována za osvědčenou?
-
Co to zlepšuje?
Příklad:mysql user/mysql group pro databázový server MySQL.
Přijatá odpověď:
Praxí není vytvořit jednoho uživatele a skupinu na aplikaci, ale na službu. To znamená, že programy, které spouští místní uživatel, nemusí být instalovány jako uživatel jiný než root. Jsou to démoni, programy běžící na pozadí a provádějící požadavky přicházející přes síť nebo jiné komunikační prostředky, které by měly běžet jako vyhrazený uživatel.
Démon běží jako vyhrazený uživatel, takže pokud se špatně chová (kvůli chybě, pravděpodobně vyvolané útočníkem), škoda, kterou může způsobit, je omezená:ovlivněny jsou pouze datové soubory démona (pokud se útočníkovi nepodařilo najít místní kořenovou díru , což se může stát). Například databázový démon mysqld
běží jako vyhrazený uživatel a skupina mysql:mysql
a datové soubory databáze (/var/lib/mysql/*
) patří do mysql:mysql
.
Všimněte si, že spustitelný soubor démona a další statická data a konfigurační soubory, které jsou používány, ale neměly by být démonem upravovány, nesmí patřit vyhrazenému uživateli; měly by být vlastněny root:root
, jako většina programových a konfiguračních souborů. mysqld
proces nemá žádné obchodní přepsání /usr/sbin/mysqld
nebo /etc/mysql/my.cnf
, takže tyto soubory nesmí patřit do mysql
uživatel nebo zapisovatelný pomocí mysql
uživatele nebo mysql
skupina. Pokud některé soubory musí být čitelné pouze pro démona a správce, měly by být vlastněny rootem uživatele a vyhrazenou skupinou a měly by mít režim 0640 (rw-r-----
).
Speciální kategorie spustitelných souborů, které nemůže vlastnit root:root
jsou programy, které jsou vyvolány uživatelem, ale musí běžet s dalšími oprávněními. Tyto spustitelné soubory musí být setuid root, pokud potřebují běžet (alespoň částečně) jako root; pak musí mít spustitelný soubor režim 4755 (rwsr-xr-x
). Pokud program potřebuje extra oprávnění, ale ne jako root, pak by měl být program nastaven na setgid, aby extra oprávnění přicházela přes skupinu a ne přes uživatele. Spustitelný soubor má pak režim 2755 (rwxr-sr-x
). Důvody jsou dva:
- Spustitelnému souboru by nemělo být povoleno se sám upravovat, takže pokud se uživateli podaří zneužít zranitelnost, mohl by být schopen upravit datové soubory používané programem, ale nevpustit do spustitelného souboru trojského koně, aby napadl ostatní uživatele. spuštění programu.
- Datový soubor spustitelného souboru patří do skupiny. Setuid program by musel přepínat mezi skutečným uživatelem (uživatelem, který program vyvolal), aby mohl interagovat s uživatelem, a efektivním uživatelem (uživatelem, pod kterým program běží), aby získal přístup ke svým soukromým datovým souborům (důvod toho mít extra privilegia). Program setgid může dále oddělit data jednotlivých uživatelů, která jsou přístupná pouze skupině (např. ukládáním souborů vlastněných uživatelem do adresáře, který je přístupný pouze rootovi a skupině programu).