一、Samba介绍
Samba是在Linux和Unix系统上实现SMB协议的一个免费软件 ,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享。
Samba由两个主要程序组成,它们是smbd和nmbd。这两个守护进程在服务器启动到停止期间持续运行,功能各异。Smbd和nmbd使用的全部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享,共享输出给谁及如何进行输出。
Samba提供了基于CIFS的四个服务:文件和打印服务、授权与被授权、名称解析、浏览服务。前两项服务由smbd提供,后两项服务则由nmbd提供。 简单地说,smbd进程的作用是处理到来的SMB软件包,为使用该软件包的资源与Linux进行协商,nmbd进程使主机(或工作站)能浏览Linux服务器。
二、Samba服务的安装 与配置
1、Samba服务的安装:
使用系统yum安装,命令:yum -y install samba samba-client
2、启动Samba服务:
systemctl start smb nmb
3、查看samba服务进程:
ps -ef | grep -E 'smb|nmb'
4、查看Samba应用服务端口
netstat -tunlp | grep E 'smbd|nmbd'
提示 没有安装netstat服务,使用yum安装netstat服务:
yum -y install net-tools
重新查看应用服务端口
smbd应用进程主要监听139和445端口,nmbd应用进程主要监听137与 138端口。
5、Samba服务配置--查看Samba配置文件:
Samba文件共享默认配置文件存放于 /etc/samba/smb.conf下,用于配置Samba服务内容 。
cat /etc/samba/smb.conf
[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
6、Samba配置文件解释说明
全局参数[global]
config file=/usr/local/samba/lib/smb.conf.%m
说明:config file可以让你使用另一个配置文件来覆盖缺省的配置文件。如果文件 不存在,则该项无效。这个参数很有用,可以使得samba配置更灵活,可以让一台samba服务器模拟多台不同配置的服务器。比如,你想让PC1(主机名)这台电脑在访问Samba Server时使用它自己的配置文件,那么先在/etc/samba/host/下为PC1配置一个名为smb.conf.pc1的文件,然后在smb.conf中加入:config file=/etc/samba/host/smb.conf.%m。这样当PC1请求连接Samba Server时,smb.conf.%m就被替换成smb.conf.pc1。这样,对于PC1来说,它所使用的Samba服务就是由smb.conf.pc1定义的,而其他机器访问Samba Server则还是应用smb.conf。
workgroup=SAMBA
说明:设定Samba Server 所要加入的工作组或者域
Security=user
说明:设置用户访问 Samba Server的验证方式,一共有四种验证方式。
(1)share:用户访问Samba server 不需要提供用户名和口令,安全性能较低。
(2)user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在Samba Server中建立。
(3)server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
(4)domain:域安全级别,使用主域控制器(PDC)来完成认证。
netbios name=smbserver
说明:设置samba server 的netbios名称,如果不填,默认使用该服务器的DNS名称第一部分。
interfaces=lo eth0 192.168.12.2/24 192.168.13.2/24
说明:Samba Server 监听那些网卡,可以写网卡名或者网卡的IP地址。
hosts allow=192.168.1.1 192.168.10.1
说明:表示允许连到Samba Server的客户端,多个参数可用空格隔开。hosts deny与hosts allow相反。
max connections =0
说明:max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。
deadtime=0
说明:deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表samba server不自动断开任何连接。
time server=yes/no
说明:time server 用来设置让nmdb成为windows客户端的时间服务器。
log file=/var/log/samba/log.%m
说明:设置samba server日志文件存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每个访问samba server的机器单独记录一个日志文件。
max log size=50
说明:设置samba server日志文件的最大容量,单位为KB,0代表不限制。
passdb backend=tdbsam
说明:
passdb backend就是用户后台的意思。目前有三种后台;smbpasswd;tbdsam;ldapsam。sam的简写:security account manager(安全账号管理)。
(1)smbpasswd:使用smb自己的工具smbpasswd来个系统用户设置密码,客户端使用这个密码来访问samba资源。
(2)tdbsam:该方式使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd -a来建立samba用户,不过要建立的用samba用户必须显示系统用户。
(3)ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend=ldapsam:ldap://LDAP Server”
encrypt passwords=yes/no
说明:是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。
smb passwd file=/etc/samba/smbpasswd
说明:用来定义samba用户的密码文件。smbpasswd文件如果没有就要手工新建。
dns proxy=yes/no
说明:设置samba server 是否开启dns代理服务
load printers=yes/no
说明:设置是否在启动samba时就共享打印机
printcap name=cups
说明:设置共享打印机的配置文件
printing =cups
说明:设置samba共享打印机的类型。现在支持的打印系统有:bsd,sysv,plp,lprng,aix,hpux,qnx
共享参数[共享名]
comment=任意字符串
说明:comment是对该共享的描述,可以是任意字符串。
path=共享目录路径
说明:path用来指定共享目录的路径,可以用%u,%m这样的宏来代替路径里的unix用户和客户机的netbios名,用宏表示主要用户[home]共享域。
browseable=yes/no
说明:browseable用来指定该共享是否可以浏览
writeable=yes/no
说明:writeable用来指定该共享路径是否可写
available=yes/no
说明:available用来指定该共享路径是否可用
admin user=该共享的管理者
说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。
valid users=允许访问该共享的用户
说明:valid users用来指定允许访问该共享资源的用户。
invalid users=禁止访问该共享的用户
说明:invalid users用来指定不允许访问该共享资料的用户。
write list=允许写入该共享的用户
public=yes/no
说明:public用来指定该共享是否允许guest账户访问。
guest ok=yes/no
说明:意义同public
三、Samba服务的安装 与配置
1、服务规划
系统分区,单独划分一个/storage的分区,分区下新建两个文件夹logger和shared;
logger文件夹/storage/logger下对应的管理员账号为logadmin,用户账号为loguser;
shared文件下/storage/shared下对应的管理员账号为admin,用户账号为shared;
2、创建文件夹
mkdir /storage
cd /storage
mkdir logger shared
ls
3、创建用户
useradd -s /sbin/nologin logadmin
useradd -s /sbin/noligin admin
useradd -g logadmin -s /sbin/nologin loguser
useradd -g admin -s /sbin/nologin shared
cat /etc/passwd
4、建立Samba用户
smbpasswd -a logadmin
smbpasswd -a loguser
smbpasswd -a admin
smbpasswd -a shared
5、更改目录属性
chown logadmin.logadmin logger
chown admin.admin shared
chmod -R 777 logger
chmod -R 777 shared
6、配置Samba服务
[[email protected] storage]# vi /etc/samba/smb.conf
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA #工作组
server string=Samba Server Version %v
netbios name=Linuxidc-Server #设置netbios名称
log file=/var/log/samba/%m.log #设置日志文件路径
max log size=10240 #log日志最大容量
security = user #设置Samba Server验证方式
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
[logger]
commnet=Logs Directories #对共享的描述
path=/storage/logger/ #共享路径
public=no #不允许guest访问
admin users=logadmin #该共享的管理者
browseable=yes #允许浏览
write=yes #允许写入
create mask=0777 #文件权限
directory mask=0777
force directory mode=0777
force create mode=0777
[shared]
comment=Shared Directories #对共享的描述
path=/storage/shared/ #共享路径
public=no #不允许guest访问
admin users=admin #该共享的管理者
valid [email protected] #可以访问的用户组、用户
browseable=yes #允许浏览
writable=yes #允许写入
create mask=0777 #文件权限
directory mask=0777
force directory mode=0777
force create mode=0777
修改完samba配置文件后,需要重启Samba服务配置才能生效。
四、Samba服务测试
1、使用windows系统访问测试:
在windows系统中,输入samba服务器的IP地址,:
查看服务器的IP地址:
ip addr
windows(windows 10)系统连接Samba服务器:
\\192.168.37.132
2、测试创建文件
拷贝客户机文件到Samba共享文件夹下,测试文件拷贝是否成功。
原文地址:http://blog.51cto.com/5001660/2119934