system("mount ...") funzt nicht mit suid



  • Wenn ich

    #include <stdlib.h>
    #include <stdio.h>
    #include <sys/mount.h>
    
    int main(){
            system("whoami");
            system("ls -l /root");
            system("mount /dev/sda1 /mnt");
    }
    

    kompiliere und die Binärdatei diese Rechte hat:

    -rwsr-xr-x 1 root root 6973 12. Apr 13:41 test
    

    dann erfolgt als user tester unter Debian 7.0 folgende Ausgabe:

    tester@testpc:~/tmp$ ./test
    root
    insgesamt 0
    mount: only root can do that
    tester@testpc:~/tmp$
    

    Wieso kann ich bei gesetztem suid nun als unpriviligierter Nutzer (tester) zwar den nur root leseerlaubten Inhalt aus /root einsehen, aber nicht mounten?



  • Das problem hatte ich auch mal system macht nur ne shell auf, du musst schon
    die dieser shell übergebenen Befehle per sudo aufrufen und die /etc/sudoers entsprechend konfigurieren.



  • Wenn das Setuid-Bit gesetzt ist, ist davon nur die effektive UID des gestarteten Prozesses betroffen. Die Reale UID ist immernoch die UID des startenden Nutzers. Diese beiden Eigenschaften werden an Kindprozesse vererbt.
    Irgendeines der beteiligten Programme (Shell, mount) wird jetzt die Rechte wieder droppen (also eUID auf rUID setzen).

    Helfen sollte also setuid(0) .


Anmelden zum Antworten