Userek létrehozása programból, biztonságosan

Fórumok

Hali,

A feladatom egy control panelhez szerver app írása, amit semmiképp nem futtatnék rootként és nincs is rá igazán szükség. Ennek tudnia kéne létrehozni usereket a gépen. Erre két ötletem támadt:

1. adduser-hez sudoersen keresztül hozzáférés, bár ez így nem túl biztonságos mert akkor képes lenne root usert is létrehozni
2. egy root által chownolt program/bash script, ami csak egy user nevét kérné be paraméternek és csak erre az egy fájlra lenne futtatási joga a cp usernek

Az elkészített userek nevében kéne tudnia indítani programokat is a cp usernek, ez sudoersen keresztül szintén megoldható jelszó nélkül. A usereknek különösebb célja nincs, csak hogy egymás fájlait ne tudják módosítani, valójában még ha olvasni is tudnák egymás fájlait az se jelentene gondot, mert nem olyan fájlokról van szó, persze attól függetlenül semmilyen joguk nem lesz egymás fájlai felett.

Kérdésem az lenne, hogy van-e ezekre esetleg jobb megoldás?

Köszi előre is :)

Hozzászólások

illetve az is érdekes lenne, hogy ezt windowson hogyan lehetne megoldani? jelenlegi legjobb ötletem windows alatt egy administratorként futó process, amire egy named pipen keresztül tudna csatlakozni a másik alkalmazás. a named pipeból pedig letudom kérni a client pid-jét, pid-ből meg már megtudom, hogy melyik user futtatja, mondjuk jó lenne ha nem két teljesen különböző megoldással lenne megoldva a két platformon. linuxon azon gondolkoztam hogy a cp userként egy fifo-t létrehozok, ami úgy lenne chmodolva hogy más user azzal ne babrálhasson kivétel a root, vélemények?

Linux/unix környezetben az első pontot te magad lőtted ki (jogosan) :)
A második, ha kellő óvatossággal tudod kezelni az inputot (nem kerülhet a paraméterek közé még véletlenül sem, hogy pl. uid 0-val vegye fel a usert), akkor talán elfogadható megoldás lehet.
Windows-on érdemes lehet összeismerkedni a powershell-lel vagy egy windows adminnal. ;)

windowson nem találtam lehetőséget program futtatására administratorként úgy, hogy ne kérjen soha jelszót egy bizonyos usertől, neten is össze vissza okádék workaroundok vannak csak, de azok is legalább egyszer kérik az admin jelszót, vagy kicsit több jogot is adnak az adott usernek mint kéne. a named pipes megoldás viszont se passwordot nem kérne és más user se tudna játszani vele

Windows-ból 2k tanfolyamra jártam úgy 12-13 éve és sohasem használtam az ott leadott anyagot, szóval csak tipp: ha szerveren (min professional változat) akarsz ilyesmit csinálni, akkor _talán_ a group policy editor a barátod.
Sajnos nincs megfelelő windows-om, így nem tudok utánanézni, hogy valóban segít-e. :(
(kíváncsi vagyok, a sok nagytudású ilyenkor hol van, miért nem segít... :( )

Ez már olyan téma, hogy nem merek sem igent, sem nemet mondani. :)
Ért pár kínos, elméleti szintű meglepetés e téren
(mikor felvilágosítottak, hogy bizony hiába x védelem, ha y módon törhető amit összetákoltam)
Az idézőjeleket ettől függetlenül nem hanyagolnám.

a sudo tud ilyesmit, bar nem tul elegans, mert minden username hosszhoz kulon bejegyzes kell:

man sudoers -> wildcards

fero ALL = NOPASSWD: /usr/sbin/adduser [a-z0-9]
fero ALL = NOPASSWD: /usr/sbin/adduser [a-z0-9][a-z0-9]
fero ALL = NOPASSWD: /usr/sbin/adduser [a-z0-9][a-z0-9][a-z0-9]
...

windowshoz nem ertek, de gugli dobta ezt:
http://helpdeskgeek.com/free-tools-review/5-windows-alternatives-linux-…

Hasonló problémát úgy oldottam meg a live disztribúciómban, hogy írtam bash-ben egy root joggal állandóan futó daemon-t. Minden felhasználóhoz volt egy-egy named pipe - tehát FIFO -, amelybe csak az adott felhasználó tudott írni. A daemon pollingolja adott időközönként, pl. 2 s-onként a FIFO-kat, s amelyikben talál valamit, azt szintaktikailag ellenőrzi, s végrehajtja. Ide csak saját parancs kerülhet, értelemszerűen nem shell parancs, így nem lehet bármit futtatni, csak amit a daemon primitív "parancsértelmezője" megenged. Mivel a daemon root joggal fut, így végre tud hajtani dolgokat root joggal, amelyre a user megkéri, s amit ez a daemon helyesnek lát.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE