我使用 Windows 10 笔记本上的 SSH 将文件夹复制SichTmp02122022_Profiles
到目录schr
(均位于我的 NAS 即 My Cloud EX2 Ultra 的同一共享上),如下所示:
cp --no-dereference --preserve=all -r SichTmp02122022_Profiles schr/
SichTmp02122022_Profiles
它本身包含目录和大量文件。当我尝试使用 Notebook 中的 Windows 资源管理器更改SichTmp02122022_Profiles
目录中的 (copy)schr
名称时,我收到一条错误消息,提示我需要来自 MYCLOUDEX2ULTRA\admin(即 NAS 设备)的凭据才能进行更改。但是,我可以像那样重命名其子目录以及父目录schr
。
以下是 Shell 输出的文件夹凭据:
root@MyCloudEX2Ultra Thunderbird_kS # ls -l
drwxrwxrwx 3 admin share 4096 Jul 8 16:01 Orig02122022_Profiles
drwxr-xr-x 3 root root 4096 Dec 2 21:33 schr
root@MyCloudEX2Ultra Thunderbird_kS # ls -l schr/
drwxrwxrwx 3 admin share 4096 Dec 2 18:00 SichTmp02122022_Profiles
(schr
是通过 SSH 创建的,因此有不同的所有者,root。)
至于 Samba,我使用 Windows 资源管理器从 Notebook 以组成员的身份进行访问nobody
。我使用 SSH root
(与 不同,admin
它不是,而是一个普通用户帐户,可以使用 NAS Web 界面访问特定配置设置)。显然使用了 SMB2,NAS/Samba 和 Notebook 都应该可以使用 SMB3,但根据 Wireshark 捕获,似乎没有启用。NAS 的 Linux 版本是 4.14.22。
我非常想知道背后的原因,以便让事情变得干净和正确,因为副本是作为备份,我必须依靠数据全部将来的功能。我想指出,我不是在寻找解决方法,而是想正确地解决问题。我已经看过 Samba,但没有发现明显的缺陷(顺便说一句,我不是专业人士)。我也试图找到有关文件权限的线索。我自己想不出一个合乎逻辑的理由,尽管我尽力了。我将不胜感激任何提示或想法。
编辑:
为了消除对我所经历的事情的可能怀疑,我重现了该过程,随后将按发生时间的降序描述所有内容。除了上面已经给出的解释之外,只有一件事是额外的,那就是我将原始复制命令与具有较少可选参数的命令进行比较。
root@MyCloudEX2Ultra Thunderbird_kS # mkdir A_SSH
root@MyCloudEX2Ultra Thunderbird_kS # ls -l
drwxr-xr-x 3 root root 4096 Dec 5 11:43 A_SSH
drwxrwxrwx 3 admin share 4096 Jul 8 16:01 Orig02122022_Profiles
不同的cp
论点:
root@MyCloudEX2Ultra Thunderbird_kS # cp -r Orig02122022_Profiles A_SSH/
root@MyCloudEX2Ultra Thunderbird_kS # ls -l A_SSH/
drwxr-xr-x 3 root root 4096 Dec 5 11:43 Orig02122022_Profiles
root@MyCloudEX2Ultra Thunderbird_kS # ls -l A_SSH/Orig02122022_Profiles/
drwxr-xr-x 21 root root 4096 Dec 5 11:46 f39s819w.sdfh
root@MyCloudEX2Ultra Thunderbird_kS # ls A_SSH/Orig02122022_Profiles/f39s819w.sdfh/
AlternateServices.txt
SecurityPreloadState.txt
abook.mab.bak
abook.sqlite
abook.v2.sqlite
blist.sqlite
blocklist-addons.json
blocklist-gfx.json
blocklist-plugins.json
使用 Windows 资源管理器成功将 A_SSH 重命名为 C_SSH_Expl (为什么这个?):
root@MyCloudEX2Ultra Thunderbird_kS # ls -l
drwxr-xr-x 3 root root 4096 Dec 5 11:43 C_SSH_Expl
drwxrwxrwx 3 admin share 4096 Jul 8 16:01 Orig02122022_Profiles
尝试Orig02122022_Profiles
使用 Windows 资源管理器重命名目录时出错。
尝试C_SSH_Expl/Orig02122022_Profiles/f39s819w.sdfh
使用 Windows 资源管理器重命名子目录时出错。
当使用复制命令cp --no-dereference --preserve=all -r
时,如上所述,例外C_SSH_Expl/Orig02122022_Profiles/f39s819w.sdfh
使用Windows 资源管理器重命名子目录[...]/o39s819w.sdfh
成功:
root@MyCloudEX2Ultra Thunderbird_kS # ls -l C_SSH_Expl/
drwxrwxrwx 3 admin share 4096 Dec 5 12:24 Orig02122022_Profiles
root@MyCloudEX2Ultra Thunderbird_kS # ls -l C_SSH_Expl/Orig02122022_Profiles/
drwxrwxrwx 21 admin share 4096 Dec 4 14:25 o39s819w.sdfh
对我来说不合适的是,为什么我可以将根目录重命名为nobody?
答案1
(
schr
是通过 SSH 创建的,因此有不同的所有者,root。)
这就是问题的原因。重命名目录条目(文件、目录等)会修改其所在的目录。您无权这样做。
确定所有权后schr
就好了。