我们正在尝试解决我们认为的 Samba 服务器行为问题。请理解,我们并不是说这是 Samba 中的错误。它只是与我们想要的行为不同。
我们的 Samba 服务器是版本 3.5.4(版本 68.el6),运行在 CentOS 6.0(x86_64)下。我们恰好使用 Active Directory (AD) 进行身份验证,但我不确定这种行为是否是 AD 所特有的。
接下来是对不良行为的概括性陈述,首先提供一系列事件的背景:
- CIFS 客户端建立(并维护)与我们的 Samba 服务器上的 CIFS 共享的连接。
- 建立该连接后,将进行配置更改(示例如下),我们认为这应立即撤销 CIFS 客户端对所连接 CIFS 共享的访问权限。例如:
- 从域中删除 Active Directory 用户(通过域控制器上的 Active Directory 管理中心)。
- Active Directory 用户已从 CIFS 共享的允许用户列表中删除(在 Samba 服务器主机上)。
- CIFS 共享已被删除(在 Samba 服务器主机上)。
这是不受欢迎的行为。只要 CIFS 客户端保持与 CIFS 共享的现有连接,对该共享的访问就不会被撤销。也就是说,用户继续拥有与首次建立连接时相同的共享访问权限。FWIW,我们相信这种行为是设计使然。
理想的行为是,一旦与访问权限相关的“配置更改”完成,就立即撤销访问权限。断开受影响的客户端会话是可以接受且适当的,但断开其他会话是不理想的。
我想听听你对实现所需行为的方法的想法。也许这就像更改我们的 Samba 服务器配置一样简单;我们尚未发现任何与此行为相关的配置参数。看来,检测访问权限是否被撤销是这一切中最困难的部分。
答案1
我很确定目前这是不可能的,至少不能使用 Samba 本身内置的功能。
解决方法可以是类似 cronjob 的东西,它定期检查计算机上的所有 smbd 进程是否来自有效用户,方法是解析实用smbstatus
程序的输出以检查登录的用户以及为他们提供服务的进程,并根据 AD 中的用户验证这些进程。然后,您可以使用该信息终止不再有效的用户的任何进程。