Samba 最先在Linux和Windous两个平台之间架起一座桥梁,正式由于Samba的出现,我们可以在Linux系统和Windows系统之间互相通信,比如拷贝文件、实现不同操作系统之间的资源共享等等,我们可以将其架设成一个功能非常强大的文件共享服务器,也可以将其架设成打印服务器提供本地和远程联机打印。
文件和打印机共享
:文件和打印机共享是Samba的主要功能,SMB 进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问;身份验证和权限设置
:smbd服务支持user mode 和domain mode 等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机;名称解析
:Samaba 通过nmbd 服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址;浏览服务
:局域网中,Samba 服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问Windows网上邻居时,会提供浏览列表,显示共享目录、打印机等资源;[root@localhost ~]# yum install -y samba
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
[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 = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$] ///共享打印机服务
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[root@localhost ~]# systemctl start smb
[root@localhost ~]# mkdir /share ///创建共享目录
[root@localhost ~]# chmod 777 /share ///给予/share 777 可读可写可执行权限
[root@localhost ~]# touch villian.txt ///共享目录写入测试文件
[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 ///可浏览
[root@localhost ~]# systemctl restart smb
创建销售部共享目录。通过用户名和密码共享文件,把/xsb 目录共享出去,只有知道用户名和密码的销售部同事才可以查看这个共享目录,其他部门无法访问
[global]
workgroup = SAMBA
security = user ///修改为user,需要使用用户名访问
passdb backend = smbpasswd ///密码文本名
smb passwd file = /etc/samba/smbpasswd ///密码文本存放位置
[root@localhost ~]# systemctl restart smb
[root@localhost ~]# ls /etc/samba/
lmhosts smb.conf smb.conf.example smbpasswd ///smbpassword密码文本自动生成
[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 zhangshan
uid=1004(zhangshan) gid=1004(xsb) 组=1004(xsb)
[root@localhost ~]# smbpasswd -a zhangshan ///将销售部张三用户添加至samba中,并设置密码
New SMB password:
Retype new SMB password:
Added user zhangshan.
[root@localhost ~]# smbpasswd -a wangwu
New 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:
[root@localhost ~]# mkdir /xsb
[root@localhost ~]# chmod 777 /xsb
[root@localhost ~]# vim xsb.txt
hello world
[xsb]
comment = This is xsb directory
path = /xsb
valid users = @xsb
[root@localhost ~]# systemctl restart smb
browseable = no
这样用户访问共享目录后看不到对目录,需要写入目录的绝对URL进行访问
hosts allow = 192.168.182.
:允许192.168.182.0/24这个网段的IP访问
hosts deny = 192.168.182.12
:禁止192.168.182.12这个IP访问
例:同案例二方案,同时设置禁止192.168.1.0/24
网段的IP访问
[xsb]
comment = This is xsb directory
path = /xsb
valid users = @xsb
writable = yes ///允许写入
write list = zhangshan ///写入权限用户
hosts deny = 192.168.182. ///禁止网段192.168.182.用户访问
browseable = no ///隐藏共享目录,需要输入绝对路径才能访问
[root@localhost ~]# systemctl restart smb
samba的用户账号信息是保存在smbpasswd文件中,而且可以访问samba服务器的账号也必须对应一个同名的系统账号。基于这一点,对于黑客而言,只要知道samba服务器的账号,就等于知道了Linux系统账号,只要破解其samba账号密码加以利用就可以攻击samba服务器。基于这样一点,我们可以利用用户账号映射功能来解决。
[root@localhost ~]# vim /etc/samba/smb.conf
username map = /etc/samba/smbusers ///在全局配置中加入这一行
[root@localhost ~]# vim /etc/samba/smb.conf
[xsb]
comment = This is xsb directory
path = /xsb ///共享目录
valid users = @xsb ///允许用户(销售部)
writable = yes ///允许写入信息
write list = @xsb ///写入用户清单(同上)
public = no ///否公开共享目录
[root@localhost ~]# vim /etc/samba/smbusers
villian = zhangshan lisi wangwu zhaoliu ///将villian用户的账号映射给张三、李四、王五、赵六
[root@localhost ~]# smbpasswd -a villian
New SMB password:
Retype new SMB password:
[root@localhost ~]# systemctl restart smb
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用户