ubuntu 14.04 上的 Samba 4 与 Posix ACL(2:4.1.6+dfsg-1ubuntu2.14.04.9)冲突了吗?

ubuntu 14.04 上的 Samba 4 与 Posix ACL(2:4.1.6+dfsg-1ubuntu2.14.04.9)冲突了吗?

我遇到了新迁移的 BDC (2:4.1.6+dfsg-1ubuntu2.14.04.9) 的问题,该 BDC 具有基于 POSIX ACL 的权限。我无法让它作为 PDC 工作,幸运的是,它仍然有一个稍旧的版本 (2:4.1.6+dfsg-1ubuntu2.14.04.7)。

PDC 可以在以下权限下完美运行。该方案非常基础,但允许示例中的“会计”组用户共享文件和文件夹...

 # file: accounting
 # owner: root
 # group: root
 user::rwx
 group::r-x
 group:Accounting:rwx
 mask::rwx
 other::---
 default:user::rwx
 default:group::---
 default:group:Accounting:rwx
 default:mask::rwx
 default:other::---

我可能遗漏了什么吗?我让用户在共享中创建目录的唯一方法是公开“其他”权限,这显然是不可取的。我正在尝试使用 acl_xattr 的 Windows ACL,但到目前为止,我还没有能够实现与 POSIX ACL 相同的效果。

PDC 和 BDC 上的 smb.conf 完全相同,当然,除了服务器角色和 PDC 上的 WINS 服务器。共享定义如下。

[accounting]
   path = /srv/samba/accounting
   writable = yes
   nt acl support = yes

真正疯狂的是,在重新设置此类共享进行测试并重新启动服务后,一切似乎都可以通过 访问\\BDC\share。但是,一段时间后,它会中断,不再允许访问文件夹(Win7、Win10 和 WinXP)。在 WinXP 下,可以使用 访问\\bdc.domain.tld\share一次,然后停止。在 WinXP 下,也可以通过 访问\\<BDC_IP_ADDRESS>\share...

下面是测试共享的错误日志。

在此先非常感谢您的任何提示。

--

  [2015/10/03 17:38:21.624058,  3] ../source3/smbd/process.c:1795(process_smb)
    Transaction 255 of length 90 (0 toread)
  [2015/10/03 17:38:21.624238,  3] ../source3/smbd/process.c:1398(switch_message)
    switch message SMBntcreateX (pid 19932) conn 0x7fb256620060
  [2015/10/03 17:38:21.624382,  3] ../source3/smbd/service.c:197(set_current_service)
    chdir (/srv/samba/posix_acl) failed, reason: Permission denied
  [2015/10/03 17:38:21.624469,  3] ../source3/smbd/error.c:82(error_packet_set)
    NT error packet at ../source3/smbd/process.c(1517) cmd=162 (SMBntcreateX) NT_STATUS_ACCESS_DENIED
  [2015/10/03 17:38:25.186401,  3] ../source3/smbd/process.c:1795(process_smb)
    Transaction 256 of length 80 (0 toread)
  [2015/10/03 17:38:25.186586,  3] ../source3/smbd/process.c:1398(switch_message)
    switch message SMBtrans2 (pid 19932) conn 0x7fb256620060
  [2015/10/03 17:38:25.186679,  3] ../source3/smbd/service.c:197(set_current_service)
    chdir (/srv/samba/posix_acl) failed, reason: Permission denied
  [2015/10/03 17:38:25.186758,  3] ../source3/smbd/error.c:82(error_packet_set)
    NT error packet at ../source3/smbd/process.c(1517) cmd=50 (SMBtrans2) NT_STATUS_ACCESS_DENIED
  [2015/10/03 17:38:25.277631,  3] ../source3/smbd/process.c:1795(process_smb)
    Transaction 257 of length 114 (0 toread)
  [2015/10/03 17:38:25.277782,  3] ../source3/smbd/process.c:1398(switch_message)
    switch message SMBntcreateX (pid 19932) conn 0x7fb256620060
  [2015/10/03 17:38:25.277911,  3] ../source3/smbd/service.c:197(set_current_service)
    chdir (/srv/samba/posix_acl) failed, reason: Permission denied
  [2015/10/03 17:38:25.277989,  3] ../source3/smbd/error.c:82(error_packet_set)
    NT error packet at ../source3/smbd/process.c(1517) cmd=162 (SMBntcreateX) NT_STATUS_ACCESS_DENIED
  [2015/10/03 17:38:25.278256,  3] ../source3/smbd/process.c:1795(process_smb)
    Transaction 258 of length 80 (0 toread)
  [2015/10/03 17:38:25.278356,  3] ../source3/smbd/process.c:1398(switch_message)
    switch message SMBtrans2 (pid 19932) conn 0x7fb256620060
  [2015/10/03 17:38:25.278436,  3] ../source3/smbd/service.c:197(set_current_service)
    chdir (/srv/samba/posix_acl) failed, reason: Permission denied
  [2015/10/03 17:38:25.278507,  3] ../source3/smbd/error.c:82(error_packet_set)
    NT error packet at ../source3/smbd/process.c(1517) cmd=50 (SMBtrans2) NT_STATUS_ACCESS_DENIED
  [2015/10/03 17:38:25.282395,  3] ../source3/smbd/process.c:1795(process_smb)
    Transaction 259 of length 114 (0 toread)
  [2015/10/03 17:38:25.282526,  3] ../source3/smbd/process.c:1398(switch_message)
    switch message SMBntcreateX (pid 19932) conn 0x7fb256620060
  [2015/10/03 17:38:25.282610,  3] ../source3/smbd/service.c:197(set_current_service)
    chdir (/srv/samba/posix_acl) failed, reason: Permission denied
  [2015/10/03 17:38:25.282683,  3] ../source3/smbd/error.c:82(error_packet_set)
    NT error packet at ../source3/smbd/process.c(1517) cmd=162 (SMBntcreateX) NT_STATUS_ACCESS_DENIED
  [2015/10/03 17:38:25.284720,  3] ../source3/smbd/process.c:1795(process_smb)
    Transaction 260 of length 90 (0 toread)
  [2015/10/03 17:38:25.284848,  3] ../source3/smbd/process.c:1398(switch_message)
   switch message SMBntcreateX (pid 19932) conn 0x7fb256620060
  [2015/10/03 17:38:25.284932,  3] ../source3/smbd/service.c:197(set_current_service)
   chdir (/srv/samba/posix_acl) failed, reason: Permission denied
  [2015/10/03 17:38:25.285005,  3] ../source3/smbd/error.c:82(error_packet_set)
   NT error packet at ../source3/smbd/process.c(1517) cmd=162 (SMBntcreateX) NT_STATUS_ACCESS_DENIED
  [2015/10/03 17:38:25.288082,  3] ../source3/smbd/process.c:1795(process_smb)
   Transaction 261 of length 90 (0 toread)
  [2015/10/03 17:38:25.288233,  3] ../source3/smbd/process.c:1398(switch_message)
   switch message SMBntcreateX (pid 19932) conn 0x7fb256620060
  [2015/10/03 17:38:25.288386,  3] ../source3/smbd/service.c:197(set_current_service)
   chdir (/srv/samba/posix_acl) failed, reason: Permission denied
  [2015/10/03 17:38:25.288468,  3] ../source3/smbd/error.c:82(error_packet_set)
   NT error packet at ../source3/smbd/process.c(1517) cmd=162 (SMBntcreateX) NT_STATUS_ACCESS_DENIED
  [2015/10/03 17:38:25.290447,  3] ../source3/smbd/process.c:1795(process_smb)
   Transaction 262 of length 80 (0 toread)
  [2015/10/03 17:38:25.290578,  3] ../source3/smbd/process.c:1398(switch_message)
   switch message SMBtrans2 (pid 19932) conn 0x7fb256620060
  [2015/10/03 17:38:25.290663,  3] ../source3/smbd/service.c:197(set_current_service)
   chdir (/srv/samba/posix_acl) failed, reason: Permission denied
  [2015/10/03 17:38:25.290736,  3] ../source3/smbd/error.c:82(error_packet_set)
   NT error packet at ../source3/smbd/process.c(1517) cmd=50 (SMBtrans2) NT_STATUS_ACCESS_DENIED

答案1

我找到了解决问题的方法......

查看 /var/log/samba 中的日志,我可以看到 winbind 日志,它不应该在那里。检查后,我可以看到 wbinfo -u 返回了一个用户列表,进一步检查后,我可以看到活动的 winbind 进程。停止 winbind 服务后,情况恢复正常。

因此,使用 sudo apt-get remove winbind 删除该包并重新启动是最终的解决方案。

供参考,使用 Windows ACL 的测试共享似乎也适用于在共享上设置的相同类型的权限。因此 Posix ACL 和 Windows ACL 都可以工作。

有关后者使用的配置的信息如下(不确定 Windows ACL 的第二部分是否需要具备基础知识,但在我的情况下似乎有效,我有时间会进一步调查)。

[windows_acl]
   path = /srv/samba/windows_acl
   read only = no

   ; Windows ACL
   vfs objects = acl_xattr
   map acl inherit = yes
   store dos attributes = yes

   inherit acls = yes
   inherit permissions = yes
   acl group control = yes
   acl map full control = true
   nt acl support = yes
   ea support = yes

我希望这可以帮助任何遇到类似情况的人。

相关内容