samba结合pam(Pluggable Authentication Modules )认证模块,实现samba基于用户的访问控制,假设现在有两个用户test、hehe,我想实现禁止test用户在192.168.1.0/24网段内的任意一台机子登陆到samba的共享目录share目录,同时允许用户hehe可以访问,我们可以这样设置:

1. 在smb.conf配置文件的blobal全局选项里加入:

obey pam restrictions = yes

path = /share

2. 打开/etc/pam.d/samba文件,在account的上面加入:

account   required    pam_access.so  accessfile=/etc/mysmblogin

3. 在/etc下新建文件mysmblogin配置文件,内容如下:

+:hehe:192.168.1.

-:test:192.168.1.

4. 重启服务,测试:

service smb restart

我们可以在这边实时查看日志,用test用户访问看看:

tail -f /var/log/messages

可以看到smb_pam_accountcheck:PAM认证模块起作用了!

本文在redhat 版本和Centos版本上测试通过。