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 :)
- 5774 megtekintés
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?
- A hozzászóláshoz be kell jelentkezni
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. ;)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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... :( )
- A hozzászóláshoz be kell jelentkezni
ezt megnézem mindjárt, köszi
- A hozzászóláshoz be kell jelentkezni
Visszatérve a linuxos részhez, ilyet ne csinálj:
#!/bin/bash
adduser $1
:)
(nem tudom, ha pl. idézőjelek közé teszed a $1-t, az elégséges védelem-e ilyen esetben)
- A hozzászóláshoz be kell jelentkezni
szerintem ez jobb megoldás lenne, a user neveket én generálom úgyis:
if [[ $1 =~ ^[a-z0-9]$ ]]; then
adduser $1
fi
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
na most jutottam el addig hogy megnézzem, hát sajnos fogalmam sincs hogy egyáltalán jól csináltam-e amit, de nem találtam erre vonatkozó lehetőséget
- A hozzászóláshoz be kell jelentkezni
bump?:(
- A hozzászóláshoz be kell jelentkezni
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-…
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
akkor pont amit egyik kommentemben írtam :) szerintem maradok én is ennél, mert hasonló módon megvalósítható windows alatt is
- A hozzászóláshoz be kell jelentkezni