Permissão negada: fusefs dentro da cadeia freebsd (freenas)

1

Servidor host: FreeNAS-9.10 (FreeBSD 10.3-STABLE)

Instalei uma cadeia, para fins de backup, montando os sistemas de arquivos a serem salvos no host FreeNAS dentro da cadeia.

Fazer backup usando o borgbackup para o servidor remoto está funcionando.

Como usuário root e sem privilégios, dentro da cadeia, NÃO PODEM:

(1) monte o sistema de arquivos remoto em sshfs:

$ sshfs remote_user@remote_host:remote_dir /mnt/restore

(2) monte o arquivo usando a montagem borg:

$ borg mount \
    --show-rc \
    remote_user@remote_host:repo::archive /mnt/restore

Ambos (1) e (2) falham com:

mount_fusefs: /dev/fuse on /mnt/restore: Operation not permitted
fuse: failed to mount file system: No such file or directory

Mesmo com / mnt / restore sendo de propriedade do usuário executando os comandos

Mais informações:

$ ls -la /dev/fuse
crw-rw----  1 root  operator  0xc5 May 11 11:22 /dev/fuse

$ id backup
uid=1001(backup) gid=1001(backup) groups=1001(backup),5(operator)

$ kldstat | grep fuse
32  1 0xffffffff821c9000 de7a  fuse.ko 

$ sysctl -a | grep fuse
vfs.fuse.kernelabi_minor: 8
vfs.fuse.kernelabi_major: 7
vfs.fuse.reclaim_revoked: 0
vfs.fuse.lookup_cache_enable: 1
vfs.fuse.lookup_cache_misses: 0
vfs.fuse.lookup_cache_hits: 0
vfs.fuse.sync_unmount: 1
vfs.fuse.enforce_dev_perms: 0
vfs.fuse.init_backgrounded: 1
vfs.fuse.filehandle_count: 0
vfs.fuse.iov_credit: 16
vfs.fuse.iov_permanent_bufsize: 524288
vfs.fuse.ticket_count: 0
vfs.fuse.version: 0.4.4
vfs.fuse.fix_broken_io: 0
vfs.fuse.sync_resize: 1
vfs.fuse.refresh_size: 0
vfs.fuse.mmap_enable: 1
vfs.fuse.data_cache_invalidate: 0
vfs.fuse.data_cache_enable: 1
vfs.fuse.node_count: 0

$ sysctl vfs.usermount
vfs.usermount: 1

Gostaria de receber sugestões sobre como resolver isso. Deixe-me saber se algum detalhe está faltando para ajudar no diagnóstico. Obrigado.

    
por zoot 11.05.2017 / 14:33

1 resposta

2

Resposta curta é não, você não pode montar sshfs em uma prisão. O SSHFS é baseado no FuseFS e o FuseFS não é um sistema de arquivos amigável à prisão. Por favor leia abaixo da página man do comando da prisão.

It is not possible to mount(8) or umount(8) any file system inside a jail unless the file system is marked jail-friendly, the jail's allow.mount parameter is set, and the jail's enforce_statfs parameter is lower than 2.

Você pode verificar os sinalizadores do sistema de arquivos com o comando lsvfs . O comando sai como abaixo no FreeNAS.

root@freenas:~ # lsvfs
Filesystem                              Num  Refs  Flags
-------------------------------- ---------- -----  ---------------
nfs                              0x0000003a     0  network
msdosfs                          0x00000032     0  
nullfs                           0x00000029     1  loopback, jail
cd9660                           0x000000bd     0  read-only
procfs                           0x00000002     1  synthetic, jail
unionfs                          0x00000041     0  loopback
ufs                              0x00000035     0  
zfs                              0x000000de    11  jail, delegated-administration
devfs                            0x00000071     3  synthetic, jail
tmpfs                            0x00000087     3  jail
fdescfs                          0x00000059     1  synthetic, jail
fusefs                           0x000000ed     0  synthetic

Como você pode ver, o fusefs não tem um flag de cadeia. Portanto, o freebsd não supõe que o fusefs seja um sistema de arquivos amigável à prisão.

Nesse caso, a única maneira é montar o terminal do sshfs na máquina host, não uma cadeia. No seu caso, não é uma opção sugerida para o FreeNAS. Talvez você possa considerar opções de VM ou Docker. (para FreeNAS Corral ou FreeNAS 11).

Se você quiser montar outros sistemas de arquivos favoráveis a jail, você deve adicionar os seguintes sysctls às opções jail, e adicionar security.jail.enforce_statfs=1 ou security.jail.enforce_statfs=0 aos sysctls globais.

allow.mount=true,allow.mount.nullfs=true,allow.mount...
    
por 19.05.2017 / 20:26