您的位置:首页 > 运维架构 > Linux

Linux 服务器搭建之Samba服务

2018-01-29 16:51 627 查看
Linux 服务器搭建之Samba服务一、Samba服务基础
Samba是著名的开源软件项目之一,它在Linux/UNIX系统中实现了微软的SMB/CIFS网络协议,从而使得跨平台的文件共享变得更加容易。在部署Windows、linux/UNIX混合平台的企业环境时,选用Samba可以很好地解决不同系统之间的文件互访问题。
1Samba软件的组成
1.1)Samba软件包的构成
在RHEL6.5系统的DVD安装光盘中可以找到与Samba相关的几个软件包,主要包括服务端软件Samba、客户端软件samba-client,用于提供服务端和客户端程序的公共组件samba-common。大部分软件包已经随RHEL6.5系统默认安装好了,用户可以查询系统中samba相关软件包的安装情况。
[root@twgdh ~]# 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服务器提供smbd、nmbd两个服务程序,分别完成不同的功能。其中,smbd负责为客户机提供服务器中共享资源(目录和文件等)的访问;nmbd负责提供基于NetBIOS协议的主机名称解析,以便为Windows网络中的主机进行查询服务。安装好samba软件包以后,在RHEL6.5系统中会添加名为smb和nmb的标准系统服务,管理员可以通过service工具来控制Samba服务的启动与终止。
[root@twgdh ~]# service smb start
启动 SMB 服务:                                            [确定]
[root@twgdh ~]# 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文件中的有效配置。

[root@twgdh ~]# 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设置共享账户文件的类型,默认使用tdbsam(TDB数据库文件)。若网络内拥有LDAP目录认证,这里可以改用ldapsam数据库文件;另外,若要兼容旧版的Samba密码文件,也可以将类型设为smbpasswd
Samba服务器提供了一个配置文件检查工具—testparm程序,使用testparm工具可以对smb.conf配置文件的真确性进行检查。

二、构建文件共享服务
1、构建可匿名的共享
可匿名访问的共享使用于公开的资源分享,一般只建议提供只读访问。由于匿名共享不需要验证用户名和密码(或允许提供任意用户名、密码)就可访问,在安全性要求不高的情况下,可以非常方便、快捷地与其他主机共享资源。设置匿名共享文件夹时,在主配置文件smb.conf中主要调整两个地方即可:其一,可以将默认的安全级别修改为share;其二,添加一段共享目录配置。其他配置项根据实际需要进行更改。 例如,若要将本地挂载的光盘目录/media/发布为共享文件夹,共享名为rhel6,可以参照以下步骤进行设置。

[root@twgdh ~]# mount /dev/cdrom /media/      ……//挂载rhel6.5的dvd光盘
[root@twgdh ~]# 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                    ……//只读
[root@twgdh ~]# service smb reload
重新载入 smb.conf 文件:                                   [确定]


配置完毕后,就可以从Windows客户机或Linux客户机中浏览并匿名访问此共享了。注意需要关闭iptables和Selinux!

2、构建需要用户验证的共享
匿名共享虽然用起来非常方便,但因为任何人都可以访问到共享的文件数据,在某些时候可能会导致信息的泄露。设置用户验证的共享文件夹时,在主配置文件smbl.conf中同样需要调整两个地方:其一,将默认的安全级别修改为share;其二,添加共享目录配置,指定用户权限。在此之前,还需要先创建授权的共享账户。2.1)、建立Samba用户数据库
为了区别于Linux主机中的系统用户,通常将用于访问Samba共享资源的用户成为共享用户。Samba服务器使用独立的共享账号数据库文件,其中的账号名称必须有与它同名的系统用户相对应,以便主机对共享访问的读写权限进行控制;但共享用户的密码时额外设置的,可以与系统用户的密码不一样。Samba共享用户的账号数据库文件默认位于/var/lib/samba/private/passdb.tdb,是一个经过加密的文件,其中保存了Samba用户的账号名称、登录密码、账号可用状态等信息。使用pdbedit工具可以对共享用户进行管理。
[root@twgdh ~]# useradd vina            ……//先添加系统用户vina
[root@twgdh ~]# 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,要求只有共享用户vanko、hunter能够访问,其中hunter用户具有写入权限,可以参照以下步骤。■ 创建共享用户vanko、hunter,确认共享目录。

[root@twgdh ~]# useradd vanko
[root@twgdh ~]# useradd hunter
[root@twgdh ~]# pdbedit -a -u vanko
[root@twgdh ~]# pdbedit -a -u hunter
[root@twgdh ~]# mkdir /opt/mytools


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

[root@twgdh ~]# 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服务。

[root@twgdh ~]# service smb reload
重新载入 smb.conf 文件:                                   [确定]


2.3)、确定目录访问授权
通过Samba服务器共享本地的文件夹时,用户最终是否拥有读取、写入权限,除了需要设置用户授权以外,还要满足一个前提条件—在服务器本集中,与共享用户同名的系统用户对发布为共享的本地文件夹(如/opt/mytools)必须要有相应的读取、写入权限。因此,在上一步骤的例子中,还需要调整/opt/mytools目录的权限,使vanko用户能够读取,hunter用户能够写入。这里为了做实验方便,将/opt/mytools文件夹的权限设置为777。
[root@twgdh ~]# chmod 777 /opt/mytools/


另外,当通过共享目录上传文档时,对于共享用户所上传的文件,创建子目录的默认权限可以分别使用配置项“directory mask”、“create mask”进行指定。例如,若要使用户访问tools共享时,所上传的目录的默认权限为755,文件的默认全向为644,可以参考以下步骤在[tools]配置段添加相关内容。
[toools]
directory mask = 0755 ……//创建目录默认权限
create mask = 0644 ……//创建文件默认权限
[root@twgdh ~]# service smb reload 重新载入 smb.conf 文件: [确定]


重载服务之后即可使用,在客户机上登录使用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Samba linux 侯良金