-1

Хотя я могу запустить unison -batch keybase и все работает нормально, я попробовал это на вкладке incron :

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

с результатом системного журнала:

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 работает от имени root и "не ограничен", что, как я полагаю, относится к selinux (?)

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

Есть мысли о том, что может происходить?

1 ответ1

0

Оказывается, что /run /user / 1000 / keybase / kbfs / - это файловая система FUSE, которая монтируется без опции "allow_root", поэтому она доступна только через пользователя, который смонтировал FS. Добавление "allow_root" в /etc/fuse.conf не решает проблему, так как код kbfs не проходит через эту опцию. Для этого вам нужно отредактировать код и перекомпилировать.

Также оказывается, что даже если kbfs разрешил доступ с правами root - а incron или inotify действительно нуждаются в доступе с правами root - FUSE также не имеет возможности сообщать о событиях файловой системы. Хотя это, по-видимому, было бы возможно, разработчики пометили его как «не исправить». Это означает, что запуск базы ключей в качестве пользователя root также не решит проблему.

Мое решение состоит в том, чтобы просто запустить задание cron, которое синхронизирует каталоги каждые 60 секунд. В /keybase есть файл, который всегда присутствует, даже если он не отображается в ls: /keybase/kbfs.error.txt. Содержимое этого может использоваться, чтобы определить, смонтирован ли kbfs. Если это так, можно запустить пакетное задание для синхронизации каталогов, используя unison.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .