Mount mit <sys/mount.h> als normaler User



  • Hallo!
    Wie kann ich mit <sys/mount.h> als normaler
    Benutzer mounten? Mein Programm soll nicht
    als root laufen.


  • Mod

    Der Rootuser muss die entsprechende Partition zuvor in der fstab als durch diesen Nutzer mountbar markieren.

    Theoretisch kann root einem User bestimmt auch einen allgemeinen Freifahrtsschein ausstellen, ich weiß bloß nicht auswendig, wie. Auf jeden Fall darf erst einmal nur root mounten und unmounten, dieses Privileg muss von root an andere Nutzer vergeben werden, bevor sie es nutzen können.



  • SeppJ schrieb:

    Theoretisch kann root einem User bestimmt auch einen allgemeinen Freifahrtsschein ausstellen, ich weiß bloß nicht auswendig, wie.

    setuid auf /bin/mount *duck und weg*



  • Ich habe folgenden Eintrag in der fstab:

    /dev/sdf1       /media/usb0     auto    rw,user,noauto  0       0
    

    Wenn ich als normaler User

    mount /media/usb0
    

    ausführe, funktioniert der Mount.
    Jedoch funktioniert es mit mount.h in meinem C Programm

    mount("/dev/sdf1", "/media/usb0", "ext4", 0, "")
    

    nicht. Wahrscheinlich, wegen der ganzen Argumente, die
    mount.h fordert.
    In der Shell darf der Benutzer

    mount /media/usb0
    

    ausführen, jedoch nicht

    mount /dev/sdf1 /media/usb0
    

    Dann muss ich mir wahrscheinlich mit einem Systemcall
    system() helfen, anstatt mount.h zu benutzen.



  • camper schrieb:

    SeppJ schrieb:

    Theoretisch kann root einem User bestimmt auch einen allgemeinen Freifahrtsschein ausstellen, ich weiß bloß nicht auswendig, wie.

    setuid auf /bin/mount *duck und weg*

    Ist es doch eh. Sonst würde SeppJ's Lösung nicht funktionieren.



  • SG1 schrieb:

    camper schrieb:

    SeppJ schrieb:

    Theoretisch kann root einem User bestimmt auch einen allgemeinen Freifahrtsschein ausstellen, ich weiß bloß nicht auswendig, wie.

    setuid auf /bin/mount *duck und weg*

    Ist es doch eh. Sonst würde SeppJ's Lösung nicht funktionieren.

    stimmt.


  • Mod

    @TE: Das ist jetzt ehrlich gesagt geraten, aber gibt doch mal einen Nullzeiger als erstes Argument an.

    Allgemein ist der erste Anlaufpunkt natürlich die Auswertung von errno. Was kommt denn heraus?



  • SeppJ, vergiss es. Um Dateisysteme zu mounten, braucht man root-Rechte. (Genauergesagt: CAP_SYS_ADMIN). Ohne geht's nicht. Mit Eintrag in der /etc/fstab geht's auch nur deshalb, weil /bin/mount setuid-root ist.


  • Mod

    SG1 schrieb:

    SeppJ, vergiss es. Um Dateisysteme zu mounten, braucht man root-Rechte. (Genauergesagt: CAP_SYS_ADMIN). Ohne geht's nicht. Mit Eintrag in der /etc/fstab geht's auch nur deshalb, weil /bin/mount setuid-root ist.

    Und? Das ist doch genau das, was der TE möchte.



  • SeppJ schrieb:

    Und? Das ist doch genau das, was der TE möchte.

    Aber er nutzt ja eben nicht /bin/mount, sondern den mount-Syscall. Sein Programm ist aber nicht suid root, also wird das so nichts, auch nicht mit Nullpointer als erstem Argument.

    Lösung: fork() && exec(/bin/mount...)


Anmelden zum Antworten