Samba 网络驱动器上的 Excel 文件无法打开

Posted

技术标签:

【中文标题】Samba 网络驱动器上的 Excel 文件无法打开【英文标题】:Excel files on a Samba network drive don't open 【发布时间】:2021-12-14 13:14:19 【问题描述】:

我有一个安装了 MS Office 的 Microsoft Server 2019 Standard。我还有一个 Linux 服务器,当他们登录时,通过 Samba 与他们的 Windows 帐户共享每个用户的 ~/windows/ 目录。文件夹的权限始终设置为 777 并且归用户和组 @987654324 所有@,用户所属。

但是,当他们打开位于上述目录中的 .xslx 文件时,会出现以下错误:

“抱歉,我们找不到 \AppData\Local\Microsoft\INetCache\Content.MSO\111191F2.xlsx。它 它可能被移动、重命名或删除了吗?”

打开该位置会发现该文件确实存在,这暗示了一些权限问题。以管理员身份打开网络驱动器上的文件,这再次提示权限问题,但我无法调试。

我没有设置 Active Directory,磁盘使用net use(使用用户密码)通过以下方式连接:

net use S: \\<address>\<user> <password>

至于 Samba 配置,这里是相关部分:

[homes]
  browseable = no
  path = /home/%S/windows
  read only = no
  valid users = %S

在本地保存文件并在工作后打开它没有任何问题。

在记事本中编辑简单的文本文件没有任何问题。 Samba 记录以下内容(它记录的内容更多,但这应该是相关部分):

[2021/11/01 11:27:49.692907,  3] ../source3/smbd/dir.c:1225(smbd_dirptr_get_entry)
  smbd_dirptr_get_entry mask=[*] found test.txt fname=test.txt (test.txt)
[2021/11/01 11:27:49.692966,  3] ../source3/smbd/smb2_server.c:3195(smbd_smb2_request_error_ex)
  smbd_smb2_request_error_ex: smbd_smb2_request_error_ex: idx[5] status[STATUS_NO_MORE_FILES] || at ../source3/smbd/smb2_query_directory.c:158
[2021/11/01 11:27:49.694329,  2] ../source3/smbd/open.c:1447(open_file)
  tom opened file test.txt read=Yes write=No (numopen=4)
[2021/11/01 11:27:49.694999,  3] ../source3/smbd/smb2_server.c:3195(smbd_smb2_request_error_ex)
  smbd_smb2_request_error_ex: smbd_smb2_request_error_ex: idx[1] status[NT_STATUS_ACCESS_DENIED] || at ../source3/smbd/smb2_getinfo.c:159
[2021/11/01 11:27:49.696187,  3] ../source3/smbd/smb2_read.c:421(smb2_read_complete)
  smbd_smb2_read: fnum 2027028822, file test.txt, length=24 offset=0 read=24

运行accesschk.exe -ld S:(由问题用户)产生以下结果:

S:\
  DESCRIPTOR FLAGS:
      [SE_DACL_PRESENT]
      [SE_DACL_PROTECTED]
      [SE_SELF_RELATIVE]
  OWNER: S-1-5-21-2603346316-3644132649-3033319823-1025
  [0] ACCESS_ALLOWED_ACE_TYPE: S-1-5-21-2603346316-3644132649-3033319823-1025
          [OBJECT_INHERIT_ACE]
          [CONTAINER_INHERIT_ACE]
    FILE_ALL_ACCESS
  [1] ACCESS_ALLOWED_ACE_TYPE: S-1-22-2-1000
          [OBJECT_INHERIT_ACE]
          [CONTAINER_INHERIT_ACE]
    FILE_ALL_ACCESS
  [2] ACCESS_ALLOWED_ACE_TYPE: Everyone
          [OBJECT_INHERIT_ACE]
          [CONTAINER_INHERIT_ACE]
    FILE_ALL_ACCESS
  [3] ACCESS_ALLOWED_ACE_TYPE: S-1-22-2-1000
    FILE_ALL_ACCESS
  [4] ACCESS_ALLOWED_ACE_TYPE: S-1-5-21-2603346316-3644132649-3033319823-1025
    FILE_ALL_ACCESS
  [5] ACCESS_ALLOWED_ACE_TYPE: CREATOR OWNER
          [OBJECT_INHERIT_ACE]
          [CONTAINER_INHERIT_ACE]
          [INHERIT_ONLY_ACE]
    FILE_ALL_ACCESS
  [6] ACCESS_ALLOWED_ACE_TYPE: CREATOR GROUP
          [OBJECT_INHERIT_ACE]
          [CONTAINER_INHERIT_ACE]
          [INHERIT_ONLY_ACE]
    FILE_ALL_ACCESS

任何帮助将不胜感激!

【问题讨论】:

为了帮助您,我们需要知道您是否有 AD; smb.conf 的有效部分。您在其下共享用户目录的用户是什么?下次 - 这个问题更适合超级用户。 我编辑了答案以(希望)包含此信息。 这样好多了。您是否尝试过编写一个简单的文本文件,对其进行编辑并保存(例如通过记事本)?它对你有用吗? smbd.log 文件说什么(不要忘记提高日志记录级别)? ~/windows/ 目录的权限是什么?该用户是否属于任何组? 我再次编辑了问题以包含此信息。 谢谢。你能发布 Sysinternals (docs.microsoft.com/en-us/sysinternals/downloads/accesschk) accesschk.exe -ld \\&lt;address&gt;\&lt;user&gt; 的结果吗? (或 S:) 【参考方案1】:
Go to File -> Options -> Trust Center -> click on Trust Center Settings -> Trusted Locations -> select "Allow Trusted Locations on my network(not recommended"

然后点击信任中心下的“文件阻止设置”,

取消选中以下或其他与您的 Excel 版本有关的选项。

"Excel 4 Workbooks”

"Excel 4 Worksheets”

"Excel 3 Worksheets”

"Excel 2 Worksheets”

"Excel 4 Macrosheets and Add-in files"

"Excel 3 Macrosheets and Add-in files"

"Excel 2 Macrosheets and Add-in files"

点击确定。

关闭所有 excel 文件并尝试从网络共享打开该 excel 文件。

【讨论】:

Allow Trusted Locations on my network 已被检查,无事可做。至于文件块设置,遗憾的是取消选中似乎不起作用(同样的错误)。【参考方案2】:

我只记得您可能缺少 samba 用户映射文件,该文件将 windows 用户映射到 *nix 用户。

[global]部分你需要添加

[global]
user map = /<path>/mapusers.txt

详情请见man pages。

在文本文件mapusers.txt 中,每个映射需要一行。

在您的情况下,所有 windows 用户都映射到一个 linux 用户或组:

linux_user = windows_user

@linux_group = @windows_group

【讨论】:

以上是关于Samba 网络驱动器上的 Excel 文件无法打开的主要内容,如果未能解决你的问题,请参考以下文章

os.path.isfile() 为 linux smb 网络驱动器上的文件返回 false

linux服务器的所有服务web/dns/dhcp/vsftp-nfs-samba的配置

使用Network Recycle Bin启用映射网络驱动器上的回收站

QT excel创建的.xlsx文件打不开

Powershell文件锁定功能未打开excel文件

excel打开后提示文件格式或文件扩展名无效打不开。