一、samba概述
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
在此之前我们已经了解了NFS,NFS与samba一样,也是在网络中实现文件共享的一种实现,但不幸的是,其不支持windows平台,而这次要提到的samba是能够在任何支持SMB协议的主机之间共享文件的一种实现,当然也包括windows。
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB协议是C/S型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
1.2 Samba监听端口
TCP | UDP |
---|---|
139 | 137 |
445 | 138 |
tcp端口相对应的服务是smbd服务,其作用是提供对服务器中文件、打印资源的共享访问。
udp端口相对应的服务是nmbd服务,其作用是提供基于NetBIOS主机名称的解析。
1.3 samba进程
进程 | 对应 |
---|---|
nmbd | 对应netbios |
smbd | 对应cifs协议 |
winbindd + ldap | 对应Windows AD活动目录 |
1.4 samba用户
帐号 | 密码 |
---|---|
都是系统用户/etc/passwd | Samba服务自有密码文件通过smbpasswd -a USERNAME命令设置 |
//smbpasswd命令:
-a Sys_User //添加系统用户为samba用户并为其设置密码
-d //禁用用户帐号
-e //启用用户帐号
-x //删除用户帐号
[root@localhost ~]# yum -y install samba-*
[root@localhost ~]# useradd tom
[root@localhost ~]# smbpasswd -a tom
New SMB password:
Retype new SMB password:
Added user tom.
1.5 samba配置文件
/etc/samba/smb.conf(主配置文件)
samba三大组成 | 作用 |
---|---|
[global] | 全局配置,此处的设置项对整个samba服务器都有效 |
[homes] | 宿主目录共享设置,此处用来设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中 |
[printers] | 打印机共享设置 |
二、samba配置实例
开启一台centos7.6,,一台win10,均设置DHCP自动获取ip地址,centos作为服务器,共享文件或目录,IP地址为192.168.179.131
[root@localhost opt]# setenforce 0
[root@localhost opt]# systemctl stop firewalld
[root@localhost opt]# yum -y install samba* #安装所有的包
[root@localhost opt]# yum -y install samba-client #安装客户端包
[root@localhost opt]# useradd -M zhang
New SMB password:
Retype new SMB password:
Added user zhang.
[root@localhost opt]# echo 'zhang = share' > /etc/samba/smbusers
[root@localhost samba]# ls
lmhosts smb.conf smb.conf.example smbusers
[root@localhost samba]# mv smbusers .smbusers #隐藏映射映射文件
[root@localhost samba]# ls
lmhosts smb.conf smb.conf.example
[root@localhost samba]# vim smb.conf
[global]
workgroup = SAMBA
security = user
username map = /etc/samba/.smbusers #添加此行内容
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[runtime]
comment = runtime
browseable = yes
writable = no
valid users = jerry,zhangshan
write list = zhangshan
path = /opt
[root@localhost samba]# mkdir /opt/runtime
[root@localhost samba]# chown -R zhang.zhang /opt/runtime/
[root@localhost samba]# vim smb.conf
[global]
workgroup = SAMBA
security = user
username map = /etc/samba/.smbusers
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[runtime]
comment = runtime
browseable = yes
writable = no
valid users = zhang
write list = zhang
path = /opt/runtime #将opt目录下的runtime设为共享目录
[root@localhost samba]# systemctl start smb nmb
[root@localhost samba]# systemctl enable smb
打开win10,在快速访问例输入服务器网址,输入用户名和密码
在这里可以看到共享的目录
在共享目录下新建cllt.txt文件
打开centos服务器,可以看到runtime目录下存在cllttxt文件,实验成功