Portál AbcLinuxu, 12. května 2025 23:46
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 ?
Není oddíl, na kterém je ten wrapper v C, namountovaný jako nosuid?
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.
#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 hmemA 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.
setuid(0); setgid(0);a už to funguje ;)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.