无需重启Samba服务器即可临时禁用共享并实现TOTP验证访问的方案咨询
无需重启Samba服务器即可临时禁用共享并实现TOTP验证访问的方案咨询
我有一台Linux服务器,为Windows客户端上的用户提供独立的Samba共享(每个用户也有Linux客户端访问自己的共享),用户在单独的设备上安装了认证器应用。我希望这些共享能自动挂载并保存密码,但还想在服务器上设置TOTP,实现以下需求:
- 服务器定期断开共享连接/阻止用户访问Samba共享
- 通过Windows客户端访问的(可能是自定义的)软件或Web应用会弹出提示,要求用户输入TOTP码发送到服务器验证
- 输入正确的验证码后,用户可重新获得共享的连接/访问权限
重要提示:客户端不能执行断开/阻止操作,必须由服务器端完成
我知道可以在服务器上编写脚本修改Samba配置,注释掉目标用户的共享配置后重启服务器(还要做好时间规划避免和其他超时逻辑冲突),但我担心重启Samba服务器会对其他用户造成干扰(哪怕时间很短),还可能导致正在修改或传输的文件损坏。有没有Samba选项可以在重新加载配置后生效,而不需要重启服务器?
我无法控制客户端的连接IP,所以没法通过临时防火墙规则来阻止访问。
能不能用ACLs实现这个需求?这些共享里有成千上万个文件。能不能修改共享根目录的所有者,让目录内的文件自动继承权限,同时不用等待所有文件的权限更新完成?(我想防止用户通过共享根目录之外的路径访问,因为那些路径的权限还没修改。)
如果以上方法都不可行,我考虑了另一种方案:把Samba共享的所有者设为另一个权限受限的用户,将共享的实际文件存放在其他位置,用绑定挂载(而非符号链接,减少SELinux相关问题)从实际文件位置挂载到Samba共享目录,然后随时卸载这个挂载——这样Samba共享目录本身因为权限限制,会让读写操作触发访问错误。但我不确定这种方法(或其他可能的方案)会对正在进行的文件传输、写入中的应用等场景产生什么影响。
备注:内容来源于stack exchange,提问作者ift-436t
相关产品推荐
相关产品推荐

