sshfs EPERM

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
laotse
Beiträge: 35
Registriert: 01.03.2009 02:08:58

sshfs EPERM

Beitrag von laotse » 13.11.2013 23:05:21

Es gibt im Netz zwar hunderte von gelösten Threads zu dem Thema, aber entweder kann ich nicht lesen, oder es ist etwas anderes hier.

Symptom:

Code: Alles auswählen

sshfs user@server.fqdn:/ ~/mnt
fusermount: mount failed: Operation not permitted
Der user gehört zur Gruppe fuse, /bin/fusermount ist root:fuse 04754, das fuse Kernel-Modul ist geladen. Spannend ist dann der strace:

Code: Alles auswählen

25682 execve("/bin/fusermount", ["fusermount", "-o", "rw,nosuid,nodev,fsname=user@"..., "--", "/path/to/mnt"], [/* 40 vars */]) = 0
# viele Zeilen ausgelassen
25682 geteuid()                         = 1001
# viele Zeilen ausgelassen
25682 getgid()                          = 1001
25682 getuid()                          = 1001
25682 open(".", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 7
25682 getdents(7, /* 2 entries */, 32768) = 48
25682 getdents(7, /* 0 entries */, 32768) = 0
25682 close(7)                          = 0
25682 mount("user@server.fqdn:/", ".", "fuse", MS_NOSUID|MS_NODEV, "fd=4,rootmode=40000,user_id=1001"...) = -1 EPERM (Operation not permitted)
25682 write(2, "fusermount: mount failed: Operat"..., 50) = 50
Sollte geteuid() nicht 0 ergeben?
Als root funktioniert das Ganze. Hat jemand eine Idee, was man noch prüfen sollte?

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: sshfs EPERM

Beitrag von cosmac » 14.11.2013 12:48:32

hi,
geteuid() returns the effective user ID of the calling process.
also passt 1001 ganz gut.

Meine Vermutung für den eigentlichen Fehler: Du versuchst das root-Verzeichnis von "server" als normaler User zu mounten, und zwar read/write. Das darf nicht so einfach möglich sein, höchstens mit einem seltsamen fuse-internen Trick.
Beware of programmers who carry screwdrivers.

laotse
Beiträge: 35
Registriert: 01.03.2009 02:08:58

Re: sshfs EPERM

Beitrag von laotse » 14.11.2013 20:39:45

Danke für diese Idee:
Du versuchst das root-Verzeichnis von "server" als normaler User zu mounten, und zwar read/write.
Aber abgesehen davon, dass die vergessene Tilde später vielleicht wirklich noch zuschlagen könnte, passiert der EPERM noch bevor der login auf dem Server passiert, d.h. es wird noch nicht nach dem ssh Passwort gefragt. Zugriffsrechte von "user" auf "server" sollten also noch gar keine Rolle spielen können.

Wenn fusermount root:fuse 04754 ist, läuft der Prozess dann nicht mit euid root? :?

Antworten