Este raz teda:
- system nema ziadnych sudo pouzivatelov
- existuje iba jeden pouzivatel, nazvime ho ssh-user, ktory sa moze sshnut do systemu, iba s klucom(tzn. nie heslo alebo ina forma autentifikacie)
- tento pouzivatel moze neobmedzene nahratvat subory do svojej home zlozky
- tento ssh-user by nemal mat moznost inak robit nic v systeme, okrem "su root", cize nemoze mutovat system alebo subory mimo svojej home zlozky, taktiez by nemal mat moznost vypisovat obsah zloziek mimo svojej home zlozky
jedinym ucelom tohto ssh-user pouzivatela je pristup do systemu, povedzme len do "predsiene" ale nie to celeho domu, a moznost nahrat do povolenej zlozky(/home/ssh-user) subory(sftp).
pre objasnenie, tieto subory su aplikacia + konfiguracne subory, ktora na serveri bezi ako hlavny ucel serveru. v pripade ze unikne ssh kluc von, utocnik sa dostane len do home zlozky tohto pouzivatela a nemoze robit nic co by ovplyvnilo system pretoze by musel bruteforcnut roota.
normalne by sa po nahrati suborov mal pouzivatel prehlasit na roota a ako root potom premiestnit nahrane subory, nova verzia aplikacie, na pozadovane miesto a vykona pozadovane ukony(restart sluby a podobne).
Pořád se to snažím pochopit, ale vlastně mi moc nedává smysl nepoužít sudo, polkit nebo doas, kde si můžu vcelku rozumně nakonfigurovat, co může daný uživatel spouštět. Hlavně na rozdíl od příkazu su pak se může vyžadovat heslo toho uživatele a ne roota.
Další věc co mě pak napadá. Je opravdu na správu té aplikace nějakým externím adminem potřeba kopírovat soubory přes scp, někam pak rozbalovat archivy a hrabat se v systému s nejvyššími právy?
Pro řešení aktualizací (resp. lifecycle a deploymentu) aplikací je spousta popsaných a ozkoušených řešení počínaje kontejnerizace s Kubernetes, přes hostování nějakého vlastního docker registry, spousty nějakých dalších relativně sofistikovaných orchestrací až po třeba po relativně jednoduchá řešení na bázi pevných aktualizačních skriptů.
Ty mi pak například můžou udělat pull z nějaké specifické větve git repozitáře, odkud se to také předtím otestovalo, zastavit služby, spustit připravené migrační skripty, znovu služby nahodit a zalogovat někam výsledek.
Celé tohle může být v jednom bash skriptu, který pak bude moct být spouštěný tím sudem pod jiným uživatelem.
Navíc se to výrazně zjednoduší, pokud byste dělal tenhle proces na víc než na jednom serveru - i když počítám minimálně testovací a produkční.