最近一直在潜心研究linux shell,所以好久没有更新了。今天也是在QQ有人和我聊到samba密码ldap集中验证时,想到一个问题,内网使用samba服务器来存储用户数据,所有的用户不能登陆LINUX后台,如何让客户自行修改密码?
想要解决客户端实现修改samba密码,其实不需要去搭建ldap(维护成本较高),也不需要利用行政手法统计客户端密码(毕竟同事也不好意思告诉你他平时习惯用的密码),网上google了下,利用changepassword这个工具即可利用其WEB界面让普通用户登录WEB修改自己的密码,大大提高了工作效率。
SAMBA: CentOS默认yum源
CHANGEPASSWORD: changepassword-0.9
APACHE: httpd-2.4.4
一.环境搭建:
1.配置前先关闭iptables和SELINUX,避免配置过程中报错。
#service iptables stop
#setenforce 0
#vi /etc/sysconfig/selinux
SELINUX=disabled
2.安装开发包
#yum install gcc -y
3.安装apache
#yum install httpd -y
传送门:http://www.linuxidc.com/Linux/2013-05/83788.htm
二.配置samba:
1.安装samba:
#yum install samba -y
2.配置samba:
要使用changepassword程序实现,客户端更改密码必须设置系统密码和samba密码同步
#vi /etc/samba/smb.conf
搜索security = user 添加以下内容(这里注释了默认一行内容)
security = user
pam password change = no
passwd chat = *NEWUNIXpassword %n\n RetypenewUNIXpassword* %n\n successfully
passwd program = LANG=en_US /usr/bin/passwd %u
unix password sync = yes
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd
#passdb backend = tdbsam
#service smb restart
注:上述修改其实将tdbsam认证方式修改该成smbpasswd,并将认证文件加密保存在/etc/samba/smbpasswd下
创建smb账户
#useradd -s /sbin/nologin test04
#passwd test04
#smbpasswd -a test04
注:这里创建samba账户时必须设置系统账户密码,以及smb账户密码
因为changepassword更改密码的机制是,先修改系统账户密码,然后将系统账户密码同步到 /etc/samba/smbpasswd SMB密码库文件下。
二.安装配置changepassword
1,下载解压:
#wget http://prdownloads.sourceforge.net/changepassword/changepassword-0.9.tar.gz
#tar -zxvf changepassword-0.9.tar.gz
#cd changepassword-0.9
vim conf.h
将前三行的定义修改为自己创建的目录(这里我修改到了/var/smbchangepwd目录下):
// temporary directory and files to use
char TMPFILE[]=”/var/smbchangepwd/changepassword-shadow-XXXXXX”;
char TMPSMBFILE[]=”/var/smbchangepwd/changepassword-smb-XXXXXX”;
char TMPSQUIDFILE[]=”/var/smbchangepwd/changepassword-squid-XXXXXX”;
创建需要用到的目录
mkdir –pv /var/smbchangepwd
2.编译changepassword前需要安装一个依赖包
#cd smbencrypt/
#tar -xzvf libdes-4.04b.tar.gz
#cd des/
#make
#cp libdes.a ../
#cd ../..
3.编译安装changepassword
#./configure -enable-cgidir=/var/www/cgi-bin -enable-language=Chinese -enable-smbpasswd=/etc/samba/smbpasswd -disable-squidpasswd -enable-logo=logo.jpg
注:-enable-smbpasswd=/etc/samba/smbpasswd # 修改保存samba密码的库文件
-disable-squidpasswd # 禁用squid
-enable-cgidir # 自定义apache根目录路径
-disable-squidpasswd # 自定义smbpassword的密码文件路径
-enable-logo # 设置web根目录logo文件,此处的相对路径对应的是apache根目录
#也就是 samba/logo.jpg对应/var/www/cgi-bin/logo.jpg
#make && make install
4.设置apache支持cgi模块
#vim /etc/httpd/conf/httpd.conf
搜索cgi 去掉如下注释:
AddHandler cgi-script .cgi
————– 将AddDefaultCharset的值改为 GB2312,以防中文乱码
重启服务
#service httpd restart
5.访问web后台:
http://192.168.1.28/cgi-bin/changepassword.cgi
按照提示修改密码提交即可
