Op files heet die het setuid bit

Squatt: waarom zou dat niet werken dan

Omdat setuid bits op scripts niet werken - zie onder.
Dat heeft weinig met bash te maken; het is de kernel die suid bits moet honoreren, en het is de kernel die dit voor scripts niet doet.
De reden hiervoor is dat scripts met suid bits van oudsher (vroeger kon het wel nml) wandelende security holes waren. Dat komt omdat de gebruikte interpreter (vooral shells) vaak met environment variabelen, argumenten of andere truukjes beinvloed konden worden (denk aan step mode, debug mode, dat soort dingen), waardoor je die shell (die dus als root draait) meer kon laten doen dan de bedoeling was. De effecten hangen natuurlijk wat van het script en de shell in kwestie af, maar een root shell krijgen was nogal eens mogelijk.
Bij mijn weten negeert elke moderne Unix setuid en setgid bits op scripts.
Oh, en sudo is doorgaans een goede oplossing (was al genoemd), en misschien is suidperl handig (daarmee kun je setuid perl scripts maken).
Verwijderd schreef op 05 februari 2003 @ 21:25:
Hoe kan je zorgen dat het script alleen door het juiste scipt kan worden geactiveerd? Want al zeg je dat de webserver dat die het scipt niet mag uitvoeren kan kan het niet worden uitgevoerd door een bezoeker van de website maar een andere user die de locatie en sourcecode van het scipt weet zou het alsnog kunnen aanroepen via een eigen scipt. Enige optie die dingen geheim houden? HTTP_REFERER Werkt niet neem ik aan (ik gebruik de exec functie van php om een php scipt los uit te voeren.
In ieder geval het script alleen uitvoerbaar/leesbaar maken voor de webserver. In het geval van sudo kun je sowieso opgeven dat alleen een bepaalde user het script als root mag uitvoeren.
Maar ik neem aan dat je bang bent voor misbruik vanuit apache/php? Misschien kun je naar suexec (oid?) voor apache kijken, daarmee kun je specificeren dat bepaalde php files als bepaalde users mogen worden uitgevoerd... Zo zou je de php file die het script aanroept zèlf dingen als root kunnen laten doen.
Ik heb alleen geen ervaring met apache/suexec, dus hoe het precies werkt, wat de mogelijkheden zijn en hoe veilig het exact is weet ik niet.