Назад | Перейти на главную страницу

В разрешении отказано: fusefs внутри тюрьмы freebsd (freenas)

Хост-сервер: FreeNAS-9.10 (FreeBSD 10.3-STABLE)

Я установил тюрьму для целей резервного копирования, смонтировав файловые системы хоста FreeNAS, подлежащие резервному копированию, внутри тюрьмы.

Резервное копирование с помощью borgbackup на удаленный сервер работает.

Я как root и непривилегированный пользователь в тюрьме НЕ МОГУ:

(1) смонтируйте удаленную файловую систему через sshfs:

$ sshfs remote_user@remote_host:remote_dir /mnt/restore

(2) смонтируйте архив с помощью borg mount:

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

Оба (1) и (2) терпят неудачу с:

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

Даже если / mnt / restore принадлежит пользователю, выполняющему команды

Дополнительная информация:

$ 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

Буду признателен за любые предложения по решению этой проблемы. Сообщите мне, если не хватает каких-либо подробностей для диагностики. Спасибо.

Короткий ответ: нет, sshfs нельзя монтировать в тюрьме. SSHFS основан на FuseFS, а FuseFS не является дружественной к тюрьме файловой системой. пожалуйста читать ниже со страницы руководства команды jail.

Невозможно смонтировать (8) или umount (8) любую файловую систему внутри тюрьмы, если файловая система не помечена как дружественная к тюрьме, параметр allow.mount тюрьмы установлен, а параметр enforce_statfs меньше 2.

Вы можете проверить флаги файловой системы с помощью lsvfs команда. Команда выводит на 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

Как видите, у fusefs нет флага тюрьмы. Итак, freebsd не предполагает, что fusefs является файловой системой, дружественной к тюрьме.

В этом случае единственный способ - смонтировать конечную точку sshfs на хост-машину, а не в тюрьму. В вашем случае это не рекомендуется для FreeNAS. Может быть, вы могли бы рассмотреть варианты VM или Docker. (для FreeNAS Corral или FreeNAS 11).

Если вы хотите смонтировать другие файловые системы, дружественные к тюрьме, вам необходимо добавить следующие sysctl в параметры тюрьмы и добавить security.jail.enforce_statfs=1 или security.jail.enforce_statfs=0 в глобальные sysctls.

allow.mount=true,allow.mount.nullfs=true,allow.mount...