shell ami csak egy programot tud futtatni.

Fórumok

Sziasztok!

A kérdésem az lenne, hogy van-e, vagy létrehotható-e olyan shell, ami csak 1 programot enged futtatni a felhasználónak?

Köszi

Mac

Hozzászólások

A baj az, hogy ha egyet tud, akkor mindent lehet vele futtatni...

zsolt

Az scponly, rssh es tarsaik ilyet tudnak, meg kellene nezni, hogy azok hogy csinaljak. Masik megoldas, hogy chrootolsz, es a chrootban a shellen es a programon kivul nincs semmi (shell scripteket igy is fog tudni futtatni).

probald ki, hogy a felhasznalo .bashrc-jebe beleirod ezt:
/usr/bin/futtatando_program
exit

nem tul biztonsagos, nem tul szep, de mukodik
persze ha olyan a program, akkor abbol fog tudni inditani egy shell-t, aztan azt csinal amit akar...
de pl pine-t egesz jol lehet parameterezni, hogy mit engedjen csinalni, es mit ne, de pl lynx-ben eleg egy felkialtojelet nyomni, es ott van a shellben, es azt hiszem ezt mar nem lehet letiltani
a pine-bol meg lehet helpet kerni, aminek a vegen van egy link, amit meg lynx-el akar megnezni

javaslom en is a chroot-olt kornyezetet, akkor tenyleg csak azok futtathatok, amiket odamasoltal
meg patcheld meg a kernelt grsec patch-el, es akkor be tudod allitani, hogy melyik konyvtarbol engedjen futtatni programokat, es hogy ne tudjon kimaszni a chrootbol a juzer

Ha leírod, hogy pontosan mit is szeretnél csinálni, mire is kell a dolog, lehet hogy kitalálunk egy másfajta megoldást.
Mert ugye ott van az rbash, de nem biztos, hogy neked ez kell. Mert ezzel mondjuk csak a ~/bin-t betéve a PATH-be elintézhető, hogy csak azt tudja futtatni. Mivel aztán a PATH-et már nem tudja átírni, stb.

nem tudom milyen programot engednél futtatni neki, de én láttam olyan megoldást, hogy pl. adduser --shell /home/user/program user, ahol a program egy menüvel rendelkező shell script volt és így a user csak a menüpontok között választhatott

Szerintem ezt a problemat ne a shell, hanem inkabb az access controll iranybol kozelitsd meg, pl. RSBAC v. grsec (mar ha biztonsagot akarsz).

Ha olyasmire van szükség, ami a chroot-tal oldható meg. Viszont lehet, hogy olyan dolgoról van szó, amit csak grsec-el lehet megoldani. Nekem a megfogalmazásból nem jött le, hogy mit akar csinálni és miért.
Sőt a legegyszerűbb ha a shell maga a program ugye, de ez is csak bizonyos esetekben. Aztán itt van az általam korábban említett restricted shell.
Szóval eddig ott tartunk, hogy megoldást tudunk százat, csak a problémát nem ismerjük. :)

De az is lehet hogy a háttérben (magyarul: background) történő programfuttatást szeretné letiltani.

offtopic, de Solaris-ban van ilyen jópofaság, hogy meg tudod mondani, hogy egy adott process még elindulhat de ő már nem fork()-olhat. Úgy hívják, hogy Privileges, RBAC-cal együtt szépen le tudsz korlátozni egy felhasználót. Bővebben itt:

http://docs.sun.com/app/docs/doc/816-4557/6maosrjfc?a=view

meg itt:
http://docs.sun.com/app/docs/doc/816-5175/6mbba7f30?a=view

Pl ezzel lehet azt is megcsinalni, hogy sima userkent futtatott apache tudjon 80-as porton futni es o meg tudjon inditani gyerekeket, de azok mar ne forkolhassanak. Jopofa dolgok ezek...

A probléma a következő. 1 spam és virusszűrő alkalmazással szétválogatom az userek leveletit. Ezt maildrop-pal végzem. Ahhoz viszont, hogy a spam és a vírusos levél egy karantén könyvtárba kerüljön, amit az user webmail segítségével megénz, ahhoz az usernek bash-t kell adnom, különben a maildrop nem nem tud lefutni. Mivel még más megoldást nem találtam, ezért gondoltam az 1 programos shell-re. De ha esetleg van más lehetőség, azt is szívesen meghallgatom.

Köszi

Mac

Ötletek:
-Webmail-nek saját jelszókezelés, usernek meg (/etc/shadow) olyan stringet adni a password mezőbe, ami bizonyosan nem lehet hash.

-A .bash_profile-ba menjen egy logout. Non-interaktív módon mehetnek a dolgai (.bashrc), interaktív shell esetén viszont a .bash_profile futtatásával azonnal ki is lép.

ssh user@gepnev "parancs"

igy asszem nem futnak le a .profile file-ok.. a last-ba sem kerul be a bejelentkezes emlekeim szerint.. (lehet, hogy meg kell vmi parameter, pl -T)
---------------------
"A feny azt hiszi, gyorsabb mindennel, de teved. Mindegy, milyen sebesen szaguld a feny, mindig azt fogja talalni a vegen, hogy a sotetseg ert oda elsonek, es ra var." - Terry Pratchett

Hmmm... ha a user úgysem lép be shell-el, akkor nem lenne egyszerű lockolni az accountját? Maildrop úgyis lefut...
Viszont ha csak a spam/virusszűrés miatt vannak külön shell userek, akkor lehet, hogy egyszerűbb lenne virtualuserekkel megoldani a dolgot. (mondjuk ez nagyobb meló, de akár még meg is érheti...)