前一阶段我把公司的samba服务器加入到域环境,但由于兼容性的问题导致相关设置无法生成(主要是权限方面),所以又将samba退出域环境。但随之而来的就是所有的文件夹权限全部出问题,本来没有权限的用户可以随意访问之前禁止其访问的文件夹。但也不是全部的都不生效,有部分文件夹权限是正确的。
我查看了/etc/samba/smb.conf,也没有发现问题出现在什么地方。将配置文件恢复到入域之前,也无法解决问题。
而且我也不打算重新安装samba, 那样的话,工作量太大了,而且会影响线上服务。
无奈之下,我查看了一下/var/lib/samba发现了许多以tdb结尾的文件。熟悉samba的人一看就知道,这些是数据库文件。是不是这些文件中的记录在入域之后增加了某些记录而导致的权限混乱呢?
为了验证我的想法,首先,我将/var/lib/samba这个文件夹进行了备份。然后在虚拟机里安装相同版本的samba。然后将其中的/var/lib/samba根目录中的以tdb结尾的文件复制到出现问题的生产环境的服务器的相应目录中。重启samba:
再次进行测试,一切OK!问题顺利解决!
三、问题分析 (一)出现该问题我分析如下:因为一开始我配置samba服务的时候并没有直接针对域环境进行配置,用户的认证是由该服务器自身来完成的。因此在线上使用了一段时间后,在/var/lib/samba中的相应数据库中缓存了相应的用户权限和其他一些针对服务器自认证的记录。这样导致了服务器加入域环境之后也出现了权限的混乱;
在退出域环境后,相关的数据库中又缓存了在域环境的一些用户权限,所以导致该服务器,无法像加入域之前那样正常的完成自认证。
(二)结论在配置samba之前一定要做好架构方面的规划。在开始配置之初就针对相应的环境或者架构进行配置;
如果确实需要进行认证方式变更,一定要使用新安装的samba /var/lib/samba中的数据文件,替换 生成环境中/var/lib/samba中相应的数据文件,以免缓存记录造成权限混乱。
更多Samba相关教程见以下内容:
VMWare 虚拟机 Ubuntu 双网卡 访问 samba 速度 翻倍