搭建samba环境并使用户可以通过访问网页changepassword修改密码

目录

搭建samba环境并使用户可以通过访问网页修改密码

参考网址:

实验环境:

实现效果:

软件包、配置文件、脚本及素材:

搭建步骤:

Samba服务安装:

查看服务器是否安装

修改配置文件

创建对应文件夹

批量添加系统及samba用户

登录验证

安装changepassword程序实现客户端更改密码

上传文件

安装依赖包

编译安装changepassword

源码安装apache服务器:

下载源码包

安装apr

安装apr-util

安装apache

设置apache支持cgi模块

访问web页面验证

设置httpd服务开机启动

清除window访问samba的缓存:


  • 参考网址:

整体环境搭建:

https://blog.csdn.net/weixin_41515615/article/details/79636465

Samba权限详解:

https://blog.csdn.net/maotianwang/article/details/52524732

  • 实验环境:

UOS 桌面操作系统(1021专业版)(安装环境和Debian相同),其他版本linux应该也可以。

  • 实现效果:

使用Samba来实现如下功能

在WIN资源管理器输入\\samba服务器IP地址,如\\192.168.31.193可访问文件共享服务器,也可映射到本地磁盘。

  1. 各部门有各自的文件夹,部门内成员有共同的读写权限,外部门无法访问,领导组成员可访问但仅有读权限。
  2. 每个人有自己的个人文件夹,有完全读写权限,并对其他人不可见。
  3. 公告栏,内容只有人力资源部成员可以编辑发布,其他人只读。
  4. 交换空间,可以临时存放资料,便于组间成员资料互传。

使用apache环境加changepassword模块实现:让用户访问网页修改自己的密码,如下图。

在浏览器输入以下网址可以更改密码

http://192.168.31.193/samba/changepassword.cgi

 

右键单击附件可保存到文件,解压开如下:

 

  • 搭建步骤:

  • Samba服务安装:

  • 查看服务器是否安装

netstat -lntup |grep -i smbd #查看服务是否启动

 

默认自带SAMBA服务,只需要修改配置文件即可。

若未启动,请联网下载安装包或直接用apt-get命令安装,命令如下:

apt-get install samba

  • 修改配置文件

直接解压文中附件里的smb.conf复制到对应目录/etc/samba/即可

cp smb.conf /etc/samba/

 

详情如下:

vim /etc/samba/smb.conf

(1)在global后加入以下内容,将认证方式修改该成smbpasswd,并将认证文件加密保存在/usr/local/samba/smbpasswd下,所以编译安装changepassword时需要指定这个文件

[global]

  security = user

  load printers = yes

  log file = /usr/local/samba/var/log.%m

  max log size = 50

       pam password change = no

       passdb backend = smbpasswd

       smb passwd file = /usr/local/samba/smbpasswd

(2)在配置文件末尾写上文件夹访问权限:

参考网址:https://blog.csdn.net/maotianwang/article/details/52524732

 

中间略。。。

 

  • 创建对应文件夹

文件夹全部给777权限,后面用samba来灵活控制权限。

直接解压文中附件里的mkdir脚本,复制到samba服务器上,设置执行权限并执行。

chmod +x mkdir.sh #增加执行权限

sh mkdir.sh #批量添加文件夹

 

详情如下:

也可以复制脚本内容,vim mkdir.sh 后粘贴进新文件保存退出。

(注意:ssh链接时vim默认无法粘贴,需在命令模式下输入:set mouse=c 后回车切换模式)

root@huanghe-PC:/home# cat mkdir.sh #以下为脚本内容

#!/bin/bash
mkdir -p /home/samba/XiaoShouBu
mkdir -p /home/samba/ChanPinBu
mkdir -p /home/samba/JiaoFuBu
mkdir -p /home/samba/CaiWuBu
mkdir -p /home/samba/QuDaoBu
mkdir -p /home/samba/ZongHeGuanLiBu
mkdir -p /home/samba/LingDaoZu
mkdir -p /home/samba/RenZiBu
mkdir -p /home/samba/public
mkdir -p /home/samba/exchange
cd /home/samba
chmod 777 -R *
  • 批量添加系统及samba用户

直接解压文中附件里的add_uos_smb_user.sh脚本和用户名文件users.txt,复制到samba服务器上,设置执行权限并执行。

chmod 755 add_uos_smb_user.sh

sh add_uos_smb_user.sh users.txt  #批量增加用户

执行结果如下,最后可以查看3个文件是否添加成功:

 

注意:批量添加时,users.txt文件要在linux下创建以保证格式是UNIX,最后一行要是空行。

 

 

脚本可以读取文件,批量增加用户,也可以单独增加某个人如

sh add_uos_smb_user.sh user001:group001

脚本内容如下:

 

#!/bin/bash
# FileName: add_smb_user.sh
# Useage : sh add_smb_user.sh userlistfile / username:groupname


#批量添加用户
add_list(){
	#从userlist中读取用户帐号并循环添加
	cat $1 | while read username_groupname
	do
		username=`echo $username_groupname |awk -F ':' '{print $1}'`
		groupname=`echo $username_groupname |awk -F ':' '{print $2}'`
		groupadd -f $groupname
		useradd -g $groupname $username -s /sbin/nologin
		#添加系统账户和密码 密码和账户名相同
		echo  "$username\n$username" | passwd -q $username
		#添加samba账户和密码 密码和账户名相同
		echo  "$username\n$username" | smbpasswd -a $username -s
		if [ 0 = $? ];then
			echo  "$username 系统及samba添加成功!"
		else
			echo  "$username 系统或samba添加成功!"
		fi
	done
}
#单个添加用户
add_one() {
	username=`echo $1 |awk -F ':' '{print $1}'`
	groupname=`echo $1 |awk -F ':' '{print $2}'`
	groupadd -f $groupname
	useradd -g $groupname $username -s /sbin/nologin
	#添加系统账户和密码 密码和账户名相同
	echo  "$username\n$username" | passwd -q $username &
	#添加samba账户和密码 密码和账户名相同
	echo  "$username\n$username" | smbpasswd -a $username -s
	if [ 0 = $? ];then
		echo  "$username 系统及samba添加成功!"
	else
		echo  "$username 系统或samba添加失败!"
	fi
}
# 先确认系统安装了samba,如果没有就安装 
which smbpasswd || apt install -y samba
#如果参数1是文件那么执行批量添加,否则就单个添加
if [ ! -z $1 ];then 
	test -f $1 && (add_list $1) || (add_one $1)  
echo ""&&tail -n5 /etc/passwd &&echo ""&& tail -n5 /etc/shadow &&echo ""&&tail -n5 /usr/local/samba/smbpasswd
	exit 0
else
	echo "参数1未找到。用法: $0 userlistfile / username:groupname"
echo ""&&tail -n5 /etc/passwd &&echo ""&& tail -n5 /etc/shadow &&echo ""&&tail -n5 /usr/local/samba/smbpasswd
	exit 1
fi

注:这里创建samba账户时必须设置系统账户密码,以及smb账户密码

因为changepassword更改密码的机制是,先修改系统账户密码,然后将系统账户密码同步到 /usr/local/samba/smbpasswd SMB密码库文件下。

  • 登录验证

Win下在资源管理器里输入samba服务器IP地址\\192.168.31.193

访问成功,说明samba服务器我们已经搭建好了。

  • 安装changepassword程序实现客户端更改密码

  • 上传文件

解压文中附件里的changepassword-0.9.tar.gz并上传到服务器

# tar -zxvf changepassword-0.9.tar.gz

# cd changepassword-0.9

  • 安装依赖包

# cd  smbencrypt/

# tar -xzvf libdes-4.04b.tar.gz

# cd des/

# make

# cp libdes.a ../

# cd ../..

  • 编译安装changepassword

创建目录

# mkdir -p /usr/local/apache/htdocs/samba

# mkdir -p /usr/local/samba/smbpasswd

编译

# ./configure -enable-cgidir=/usr/local/apache/htdocs/samba -enable-language=Chinese -enable-smbpasswd=/usr/local/samba/smbpasswd -disable-squidpasswd  -enable-logo=samba/logo.jpg

 

注:-enable-cgidir=...                     

# 自定义apache根目录路径

  -enable-language=Chinese                

# 设置页面为简体中文

  -enable-smbpasswd=/etc/samba/smbpasswd  

# 自定义samba密码的库文件

  -disable-squidpasswd                    

# 禁用squid

  -enable-logo=...

# 设置web根目录logo文件,此处的相对路径对应的是apache根目录也就是 samba/logo.jpg对应/usr/local/apache/htdocs/samba/logo.jpg

 

复制附件中的logo.jpg文件到/usr/local/apache/htdocs/samba/目录

# make && make install

 

  • 卸载原apache2

由于原来的apache2服务路径对不上,先卸载原apache2

apt remove apache2-*

 

  • 源码安装apache服务器:

直接解压文中附件里的 setup_apache.sh 脚本,复制到samba服务器上,设置执行权限并执行。

chmod +x setup_apache.sh #增加执行权限

sh setup_apache.sh #批量添加文件夹

脚本详情如下,若出错请排查

#!/bin/bash
#Download tar files
wget http://archive.apache.org/dist/apr/apr-1.4.6.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.5.1.tar.gz
wget http://archive.apache.org/dist/httpd/httpd-2.2.23.tar.gz

#安装apr
tar zxvf apr-1.4.6.tar.gz  
cd apr-1.4.6  
./configure --prefix=/usr/local/apr  --build=arm-linux
make  
make install
cd ..

#如果在编译中出现如下报错
#/bin/rm: cannot remove `libtoolT': No such file or directory  编辑文件:vim configure--->将 RM='$RM'修改为 RM='$RM -f'即可。

#安装apr-util
tar zxvf apr-util-1.5.1.tar.gz  
cd apr-util-1.5.1  
./configure --with-apr=/usr/local/apr  --build=arm-linux
make  
make install
cd ..

#安装apache
tar zxvf httpd-2.2.23.tar.gz  
cd httpd-2.2.23  
./configure --prefix=/usr/local/apache --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config  --build=arm-linux
make  
make install
cd ..



 

 

  • 设置apache支持cgi模块

直接解压文中附件里的httpd.conf复制替换/usr/local/apache/conf/httpd.conf

详情如下:

# vi /usr/local/apache/conf/httpd.conf

搜索cgi 去掉如下注释:

--------------

#LoadModule cgid_module modules/mod_cgid.so  #####这个当时没有

AddHandler cgi-script .cgi

--------------

搜索 DocumentRoot,在/usr/local/apache/htdocs类目下找到Options选项,修改为:

--------------

Options Indexes FollowSymLinks ExecCGI

--------------

ServerName  127.0.0.1:80

-----------------

重启服务

# /usr/local/apache/bin/apachectl restart

  • 访问web页面验证

http://192.168.31.139/samba/changepassword.cgi

 

按照提示修改密码提交即可

 

  • 设置httpd服务开机启动

vim /usr/local/apache/bin/apachectl  #在开头加入以下内容

### BEGIN INIT INFO

# Provides:          httpd

# Required-Start:

# Required-Stop:

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: Start httpd daemon at boot time

# Description:       Start httpd daemon at boot time

### END INIT INFO

 

cp /usr/local/apache/bin/apachectl  /etc/init.d/apachectl

update-rc.d apachectl enable

reboot重启验证httpd服务是否启动

 

  • 清除window访问samba的缓存:

由于调试需要,切换账户时必须注销或重启,可以用以下脚本快速清除window访问samba的缓存,直接解压文中附件里的“win下不注销清除smb登陆凭证.bat”bat脚本,注意替换相应的samba 服务器IP双击即可完成清除,脚本内容如下:

@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
@echo off
echo 清除上次信息,请稍等......
net use
net use \\192.168.31.193\IPC$ /DELETE
::清除win保存的认证
klist purge
::m删除win保存的凭据管理器,delete:后面为你共享的地址
cmdkey /delete:192.168.31.193
echo 清除登录信息完成
@echo off
net stop LanmanWorkstation
net start LanmanWorkstation
start /max "" "\\192.168.31.193"

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值