Vyvinul jsem aplikaci, která používá NTP ke změně síťového času, k synchronizaci dvou mých počítačů.
Běží jako root
, protože pouze druhý jmenovaný může v Linuxu měnit čas a datum (myslím).
Nyní jej chci spustit jako uživatel. Ale musím mít přístup k času.
- Je dobrým postupem spouštět démona pod uživatelským účtem jiného uživatele než root?
- Dám své aplikaci schopnost? například
CAP_SYS_TIME
? - Nepředstavuje chybu zabezpečení?
- Existuje lepší způsob?
Přijatá odpověď:
Je dobrým zvykem spouštět démona pod uživatelským účtem jiného uživatele než root?
Ano, a to je běžné. Například Apache se spustí jako root a poté rozvětví nový proces jako www-data (ve výchozím nastavení).
Jak již bylo řečeno, pokud je váš program napaden hackery (např. vložení kódu), útočník nezíská root přístup, ale bude omezen na oprávnění, která jste tomuto konkrétnímu uživateli udělili.
Mám dát „Schopnost“ jako „CAP_SYS_TIME“?
Je to dobrý nápad, protože se vyhnete použití setuid a omezit oprávnění na tuto velmi specifickou funkci.
Mám k tomu použít jiný způsob, který by byl považován za „dobrý postup“?
Můžete zvýšit zabezpečení, například:
- Spusťte službu jako neprivilegovaný uživatel bez prostředí.
- Použijte chroot k uzamčení uživatele v jeho domovském adresáři.