一、简介
Samba服务程序是一款基于SMB协议并由服务端和客户端组成的开源文件共享软件,实现了Linux和windows系统间的文件共享。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置"NetBIOS over TCP/IP"可跨路由的使用samba所提供的功能。
samba的两个服务及端口
1.nmbd 主要利用udp 137和138端口负责名称解析的服务。
2.smbd 这个 进程 的主要功能就是用来管理 SAMBA 主机分享的目录、文件和打印机等等。 主要利用 TCP 协定来传输资料,使用端口为 139 及 445。
Samba的套件
1.samba:这个套件主要包含了 SAMBA 的主要 daemon档案 ( smbd 及 nmbd )、 SAMBA 的文件档 ( document )、以及其它与 SAMBA 相关的logrotate 设定文件及开机预设选项档案等;
2.samba-common:这个套件则主要提供了 SAMBA 的主要设定档(smb.conf) 、 smb.conf 语法检验的测试程序 ( testparm )等等;
3.samba-client:这个套件则提供了当 Linux 做为SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 档案格式的执行档 smbmount等等。
一、安装配置
# yum install samba
关闭:systemctl stop iptables
setenforce 0
或者将/etc/selinux/config下SELINUX=enforcing改为SELINUX=disabled
pam password change = no
passwd chat =**NEW*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *successfully*
passwd program = LANG=en_US/usr/bin/passwd %u
unix password sync = yes
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd
若/etc/samba/下没有smbpasswd,会自动创建。
配置文件相关参数(不同系统稍有差别):红色字体为解释
[global] |
#全局参数。 |
|
workgroup = MYGROUP |
#工作组名称。 |
|
server string = Samba Server Version %v |
#服务器介绍信息,参数%v为显示SMB版本号。 |
|
log file = /var/log/samba/log.%m |
#定义日志文件存放位置与名称,参数%m为来访的主机名。 |
|
max log size = 50 |
#定义日志文件最大容量为50Kb。 |
|
security = user |
#安全验证的方式,总共有4种。 |
|
#share:来访主机无需验证口令,更加方便,但安全性很差。 |
||
#user:需由SMB服务验证来访主机提供的口令后才可建立访问,更加的安全。 |
||
#server:使用独立的远程主机验证来访主机提供的口令(集中管理帐号)。 |
||
#domain:使用PDC来完成验证 |
||
pam password change = no |
||
passwd chat = **NEW*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *successfully* |
||
passwd program = LANG=en_US/usr/bin/passwd %u |
||
unix password sync = yes |
||
passdb backend = smbpasswd |
#定义用户后台的类型,共有3种。 |
|
#smbpasswd:使用SMB服务的smbpasswd命令给系统用户设置SMB密码。 |
||
#tdbsam:创建数据库文件并使用pdbedit建立SMB独立的用户。 |
||
#ldapsam:基于LDAP服务进行帐户验证。 |
||
smb passwd file = /etc/samba/smbpasswd #共享目录路径 |
||
load printers = yes |
#设置是否当Samba服务启动时共享打印机设备。 |
|
cups options = raw |
#打印机的选项 |
|
[homes] |
#共享参数 |
|
comment = Home Directories |
#描述信息 |
|
browseable = no |
#指定共享是否在"网上邻居"中可见。 |
|
writable = yes |
#定义是否可写入操作,与"read only"相反。 |
|
[printers] |
#打印机共享参数 |
|
comment = All Printers |
||
path = /var/spool/samba |
#共享文件的实际路径(重要)。 |
|
browseable = no |
||
guest ok = no |
#是否所有人可见,等同于"public"参数。 |
|
writable = no |
||
printable = yes |
||
[database] |
||
comment = Do not arbitrarily modify the database file | ||
path = /database | ||
public = no | ||
writable = yes |
||
在根目录下创建database目录 保存smb.conf文件后重启启动SMB服务: #systemctl restart smb
|
#useradd smbuser
#smbpasswd –a smbuser 添加用户并设置密码
smbpasswd(选项)(参数)
选项
-a:向smbpasswd文件中添加用户;
-c:指定samba的配置文件;
-x:从smbpasswd文件中删除用户;
-d:在smbpasswd文件中禁用指定的用户;
-e:在smbpasswd文件中激活指定的用户;
-n:将指定的用户的密码置空。
4.在Windows下验证:
登录进来可以看到刚刚所创建的database目录和用户的家目录。
在smbuser下新建一个文件
然后可以在服务器上用户家目录可以看到刚刚所创建的文件
6.在linux系统上验证共享结果:
#yum install –y cifs-utils
# mkdir /database
# vim /etc/fstab
//192.168.1.1222/database /database cifs username=smbuser,password=XXX,sec=ntlmssp,rw 0 0
# mount –a
然后查看挂载目录
服务器上创建111文件:
若提示权限不足,把/database目录权限修改为如下即可:
注意所属主与所属组
在客户端查看:
至此实现了Linux系统之间分享数据。