Portál AbcLinuxu, 6. května 2024 16:18


Dotaz: jak uživatelem spustit program pro roota

5.5.2003 20:52 Filip Hesse | skóre: 20
jak uživatelem spustit program pro roota
Přečteno: 263×
Odpovědět | Admin

Chtěl bych, aby běžný uživatel měl právo spustit webmin nebo sshd bez toho, abych mu dal práva k těmto programům.

Myslel jsem, že napíšu skript, na který nastavím chmod 4755. Uživatel ho tedy spustí, ale nemůže změnit žádný parametr.

Takhle to ale nefunguje. Poraďte prosím něco. A ta myšlenka se skriptem se mi líbí, jestli to jde, tak tímhle směrem. Předem díky.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.5.2003 23:01 Ondra 'Kepi' Kudlík | skóre: 29 | Brno
Rozbalit Rozbalit vše jak uživatelem spustit program pro roota
Odpovědět | | Sbalit | Link | Blokovat | Admin
ssh démon můžete nechat běžet stále, není přece třeba, aby ho spouštěl normální uživatel. Jinak v něčem by vám mohlo pomoci sudo, v něčem nastavení SetUID bitu, ale ani jedno není příliš bezpečné...
6.5.2003 10:38 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše jak uživatelem spustit program pro roota
sshd se může taky pouštět z [x]inetd (tj. jen když je třeba), i když je to pakárna, protože si musí při každém spuštění vygenerovat klíč, než může odpovědět na požadavek... a pokud se autentizuješ passphrase a ne heslem, nemusí sshd bežet jako root, každý luser si může pustit svého sshd na nějakém vysokém portu...
6.5.2003 10:00 rat
Rozbalit Rozbalit vše jak uživatelem spustit program pro roota
Odpovědět | | Sbalit | Link | Blokovat | Admin
z bezpecnostnich duvodu nemuze mit shellovy skript nastavene SUID. pomuze jednoduchy wrapper v C, ktery ten skript spusti. v tomto pripade se mi to nezda jako prilis dobry napad, ale kdo chce kam...
9.5.2003 00:06 Ľubomír Host | skóre: 19 | Bratislava
Rozbalit Rozbalit vše jak uživatelem spustit program pro roota
problem resp. jedna z bezpecnostnych ficurii je ta, ze ak bash (resp. aj iny shell) zisti, ze bezi so suid bitom (to sa da zistit porovnanom UID a EUID, kt. su v pripade suidntej binarky rozdielne), tak proste nastavi hodnotu EUID na UID, takze sa z neho zase stane proces bez zvysenych (rootovskych) prav. Viem, ze aspon kedyzi shell 'ash' v sebe tuto ochranu nemal, co povazujem za bezpecnostnu dieru. Ano, pouzit C wrapper je mozne, ale vzdy je lepsie pouzit sudo. Ma to pre zaciatocnika trosku krkolomnu syntax, ale stoji to za to naucit sa to. kto chce kam, pomozme mu tam. ;)
6.5.2003 10:11 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše jak uživatelem spustit program pro roota
Odpovědět | | Sbalit | Link | Blokovat | Admin
webmin je taky server a běžet má pořád nebo z [x]inetd nebo může i fungovat pod apachem; uživatel ho zkrátka nemá co pouštět. pokud chceš, aby se pustil, když je třeba, pouštěj ho z [x]inetd jinak nechci být hrubý, ale pokud chceš psát jakési skripty a chmodovat je na 7755, tak raději rovnou zavěs rootovo heslo někde na webu, myslím, že to vyjde na stejno, a je s tím míň práce ;)
6.5.2003 10:59 Filip Hesse | skóre: 20
Rozbalit Rozbalit vše jak uživatelem spustit program pro roota
Odpovědět | | Sbalit | Link | Blokovat | Admin

Jestli pouštět SSHd, ještě promyslím. Ale vraťme se ke skriptu. Když uživatel nebude smět skript ani přečíst, natož změnit, co je nebezpečného že spustí přesně to, co jsem mu připravil.

A s právama, myslel jsem, že se dědí. Co pustí uživatel, to dostane pouze jeho práva. A když tomu skriptu nastavím chmod 4755, proč to nedědí práva roota? Jestli to půjde jenom přes Cčko, tak budu zkoušet tamtudy.

Jinak díky za názory.

6.5.2003 11:17 rat
Rozbalit Rozbalit vše jak uživatelem spustit program pro roota
skript je interpretovany, tzn. nelze zarucit cim se vlastne bude "spoustet" - proto se jeho SUID prava neprojevi. jiste by to mohlo byt udelane i jinak, ale neni - skript sam o sobe neni v pravem smyslu spustitelny program.
takze program v C s nastavenym SUID spusti rekneme bash s parametrem jmeno skriptu a je to - pozor na parametry toho programu, idealne by nemel mit zadne, jinak je treba dat pozor na vselijaka preteceni apod.
10.5.2003 22:35 Ľubomír Host | skóre: 19 | Bratislava
Rozbalit Rozbalit vše jak uživatelem spustit program pro roota
Mne sa vas dovod, ze preco sa neprejavi SUID bit v shellovskych skriptoch nepozdava. Podla mna je vtip prave v tom, ze v zdrojakoch shellu (napr. bash) je zabudovana ochrana, ktora sposobi odstranenie zvysenych prav. Je tam na to spravena jedna taka funkcia, ktora povie, ci to suidnute bezi, alebo to bezi normalne. Toto mam z vlastnej skusenosti, ked som si chcel suidnut shllovsky skript a neslo mi to. Po prekompilovani shellu s vypnutim tejto ochrany (stacilo pokusne na zaciatok tej funkcie hodit return(0); alebo return(1);) uz suidnut shellovsky skript slo. No a urcite kazdy vie, ze suidnutie funguje nasledovne: proces ma 2 dvojice UID (user) a GID (group), s ktorymi bezi: efektivne UID efektivne GID realne UID realne GID pri spusteni normalne binarky eUID = rUID, eGID = rGID pri suidnuti je hodnota eUID UID vlastnika suidnuteho suboru, rUID je hodnota vlastnika procesu. Takze eUID != rUID a na zaklade toho mozno zistit to suidnutie procesu Pristupove prava v systeme sa posudzuju prave na zaklade eUID a eGID, takze preto sa pri suidnutej binarke javi to, ze bezi "pod rootom". Su moje dovody (az na nejake malicke detaily) spravne?
6.5.2003 11:30 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše jak uživatelem spustit program pro roota
pokud potřebuješ, aby uživatel mohl provést nějakou omezenou akci s většími priviliegii, zkus sudo -- řekl bych, že je s ním u začátečníka menší pravděpodobnost, že si udělá v systému díru jak vrata od stodoly, než když bude cosi kutit ručně. ale popravdě řečeno si stále myslím, že řešíš špatný problém, a že předně nic takového nepotřebuješ
6.5.2003 12:05 Filip Hesse | skóre: 20
Rozbalit Rozbalit vše jak uživatelem spustit program pro roota

V praxi to nepoběží, jenom se to učím, zkouším možnosti. Třeba bych později chtěl zakázat zařízení, kam ukazuje link /dev/modem a uživatel by směl pustit pouze skript pppstart, který tam právo mít bude. A uživatel nebude smět ani jiným programem vytáčet jiné tel. číslo.

Ale než pochopím zařízení v /dev/ a než pochopím pppd, zkouším se naučit práva spouštět u něčeho co už mi jde.

Díky za všechny reakce.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.