Portál AbcLinuxu, 12. května 2025 23:46

Dotaz: C wrapper + SUID

28.11.2008 10:36 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
C wrapper + SUID
Přečteno: 416×
Odpovědět | Admin

Protože na PC pracuju sám, tak jsem se rozhodnul, že nebudu používat sudo, ale vyřeším nejčastěji používané aplikace jako halt(poweroff a reboot) suid bitem-používám IceWM. Pro uspávání používám hibernate skript a protože u bash skriptů nefunguje SUID bit, tak jsem si napsal v Cecku maly exec wrapper, kterému jsem přiřadil ten SUID bit. Jenomže v tady to nějak nefunguje.

I když nastavím tomu wrapperu vlastníka root a ten SUID bit, tak se mi to pořád nespouští pod rootem. Jde nějak nastavit, aby se mi ten wrapper spouštěl pod rootem přes ?

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

Odpovědi

28.11.2008 12:57 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: C wrapper + SUID
Odpovědět | | Sbalit | Link | Blokovat | Admin

Není oddíl, na kterém je ten wrapper v C, namountovaný jako nosuid?

28.11.2008 14:55 qvaq
Rozbalit Rozbalit vše Re: C wrapper + SUID
Odpovědět | | Sbalit | Link | Blokovat | Admin

a pod rootem se nespousti ten wrapper, nebo to co ma wrapper nasledne spoustet? nejlepsi by bylo dat sem ten wrapper, kdysi jsem delal totez a melo to tak 10 radek.

28.11.2008 15:32 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: C wrapper + SUID
Tak vypadá ten wrapper:
#include <unistd.h>

int main(void) {
        execlp("/usr/sbin/hibernate","/usr/sbin/hibernate","-F /etc/hibernate/ram.conf",NULL);
}
Jako vlastníka jsem mu nastavil roota a přiřadil suid bit:
-rwsr-sr-x 1 root root 6887 Nov 28 15:24 hmem
A když ho spustím jako normální uživatel, tak se mi ten hibernate skript zastaví na hlášce:
hibernate: You need to run this script as root.
28.11.2008 16:00 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: C wrapper + SUID
Pokud poustite skripty v bash, tak vas bash zadarmo zbavi zvysenych prav. Je to takova ochrana proti lidem kteri pisou takoveto wrappery :)

Bash to pozna tak, ze mate uid uzivatele ale euid 0, pokud ho chcete oblafnout musite pouzit volani setuid a setgid, abyste mel uid=euid a gid=egid.

Ale takoveto hratky s setuid obvykle konci prusvihem. Existuje nekolik zpusobu jak takovy "wrapper" prostrelit k ziskani prav roota. Bud ten wrapper napiste tak, aby bylo zrejme ze vite co delate a nebo zkuste to sudo, ktere si proslo nekolik let vyvoje a auditu.
In Ada the typical infinite loop would normally be terminated by detonation.
28.11.2008 17:06 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: C wrapper + SUID
Super, zabralo to ;) Stačilo přidat na začátek:
setuid(0);
setgid(0);
a už to funguje ;)

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.