Chápu správně, že tedy nejlepší až moc přehnaně dokonalé řešení navrhuje @Miroslav Šilhavý , zatímco uživatel @Filip Jirsák doporučuje standardní řešení, které je z hlediska bezpečnosti v pořádku a zcela běžné.
Běžné určitě není, protože ACL je něco, co nemusíte mít k dispozici, co není zajištěno, že bude za všech okolností a na všech systémech a na všech filesystémech fungovat. Stačí chybně provedené kopírování nebo přesunutí dat a máte po ACL.
Moje řešení je dalek jednodušší na správu - jednou nastavíte a můžete na to zapomenout. Kdyby došlo k nějaké chybě, výsledkem bude odepření přístupu (nikdo se k datům nedostane).
Filipovo řešení má problém v tom, že může nastat několik situací, kdy selže, a výsledkem nebude odepření přístupu, ale naopak to, že se k datům dostane i někdo cizí. Výsledkem také může být to, že se někomu podaří Vám podstrčit script nebo data, které spustíte pod uživatelem postgres a tím shodíte celý databázový server.
Založit uživatele, založit roli v postgresu = odhadem dvě minuty práce? Toto je celé, co potřebujete udělat:
adduser --disabled-password pgmaint
chown pgmaint:pgmaint /srv
chmod 0750 /srv
su - posgres -c "createuser -s -P pgmaint"
echo "localhost:*:*:pgmaint:<heslo>" > ~pgmaint/.pgpass
chown pgmaint:pgmaint ~pgmaint/.pgpass
chmod 0600 ~pgmaint/.pgpass
Uživatel pgmaint pak bude moci zakládat v postgresu role, zakládat databáze, rušit je, dělat dumpy, natahovat dumpy. Ale neohrozí samotný proces posgresu, neohrozí datové soubory postgresu.