Хост-сервер: 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...