Linux 服务器搭建之Samba服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 服务器搭建之Samba服务相关的知识,希望对你有一定的参考价值。

Linux 服务器搭建之Samba服务

一、Samba服务基础

Samba是著名的开源软件项目之一,它在Linux/UNIX系统中实现了微软的SMB/CIFS网络协议,从而使得跨平台的文件共享变得更加容易。在部署Windowslinux/UNIX混合平台的企业环境时,选用Samba可以很好地解决不同系统之间的文件互访问题。


1Samba软件的组成

1.1)Samba软件包的构成

RHEL6.5系统的DVD安装光盘中可以找到与Samba相关的几个软件包,主要包括服务端软件Samba、客户端软件samba-client,用于提供服务端和客户端程序的公共组件samba-common

大部分软件包已经随RHEL6.5系统默认安装好了,用户可以查询系统中samba相关软件包的安装情况。

[[email protected] ~]# rpm -qa |  grep "^samba"
samba-client-3.6.9-164.el6.x86_64       ……//samba服务器软件包
samba-common-3.6.9-164.el6.x86_64        ……//samba通用工具和库文件
samba-3.6.9-164.el6.x86_64                ……//samba提供服务器程序文件
samba-winbind-3.6.9-164.el6.x86_64         ……//它允许Linux/UNIX系统利用Windows NT的用户帐号信息。
samba4-libs-4.0.0-58.el6.rc4.x86_64          ……//samba相关依赖包
samba-winbind-clients-3.6.9-164.el6.x86_64

只需要从RHEL6.5光盘中找到安装包文件samba-3.6.9-164.elb.x86_64.rpm并进行安装即可。


1.2)、Samba服务的程序组件

Samba服务器提供smbdnmbd两个服务程序,分别完成不同的功能。其中,smbd负责为客户机提供服务器中共享资源(目录和文件等)的访问;nmbd负责提供基于NetBios协议的主机名称解析,以便为Windows网络中的主机进行查询服务。

安装好samba软件包以后,在RHEL6.5系统中会添加名为smbnmb的标准系统服务,管理员可以通过service工具来控制Samba服务的启动与终止。

[[email protected] ~]# service smb start
启动 SMB 服务:                                            [确定]
[[email protected] ~]# service nmb start
启动 NMB 服务:                                            [确定]


使用netstat命令可以验证服务进程状态,其中smbd程序负责监听TCP协议的139端口(SMB协议)、445端口(CIFS协议),而nmbd服务程序负责监听UDP协议的137~138端口(NetBIOS协议)。


2、主配置文件smb.conf

Samba服务的配置文件位于/etc/samba/目录中,其中smb.conf是主配置文件。在smb.conf文件中,以“#”号开始的行表示注释性的文件,以“;”开始的行表示是位置样例。在配置共享文件夹时,用户可以参考文件中提供的样例行进行设置。删除注释行、样例行及空行以外的内容,才是Samba服务器的有效配置。例如,使用grep命令可以过滤出smb.conf文件中的有效配置。

[[email protected] ~]# grep -v "#" /etc/samba/smb.conf | grep -v "^;" | grep -v "^$"
 [global]
      workgroup = MYGROUP
      server string = Samba Server Version %v   
      log file = /var/log/samba/log.%m
      max log size = 50
security = user
      passdb backend = tdbsam
      load printers = yes
      cups options = raw
[homes]
      comment = Home Directories
      browseable = no
      writable = yes
[printers]
      comment = All Printers
      path = /var/spool/samba
      browseable = no
      guest ok = no
      writable = no
      printable = yes


从以上内容可以看出,smb.conf文件中的配置内容默认包括以下三部分。


[global] 全局设置:这部分配置项的内容对整个Samba服务器都有效。


[homes] 宿主目录共享设置:设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己同名的共享目录时,通过验证后将会自动映射到该用户的宿主文件夹中。


[printers] 打印机共享位置:如果需要共享打印机设备,可以在这部分进行配置。

若需要在smb.conf文件中设置新的共享文件夹,只需要增加一段如“[myshare]”开始的共享设置即可,其中“myshare”为用户自定义的共享名。新的共享文件夹设置可以参考“[homes]”和“[printers]”部分内容。

Samba服务器的常见配置项及含义说明

配置项

设置服务器所在的工作组名称。

server string

设置服务器的说明文字

security

设置服务器的安全级别,可设为以下四个值中的一个:share(可匿名访问)、user(需由本服务器验证用户名及密码)、server(需指定另一台服务器来验证用户名及密码)、domain(由Windows域控制器验证用户名及密码)

log file

设置Samba服务器的日志文件,默认设置为“/var/log/samba/log.%m”,表示将日志文件保存到/var/log/samba/目录中,按每个客户机建立一个日志文件,其中“%m”变量表示客户端主机名或IP地址

comment

设置对应共享目录的注释、说明信息

path

设置对应共享目录在服务器中的文件夹路径

browseable

设置该共享目录在“网上邻居”中是否可见,设置为no时相当于影藏共享目录

guest ok

设置是否所有人都可以访问共享目录,与“public”配置项的作用相同

writable

设置该共享目录是否可写,与“read only”配置项的作用相反

passwd backend

设置共享账户文件的类型,默认使用tdbsamTDB数据库文件)。若网络内拥有LDAP目录认证,这里可以改用ldapsam数据库文件;另外,若要兼容旧版的Samba密码文件,也可以将类型设为smbpasswd

Samba服务器提供了一个配置文件检查工具—testparm程序,使用testparm工具可以对smb.conf配置文件的真确性进行检查。


二、构建文件共享服务

1、构建可匿名的共享

可匿名访问的共享使用于公开的资源分享,一般只建议提供只读访问。由于匿名共享不需要验证用户名和密码(或允许提供任意用户名、密码)就可访问,在安全性要求不高的情况下,可以非常方便、快捷地与其他主机共享资源。

设置匿名共享文件夹时,在主配置文件smb.conf中主要调整两个地方即可:其一,可以将默认的安全级别修改为share;其二,添加一段共享目录配置。其他配置项根据实际需要进行更改。

      例如,若要将本地挂载的光盘目录/media/发布为共享文件夹,共享名为rhel6,可以参照以下步骤进行设置。

[[email protected] ~]# mount /dev/cdrom /media/      ……//挂载rhel6.5的dvd光盘
[[email protected] ~]# vim /etc/samba/smb.conf
[global]
            workgroup = MYGROUP          ……//使用Windows主机的默认工作组
      security = share                   ……//默认允许匿名访问
……//省略部分内容
[rhel6]                                  ……//用户访问共享时显示的文件名
      comment = RHEL 6.5 DVD directory   ……//注释内容,随便写
      path = /media/                     ……//指定真实共享目录存储的位置
      public = yes                       ……//是否为公共的
      read only = yes                    ……//只读
[[email protected] ~]# service smb reload
重新载入 smb.conf 文件:                                   [确定]


配置完毕后,就可以从Windows客户机或Linux客户机中浏览并匿名访问此共享了。

注意需要关闭iptablesSelinux

 

2、构建需要用户验证的共享

匿名共享虽然用起来非常方便,但因为任何人都可以访问到共享的文件数据,在某些时候可能会导致信息的泄露。

设置用户验证的共享文件夹时,在主配置文件smbl.conf中同样需要调整两个地方:其一,将默认的安全级别修改为share;其二,添加共享目录配置,指定用户权限。在此之前,还需要先创建授权的共享账户。

2.1)、建立Samba用户数据库

为了区别于Linux主机中的系统用户,通常将用于访问Samba共享资源的用户成为共享用户。Samba服务器使用独立的共享账号数据库文件,其中的账号名称必须有与它同名的系统用户相对应,以便主机对共享访问的读写权限进行控制;但共享用户的密码时额外设置的,可以与系统用户的密码不一样。

Samba共享用户的账号数据库文件默认位于/var/lib/samba/private/passdb.tdb,是一个经过加密的文件,其中保存了Samba用户的账号名称、登录密码、账号可用状态等信息。使用pdbedit工具可以对共享用户进行管理。

[[email protected] ~]# useradd vina            ……//先添加系统用户vina
[[email protected] ~]# pdbedit -a -u vina      ……//再添加共享用户vina
new password:                           ……//设置共享用户vina的密码
retype new password:                    ……//重复输入密码进行确认
Unix username:        vina
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-3721989042-1553083320-1330393282-1000
Primary Group SID:    S-1-5-21-3721989042-1553083320-1330393282-513
……//省略部分内容


当指定的Samba用户不再需要使用时,可以通过pdbedit工具进行删除,只要结合“-x”选项并指定Samba用户的名称即可,“-L”选项用来列出所有Samba用户,“-v”选项可以输出更详细的内容。

2.2)、设置用户访问授权

若要使用用户验证的Samba共享,应将security安全级别提升为“user”。共享目录的用户授权设置主要由“valid users”、“write list”配置项指定。当需要授权多个共享用户时,以逗号或空格进行分隔。如果需要授权一个用户组,可以使用“@组名”的形式,但需要为组内的每个系统用户都创建对应的Samba共享用户。

例如,若要将本地目录/opt/mytools/发布为共享文件夹,共享名为tools,要求只有共享用户vankohunter能够访问,其中hunter用户具有写入权限,可以参照以下步骤。

创建共享用户vankohunter,确认共享目录。

[[email protected] ~]# useradd vanko
[[email protected] ~]# useradd hunter
[[email protected] ~]# pdbedit -a -u vanko
[[email protected] ~]# pdbedit -a -u hunter
[[email protected] ~]# mkdir /opt/mytools


 

修改smb.conf配置文件,添加名为tools的共享目录配置段。

[[email protected] ~]# vim /etc/samba/smb.conf
[global]
        security = user           ……//提升默认的安全级别
[tools]
        comment = zhe shi bei zhu!!  ……//备注
        path = /opt/mytools               ……//文件路径
        public = no                      ……//是否为公共的
        read only = yes                ……//是否为只读的
        valid users = vanko,hunter           ……//设置指定用户可以进行访问
        write list = hunter            ……//指定可以写入的用户


 

重新加载smb.conf文件中的配置,或重启smb服务。

[[email protected] ~]# service smb reload
重新载入 smb.conf 文件:                                   [确定]


2.3)、确定目录访问授权

通过Samba服务器共享本地的文件夹时,用户最终是否拥有读取、写入权限,除了需要设置用户授权以外,还要满足一个前提条件在服务器本集中,与共享用户同名的系统用户对发布为共享的本地文件夹(如/opt/mytools)必须要有相应的读取、写入权限。

因此,在上一步骤的例子中,还需要调整/opt/mytools目录的权限,使vanko用户能够读取,hunter用户能够写入。这里为了做实验方便,将/opt/mytools文件夹的权限设置为777

[[email protected] ~]# chmod 777 /opt/mytools/


另外,当通过共享目录上传文档时,对于共享用户所上传的文件,创建子目录的默认权限可以分别使用配置项“directory  mask”、“create  mask”进行指定。例如,若要使用户访问tools共享时,所上传的目录的默认权限为755,文件的默认全向为644,可以参考以下步骤在[tools]配置段添加相关内容。

[toools]
 directory mask = 0755               ……//创建目录默认权限
     create mask = 0644              ……//创建文件默认权限
[[email protected] ~]# service smb reload
重新载入 smb.conf 文件:                                   [确定]


重载服务之后即可使用,在客户机上登录使用!


以上是关于Linux 服务器搭建之Samba服务的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统服务搭建之samba

Linux系统服务搭建之samba

Linux系统服务搭建之samba

Linux系统服务搭建之samba

Linux之SAMBA文件共享服务器

linux架构学习第二十九天之samba文件共享服务