前言
1、Samba 概述
Samba 最先在Linux和Windous两个平台之间架起一座桥梁,正式由于Samba的出现,我们可以在Linux系统和Windows系统之间互相通信,比如拷贝文件、实现不同操作系统之间的资源共享等等,我们可以将其架设成一个功能非常强大的文件共享服务器,也可以将其架设成打印服务器提供本地和远程联机打印。
2、Samba 应用环境
文件和打印机共享
:文件和打印机共享是Samba的主要功能,SMB 进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问;身份验证和权限设置
:smbd服务支持user mode 和domain mode 等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机;名称解析
:Samaba 通过nmbd 服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址;浏览服务
:局域网中,Samba 服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问Windows网上邻居时,会提供浏览列表,显示共享目录、打印机等资源;一、Samba 服务器部署
1、samba 服务器安装
[root@localhost ~]# yum install -y samba
2、关闭selinux和防火墙
[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# setenforce 0[root@localhost ~]# getenforce Permissive
3、修改Samba配置文件
[root@localhost ~]# vim /etc/samba/smb.conf# See smb.conf.example for a more detailed config file or# read the smb.conf manpage.# Run 'testparm' to verify the config is correct after# you modified it.[global]///全局配置workgroup = SAMBAsecurity = userpassdb backend = tdbsamprinting = cupsprintcap name = cupsload printers = yescups options = raw[homes]comment = Home Directoriesvalid users = %S, %D%w%Sbrowseable = Noread only = Noinherit acls = Yes[printers]comment = All Printerspath = /var/tmpprintable = Yescreate mask = 0600browseable = No[print$]///共享打印机服务comment = Printer Driverspath = /var/lib/samba/driverswrite list = @printadmin rootforce group = @printadmincreate mask = 0664directory mask = 0775
4、启动samba服务
[root@localhost ~]# systemctl start smb
5、使用Windows客户端访问共享目录
PS:此时没有配置登录用户和密码,尚不能登录
二、企业案例实战
案例一:匿名用户访问
公司现在用一个工作组 VillianTsang,需要部署 samba 服务器作为文件共享服务器,并发布共享目录/share,共享名为public,这个共享目录允许所有公司员工访问
1、创建共享目录,并设置权限
[root@localhost ~]# mkdir /share///创建共享目录[root@localhost ~]# chmod 777 /share///给予/share 777 可读可写可执行权限[root@localhost ~]# touch villian.txt///共享目录写入测试文件
2、修改samba配置文件
[root@localhost ~]# vim /etc/samba/smb.conf[global]///修改全局配置workgroup = VillianTsang///修改工作组map to guest = bad user///支持匿名共享(samba4以上版本)server string = This is VillianTsang directory///修改文件目录描述[public]///在配置文件末尾添加共享目录comment = This is a Shared villiantsang directory///文件目录描述path = /share///共享文件目录绝对路径public = yes///支持匿名访问browsable = yes///可浏览
3、重启samba服务
[root@localhost ~]# systemctl restart smb
4、使用Windows客户端访问共享目录(免密匿名登录)
案例二:指定部门用户访问
创建销售部共享目录。通过用户名和密码共享文件,把/xsb 目录共享出去,只有知道用户名和密码的销售部同事才可以查看这个共享目录,其他部门无法访问
1、修改samba全局配置文件
[global]workgroup = SAMBAsecurity = user///修改为user,需要使用用户名访问passdb backend = smbpasswd///密码文本名smb passwd file = /etc/samba/smbpasswd///密码文本存放位置
2、重启samba服务
[root@localhost ~]# systemctl restart smb
3、查看密码文件是否生成
[root@localhost ~]# ls /etc/samba/lmhosts smb.conf smb.conf.example smbpasswd///smbpassword密码文本自动生成
4、添加销售部用户和组
[root@localhost ~]# groupadd xsb///创建销售部组[root@localhost ~]# useradd -g xsb zhangshan -M -s /sbin/nologin ///创建销售部张三用户 [root@localhost ~]# useradd -g xsb wangwu -M -s /sbin/nologin ///创建销售部王五用户[root@localhost ~]# id wangwu///查看用户的id信息uid=1005(wangwu) gid=1004(xsb) 组=1004(xsb)[root@localhost ~]# id zhangshanuid=1004(zhangshan) gid=1004(xsb) 组=1004(xsb)
5、添加销售部的samba账号
添加用户和密码[root@localhost ~]# smbpasswd -a zhangshan///将销售部张三用户添加至samba中,并设置密码New SMB password:Retype new SMB password:Added user zhangshan.[root@localhost ~]# smbpasswd -a wangwuNew SMB password:Retype new SMB password:Added user wangwu.
查看密码文本是否生成内容
[root@localhost ~]# cat /etc/samba/smbpasswd zhangshan:1004:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:32ED87BDB5FDC5E9CBA88547376818D4:[U ]:LCT-5E42242C:wangwu:1005:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:32ED87BDB5FDC5E9CBA88547376818D4:[U]:LCT-5E422437:
6、创建销售部共享目录,并设置权限
[root@localhost ~]# mkdir /xsb[root@localhost ~]# chmod 777 /xsb[root@localhost ~]# vim xsb.txthello world
7、修改配置文件,指定共享目录,设置访问权限
[xsb]comment = This is xsb directorypath = /xsbvalid users = @xsb
8、重启samba服务
[root@localhost ~]# systemctl restart smb
9、使用Windows客户端访问共享目录(使用销售部用户+密码访问)
案例三:禁止部门某些用户访问
PS1、隐藏共享目录
browseable = no
这样用户访问共享目录后看不到对目录,需要写入目录的绝对URL进行访问
PS2、控制访问源
hosts allow = 192.168.182.
:允许192.168.182.0/24这个网段的IP访问
hosts deny = 192.168.182.12
:禁止192.168.182.12这个IP访问
hosts allow 字段定义允许访问的客户端(同时设置的时候,允许级别高于禁止级别)hosts deny 字段定义禁止访问的客户端EXCPT + IP (除了某IP,常用策略)
例:同案例二方案,同时设置禁止192.168.1.0/24
网段的IP访问
1、修改samba全局配置文件
[xsb]comment = This is xsb directorypath = /xsbvalid users = @xsbwritable = yes///允许写入write list = zhangshan ///写入权限用户 hosts deny = 192.168.182.///禁止网段192.168.182.用户访问browseable = no///隐藏共享目录,需要输入绝对路径才能访问
2、重启samba服务
[root@localhost ~]# systemctl restart smb
3、使用Windows客户端访问共享目录
三、账号映射
samba的用户账号信息是保存在smbpasswd文件中,而且可以访问samba服务器的账号也必须对应一个同名的系统账号。基于这一点,对于黑客而言,只要知道samba服务器的账号,就等于知道了Linux系统账号,只要破解其samba账号密码加以利用就可以攻击samba服务器。基于这样一点,我们可以利用用户账号映射功能来解决。
1、修改samba全局配置文件
[root@localhost ~]# vim /etc/samba/smb.confusername map = /etc/samba/smbusers///在全局配置中加入这一行
2、配置samba共享配置文件
[root@localhost ~]# vim /etc/samba/smb.conf[xsb]comment = This is xsb directorypath = /xsb///共享目录valid users = @xsb///允许用户(销售部)writable = yes///允许写入信息write list = @xsb///写入用户清单(同上)public = no///否公开共享目录
3、创建smbusers文本
[root@localhost ~]# vim /etc/samba/smbusersvillian = zhangshan lisi wangwu zhaoliu///将villian用户的账号映射给张三、李四、王五、赵六
4、创建villian用户账号,给予映射
[root@localhost ~]# smbpasswd -a villianNew SMB password:Retype new SMB password:
5、重启samba服务
[root@localhost ~]# systemctl restart smb
6、使用Windows客户端访问共享目录
拓展1:pdbedit 命令说明
pdbedit
命令用于管理Samba服务的帐户信息数据库,格式为:"pdbedit [选项] 帐户"
第一次把用户信息写入到数据库时需要使用-a参数,以后修改用户密码、删除用户等等操作就不再需要了。
pdbedit -L :查看samba用户pdbedit -a -u user:添加samba用户pdbedit -r -u user:修改samba用户信息pdbedit -x -u user:删除samba用户samba服务数据库的密码也可以用 smbpasswd 命令 操作smbpasswd -a user:添加一个samba用户smbpasswd -d user:禁用一个samba用户smbpasswd -e user:恢复一个samba用户smbpasswd -x user:删除一个samba用户