GNU/Linux >> Znalost Linux >  >> Linux

Proč se pro některé aplikace doporučuje vytvořit skupinu a uživatele?

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).
Související:Najít n nejčastějších slov v souboru se seznamem zastavovacích slov z příkazového řádku?
Linux
  1. Jak zabalit aplikace Python pro Linux

  2. Jak vytvořit a odstranit uživatelskou skupinu v Linuxu

  3. Jak na MySQL:Vytvořte uživatele a udělte oprávnění k databázi

  1. Proč Linux? – Některé důvody pro převod na Linux

  2. Vytvořit soubor jako jiný uživatel a skupina?

  3. Vytvoření uživatele a skupiny „thesql“, nastavení vlastnictví?

  1. Priorita uživatele a vlastníka skupiny v oprávněních k souboru?

  2. Vytvořte a odeberte uživatele CentOS

  3. Vytvářejte a upravujte uživatele v MySQL