SAMBA服务
SAMBA简介
Samba是linux和unix系统上实现SMB/CIFS协议的一组软件包,SMB/CIFS协议是Windows网络文件和打印共享的基础,负责处理和使用远程文件和资源。由于Samba的存在,使得Windows和Linux可以集成并互相通信,免去了之前必须使用FTP的麻烦,NFS 是架构在 RPC Server 上面一样, SAMBA 是架构在 NetBIOS (Network Basic Input/Output System, NetBIOS) 这个通讯协议上面所开发出来的。
1991 年澳大利亚大学生Andrew Tridgell 研发,最初是为了代替PC-NFS而开发, 通过Samba小组 的共同努力,现在已经成为了一个非常强大的软件包,Samba现已支持Linux、UNIX、Windows等平台。
Samba监听端口有:
TCP | UDP |
139 | 137 |
445 | 138 |
SAMBA软件包
SAMBA软件由3个软件包组成
- Samba(服务端软件包)
包含了samba的主要daemon档案(smbd及nmbd)、samba的文件档(document)、以及其他与samba相关的logrotate设定文件及开机预设选项档案等。 - Samba-common(公用软件包)
主要提供了SAMBA的主要设定档(smb.conf)、smb.conf语法检验的测试程序(testparm)等。 - Samba-client(客户端软件包)
提供了当linux作为SAMBA Client端时,所需要的工具指令,例如挂载SAMBA档案格式的执行档smbmount等
SAMBA配置文件
/etc/samba/smb.conf
这是 Samba 的主要配置文件,基本上,咱们的 Samba 就仅有这个配置文件而已,且这个配置文件本身就是很详细的说明文件了,请用 vim 去查阅它吧!主要的设定项目分为服务器的相关设定 (global),如工作组、NetBIOS 名称与密码等级等, 以及分享的目录等相关设定,如实际目录、分享资源名称与权限等等两大部分。
/etc/sysconfig/samba
提供启动 smbd, nmbd 时,你还想要加入的相关服务参数。
/etc/samba/smbusers
由于 Windows 与 Linux 在管理员与访客的账号名称不一致,例如 administrator (windows) 及 root(linux), 为了对应这两者之间的账号关系,可使用这个档案来设定
/var/lib/samba/private/{passdb.tdb,secrets.tdb}
管理 Samba 的用户账号/密码时,会用到的数据库档案;
/etc/samba/lmhosts
这个档案的主要目的在对应NetBIOS name 与该主机名称的 IP ,事实上,他有点像是 /etc/hosts 的功能!只不过这个lmhosts 对应的主机名称是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!由于目前SAMBA 的功能越来越强大,所以通常只要您一启动 SAMBA 时,他就能自己捉到 LAN里面的相关计算机的 NetBIOS name 对应 IP 的信息,因此,这个档案通常可以不用设定了。
/etc/samba/smbpasswd
这个档案预设并不存在。它是SAMBA 预设的使用者密码对应表。当设定的 SAMBA 服务器是较为严密的,需要使用者输入账号与密码后才能登入的状态时,使用者的密码预设就是放置在这里( 当然啰,您可以自行在 smb.conf 里面设定密码放置的地方及密码文件名,不过,我们这里都以预设的状态来说明) 。比较需要注意的是,这个档案因为包含了使用者的密码,所以,当然权限方面要较为注意啦!这个档案的拥有者需要是root ,且权限设定为 600 才行。
配置安装Samba服务
安装Samba服务
[root@anes ~]# yum -y install samba
已安装:
samba.x86_64 0:4.6.2-8.el7
作为依赖被安装:
samba-common-tools.x86_64 0:4.6.2-8.el7
samba-libs.x86_64 0:4.6.2-8.el7
配置防火墙
[root@anes ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent \\--permanent永久生效
success
[root@anes ~]# firewall-cmd --reload \\重新载入
success
[root@anes ~]# systemctl restart firewalld.service \\重启防火墙
开放SAMBA特定端口
[root@anes ~]# firewall-cmd --zone=public --add-port=139/tcp --permanent \\ 开放139端口,永久生效
success
[root@anes ~]# firewall-cmd --zone=public --add-port=445/tcp --permanent
success
[root@anes ~]# firewall-cmd --zone=public --add-port=137/udp --permanent
success
[root@anes ~]# firewall-cmd --zone=public --add-port=138/udp --permanent
success
[root@anes ~]# firewall-cmd --reload \\重新加载
success
[root@anes ~]# systemctl restart firewalld.service \\重启服务
实例一
搭建匿名用户共享服务器
创建共享目录
[root@anes ~]# mkdir -p /opt/test
[root@anes ~]# chmod 777 -R /opt/test/
配置共享服务器
[root@anes ~]# vim /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
map to guest = Bad User \\匿名用户
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[samba-shard]
comment = hello,welcome \\说明
path = /opt/test \\共享文件的路径
browseable = yes \\共享文件可见
guest ok =yes \\所有人都能访问
writable = yes \\读写权限
public = yes \\开启匿名访问
检查
[root@anes ~]# testparm \\检查文件是否有误
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[samba-shard]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[root@anes ~]# systemctl restart smb \\重启服务
[root@anes ~]# smbclient -L 192.168.220.137 -U 'Bad user' \\查看共享目录,不用输入密码,直接回车
Enter SAMBA\Bad user's password:
OS=[Windows 6.1] Server=[Samba 4.6.2]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
samba-shard Disk hello,welcome
IPC$ IPC IPC Service (Samba 4.6.2)
实例二
搭建用户认证共享服务器
映射共享目录,创建用户test
[root@anes ~]# useradd -M test
为test用户创建smb共享密码
[root@anes ~]# useradd -M test
[root@anes ~]# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test.
映射test为共享用户
[root@anes ~]# echo 'test
> share' > /etc/samba/smbusers
[root@anes ~]# vim /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
username map = /etc/samba/smbusers
创建一个共享目录test
[root@anes ~]# mkdir -p /opt/test
[root@anes ~]# chmod 777 -R /opt/test/
[root@anes ~]# vim /etc/samba/smb.conf
[test]
comment = test
path = /opt/test
browseable = yes
guest ok = yes
writable = yes
write list = share
public = yes
检查
[root@anes ~]# systemctl restart smb \\重启服务
[root@anes ~]# smbclient -L 192.168.220.137 -U 'test'
Enter SAMBA\test's password:
Domain=[ANES] OS=[Windows 6.1] Server=[Samba 4.6.2]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
samba-shard Disk hello,welcome
IPC$ IPC IPC Service (Samba 4.6.2)
test Disk test