一、Samba服务概述
- Samba概念
- Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。
- SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
- Samba作用
分享档案与打印机服务;
提供使用者登入 SAMBA 主机时的身份认证,以提供不同身份者的个别数据;
进行 Windows 网络上的主机名称解析 (NetBIOS name)
进行装置的分享 ( 例如 Zip, CDROM… )
二、Samba软件包及配置文件
- 软件包:samba
- samba服务器提供smbd,nmbd两个服务程序。smbd负责为客户机提供共享资源的访问,nmbd负责提供NetBIOS协议的主机名称解析,以便Windows网络中的主机进行查询服务。
- smbd程序负责监听TCP协议的139端口,445端口。nmbd负责监听UDP协议的137,138端口。
- 配置文件:/etc/samba/smb.conf
三、Samba连接实验
给客户机分配一个IP地址,使客户机能连接服务器
[root@localhost /]# yum -y install dhcp
[root@localhost /]# vim /etc/dhcp/dhcpd.conf
# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers 8.8.8.8;
subnet 192.168.195.0 netmask 255.255.255.0 {
range 192.168.195.128 192.168.195.200;
option routers 192.169.195.1;
}
[root@localhost /]# setenforce 0
[root@localhost /]# iptables -F
[root@localhost /]# systemctl start dhcpd
安装samba服务,并配置
[root@localhost /]# yum -y install samba
[root@localhost /]# cd /etc/samba
[root@localhost samba]# ls
lmhosts smb.conf smb.conf.example
[root@localhost samba]# mv smb.conf smb.conf.bak
[root@localhost samba]# ls
lmhosts smb.conf.bak smb.conf.example
[root@localhost samba]# grep -v "#" smb.conf.bak > smb.conf #备份一份配置文件
[root@localhost samba]# ls
lmhosts smb.conf smb.conf.bak smb.conf.example
[root@localhost samba]# vim smb.conf
1 [global]
2 workgroup = SAMBA
3 security = user
4 map to guest = Bad User ##此处添加为匿名登录
5 passdb backend = tdbsam
7 printing = cups
8 printcap name = cups
9 load printers = yes
10 cups options = raw
11 ......
32 [share]
33 path=/opt/aaa ##文件位置
34 public=yes ##公共 权限
35 browseable=yes ##读权限
36 writable=yes ##写权限
37 create mask=0644 ##上传权限
38 directory mask=0755
[root@localhost samba]# cd /opt
[root@localhost opt]# ls
aaa a.txt error.txt first.sh rh sum.sh test01.sh user.txt
[root@localhost opt]# chmod 777 aaa ### 给 权限
[root@localhost opt]# ll
总用量 20
drwxrwxrwx. 2 root root 6 7月 16 19:10 aaa
[root@localhost opt]# systemctl start dsmb ###开启服务
[root@localhost opt]# cd aaa/
[root@localhost aaa]# ls
123.txt
[root@localhost aaa]# ll
总用量 4
-rw-r--r--. 1 nobody nobody 19 7月 16 19:31 123.txt ##匿名
添加用户
[root@localhost samba]# vim 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
......
[test]
path=/opt/test
browseable=yes
writable=yes
create mask=0644
directory mask=0755
valid users=zhangsan, lisi ##仅有zhangsan lisi可以登录
write list=zhangsan ##仅有张三可以写权限
hosts deny=192.168.100. 10.0.0. ##不允许这两个网段的登录
[root@localhost samba]# mkdir /opt/test
[root@localhost samba]# chmod 777 /opt/test
[root@localhost samba]# systemctl restart smb
访问Windows
即可共享文件
[root@localhost samba]# smbclient -L 192.168.195.129 #Windows获得的主机ip
Enter SAMBA\root's password:
[root@localhost samba]# mount.cifs //192.168.195.129/abc /mnt ##将Windows下的一个abc文件挂载到Linux的mn目录下
[root@localhost samba]# ls /mnt ## 可以查看复制过来的文件
[root@localhost samba]# cp abc /opt ## 复制文件到opt目录下即可