Hat jemand versucht, kbfs mit incrond zu überwachen?

593
Diagon

Ich kann zwar laufen unison -batch keybaseund alles funktioniert gut, aber ich habe es im Inkron- Tab versucht :

/run/user/1000/keybase/kbfs/ IN_ALL_EVENTS flock -n /tmp/synclock unison -batch keybase 

mit dem Syslog-Ergebnis:

Nov 24 03:53:05 ThinkPad incrond[5820]: access denied on /run/user/1000/keybase/kbfs/ - events will be discarded silently Nov 24 03:53:05 ThinkPad incrond[5820]: cannot create watch for user me: (13) Permission denied 

incrond läuft als root und "unconfined", wobei ich davon ausgehe, dass es sich auf selinux (?) bezieht.

$ ps -eo euser,ruser,suser,fuser,f,comm,label | grep incron root root root root 5 incrond unconfined 

Irgendwelche Gedanken darüber, was los sein könnte?

-1
Einige Leute versuchen, dieses oder ein paralleles Problem zu lösen, zum Beispiel [hier] (https://github.com/keybase/kbfs/issues/1592). Ich denke nicht, dass das Downvote angemessen ist. Meine eigene Antwort zeigt, dass es keine einfache Antwort gibt. Diagon vor 5 Jahren 0

1 Antwort auf die Frage

0
Diagon

Es stellt sich heraus, dass / run / user / 1000 / keybase / kbfs / ein FUSE-Dateisystem ist, das ohne die Option "allow_root" gemountet ist. Es kann also nur über den Benutzer aufgerufen werden, der den FS gemountet hat. Durch Hinzufügen von "allow_root" zu /etc/fuse.conf wird das Problem nicht gelöst, da der kbfs-Code diese Option nicht durchläuft. Dazu müssen Sie den Code bearbeiten und neu kompilieren.

Es stellt sich auch heraus, dass selbst wenn kbfs root-Zugriff erlaubt hat - und inkrementieren oder inotify - root-Zugriff benötigen, FUSE außerdem keine Möglichkeit hat, Dateisystemereignisse zu melden. Obwohl es anscheinend möglich wäre, haben die Entwickler es als "nicht repariert" bezeichnet . Das bedeutet , dass das Ausführen von keybase als root das Problem auch nicht löst.

Meine Lösung ist, einfach einen Cron-Job auszuführen, der alle 60 Sekunden die Verzeichnisse synchronisiert. Es gibt eine Datei in / keybase, die immer vorhanden ist, auch wenn sie nicht unter ls: /keybase/kbfs.error.txt angezeigt wird. Der Inhalt davon kann verwendet werden, um festzustellen, ob kbfs eingehängt ist. In diesem Fall kann ein Stapeljob ausgeführt werden, um die Verzeichnisse mithilfe von unison zu synchronisieren.