Embora eu possa executar unison -batch keybase
e tudo funcione bem, tentei isso na guia incron :
/run/user/1000/keybase/kbfs/ IN_ALL_EVENTS flock -n /tmp/synclock unison -batch keybase
com o resultado do syslog:
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 está sendo executado como root e "não confinado", que eu presumo estar relacionado ao selinux (?)
$ ps -eo euser,ruser,suser,fuser,f,comm,label | grep incron
root root root root 5 incrond unconfined
Alguma idéia do que pode estar acontecendo?
Respostas:
Acontece que / run / user / 1000 / keybase / kbfs / é um sistema de arquivos FUSE montado sem a opção "allow_root", portanto, é acessível apenas pelo usuário que montou o FS. Adicionar "allow_root" ao /etc/fuse.conf não resolve o problema, pois o código kbfs não passa por essa opção. Para fazer isso, você deve editar o código e recompilar.
Também acontece que, mesmo que os kbfs permitam acesso root - e o incron ou inotify precisem de acesso root -, o FUSE também não tem como relatar eventos do sistema de arquivos. Embora aparentemente seja possível , os desenvolvedores o rotularam como "não corrigido" . Isso significa que executar o keybase como root também não resolverá o problema.
Minha solução é apenas executar um trabalho cron que sincronize os diretórios a cada 60 segundos. Há um arquivo em / keybase que está sempre presente, mesmo que não seja exibido em
ls
: /keybase/kbfs.error.txt. O conteúdo disso pode ser usado para identificar se o kbfs está montado. Nesse caso, um trabalho em lotes pode ser executado para sincronizar os diretórios usando uníssono.fonte