FreeNAS:以 root 身份填充数据集时出现权限问题 (cli)

FreeNAS:以 root 身份填充数据集时出现权限问题 (cli)

我正在设置一个家庭NAS,以此为契机来熟悉FreeNAS

我的规格
FreeNAS-11.3-U2
Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz。
16GB DDR3 内存。
操作系统:运行在 SSD ADATA SP600 250GB 上。

我的泳池:

  1. NAS01。 /mnt/NAS012x 2TB 镜像w/ 1 个备用空间(真正的备份/NAS 空间)。镜像的2个开发者是WDC WD2003FZEX;备用的是 ST2000DL003
  2. S500。 /mnt/S5001 个 500GB(划痕空间)。该磁盘是ST3500320AS 还有一个第6个1TDB磁盘等待使用...

我最初将另一台计算机上的约 80GB 数据备份到外部硬盘上的 zfs 数据集。后来才知道这样的盘是不能导入的。该数据集具有在原始计算机中创建的快照。

然后,我设法将数据集传输到 pool2 中,因为 S500/pre2012 安装在 /mnt/pre2012 上(老实说,现在不记得我是如何做到的,但必须通过 zpool 和 ifs 通过 cli)。

在某些时候,我使用 azfs send | recv将(我可以说复制吗?)S500/pre2012@snp1 传输到 NAS01/pre2012 下的 pool1 - 对我来说意外的是,它安装在 /mn/mnt/pre2012 下。

在测试并稍微熟悉 SMB 共享并检查我是否可以让它与我所有的 MAC 和 Linux 机器一起工作之后,我决定是时候根据我计划存储的内容和方式将池 1 (NAS01) 组织到不同的数据集中用它。我使用 GUI 创建了这些数据集。

结果是根数据集的以下结构(根据zfs list:

NAS01/PRIVATE 55.0G 1.62T 20.5G /mnt/NAS01/PRIVATE
NAS01/PRIVATE/Documents 573M 1.62T 573M /mnt/NAS01/PRIVATE/Documents
NAS01/PRIVATE/Fotos 33.9G 1.62T 33.9G /mnt/NAS01/PRIVATE/Fotos
NAS01/PUBLIC 16.9G 1.62T 96K /mnt/NAS01/PUBLIC
NAS01/PUBLIC/Library 57.6M 1.62T 57.6M /mnt/NAS01/PUBLIC/Library
NAS01/PUBLIC/Movies 15.5G 1.62T 15.5G /mnt/NAS01/PUBLIC/Movies
NAS01/PUBLIC/Music 1.05G 1.62T 1.05G /mnt/NAS01/PUBLIC/Music
NAS01/PUBLIC/Software 299M 1.62T 299M /mnt/NAS01/PUBLIC/Software
NAS01/pre2012 71.3G 1.62T 71.3G /mnt/mnt/pre2012
S500 268G 178G 136K /mnt/S500
S500/SharedScratch 196G 178G 196G /mnt/S500/SharedScratch
S500/pre2012 71.4G 178G 71.3G /mnt/pre2012

SharedScratch 在我的网络中的 SMB 下运行良好,而我仅使用来宾帐户访问权限和无人:无人所有权。但那是另一个故事了。

目前,S500/pre2012的结构(或者更确切地说,它的安装点)是:

/mnt//pre2012/120/30/home/
/mnt//pre2012/120/30/MatLab6.5/
/mnt//pre2012/120/80/home/
/mnt//pre2012/120/80/O/
/mnt//pre2012/120/80/usr/
/mnt//pre2012/250/48/home/
/mnt//pre2012/250/80win/

它还有其他文件夹,例如我设法mv(不是很痛苦)到 NAS01/PUBLIC/Music 的 Music。

S500/pre2012 下的所有这些文件夹均属于用户 拥有admin。这是我创建的唯一的附加用户。

我的问题似乎与权限问题有关,尽管我在发出如下命令时使用了 root 权限:

root@freenas[/mnt/S500/pre2012]#mv 120 /mnt/NAS01/PRIVATE/Documents
mv: chmod: /mnt/NAS01/PRIVATE/Documents/120/30/home/msantos/Reports/Apoptosis: Operation not permitted
mv: chmod: /mnt/NAS01/PRIVATE/Documents/120/30/home/msantos/Reports/.Designability.March.2005.tex.swp: Operation not permitted
mv: /mnt/NAS01/PRIVATE/Documents/120/30/home/msantos/Reports/NMR: File exists
mv: /bin/cp 120 /mnt/NAS01/PRIVATE/Documents/120: terminated with 1 (non-zero) status

文件夹的权限是:

root@freenas[/mnt/S500/pre2012/120]# ll ; ll /mnt/NAS01/PRIVATE/Documents/120
total 26
drwxr-x---+ 4 admin admin uarch 4 Sep 22 21:03 ./
drwxr-x---+ 4 admin admin uarch 4 Sep 22 21:03 ../
drwxr-x---+ 3 admin admin uarch 3 Sep 22 21:14 30/
drwxr-x---+ 5 admin admin uarch 5 Sep 14 15:56 80/
total 2
drwxrwx---+ 3 root admin uarch 3 Sep 22 21:57 ./
drwxrwx---+ 3 admin admin uarch 4 Sep 22 21:57 ../
drwxrwx---+ 3 root admin uarch 3 Sep 22 21:57 30/

正如您所看到的,该举动未能复制所有内容,尽管它确实复制了一些内容!更令人担忧的是,这是一个举动!

这里有一些目标文件夹的权限:

root@freenas[~]# ls -lF /mnt/NAS01
total 9
drwxr-xr-x+ 5 admin admin 6 Sep 22 19:16 PRIVATE/
drwxrwx---+ 6 root wheel 6 Sep 22 15:30 PUBLIC/

root@freenas[~]# ls -lFd /mnt/NAS01/*/*
drwxrwx---+ 3 admin admin 4 Sep 22 21:57 /mnt/NAS01/PRIVATE/Documents/
drwxrwx---+ 15 admin admin 19 Sep 22 20:37 /mnt/NAS01/PRIVATE/Fotos/
drwxrwx---+ 2 nobody admin 4 Sep 22 21:03 /mnt/NAS01/PUBLIC/Library/
drwxrwx---+ 5 nobody admin 38 Sep 22 20:13 /mnt/NAS01/PUBLIC/Movies/
drwxrwx---+ 17 nobody admin 36 Sep 22 20:41 /mnt/NAS01/PUBLIC/Music/
drwxrwx---+ 9 nobody admin 9 Sep 22 21:09 /mnt/NAS01/PUBLIC/Software/

所有这些 PRIVATE 和 PUBLIC 子数据集都通过 SMB 共享。第一个应该只有管理员用户可以访问。因此就有了这些权限/所有权。

我的问题:我如何可靠地使用mv此处来填充这些数据集?我不明白如何使用 zfs send/recv 将数据复制到特定的数据集/文件夹中。这就是为什么最初当我尝试时,我最终在 /mnt/mnt/ 下得到了 pre2012 的副本,GUI 不允许我将其用作共享。因此我使用mv.

此外,由于我试图将原始数据集的不同文件夹分类到不同的 dst 数据集中,因此我看不到 zfs send/recv 如何做到这一点。那可能吗?

此时我有点沮丧。要么我做的事情完全错误,要么我错过了 FreeNAS 应该如何使用的基本概念......或者两者兼而有之:-/ 无论如何,我没想到用数据填充服务器会如此复杂。

再说一遍,这是我刚开始使用 FreeNAS 1.5 周之后的事。很抱歉这篇文章很长。

我现在被困住了。任何提示将不胜感激。

提前致谢。

答案1

解决了... 有点。

从我从诸如此类的线程中学到的,这可能是多种问题的结合:

  1. 创建数据集时,我选择作为类型SMB而不是Generic。对于 samba 共享来说这是可以的,但需要付出一定的代价:FreeNAS 立即为其分配一种case sensitive模式,并且无法更改它。
  2. chmod 与 smb acl:在 cli 级别 (chmod) 所做的事情与 GUI 所做的事情不同/完全兼容。
  3. 如果使用rsync您可能想将其用作rsync -A --no-perms ...。我不知道这不是一个选项(例如,在 OSX 中不可用)。所做-A的就是很好地处理 ACL 条目。
  4. 确保您 sudo 为 rootsudo su -l

我的最终解决方案是重做一些我确实需要区分大小写的文件夹,例如,PRIVATE/Documents 并将其作为 NFS 共享共享版本 4 并强制所有用户将其安装为(在我的例子中您分配给此共享的用户名 -admin);团体也一样。

这允许将数据集类型指定为generic和 then case sensitive。它似乎也比 SMB 共享更快。

这可能不是最佳的。但由于我主要在 Mac 和 Linux(很少是 Windows)上使用它,所以看起来还不错。

我通过 Mac 上的 cli 安装了共享:mount -t nfs nas:/mnt/NAS01/PRIVATE/Documents ~/Desktop/NFS。我第一次没有尝试使用Finder( )(请参阅下面的 PS)。Go to Server...

翻译Finder那个桌面文件夹NFS -> Documents。然而在 cli 上,您仍然将其视为NFS.

PS:这是我第二次尝试设置 NFS 共享并使用 Mac 客户端,到目前为止一切似乎都很好。我第一次没有看到奇怪的问题,当将文件复制到共享并开始创建它的无限副本时,查找器陷入无限循环

在此输入图像描述

相关内容