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.
-
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 Programmmount("/dev/sdf1", "/media/usb0", "ext4", 0, "")
nicht. Wahrscheinlich, wegen der ganzen Argumente, die
mount.h fordert.
In der Shell darf der Benutzermount /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.
-
@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.
-
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...)