Linux服务器搭建之Samba服务

一、Samba服务基础

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

1、Samba软件的组成

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 文件:                                   [确定]

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

架设linux服务器下的samba,Linux 服务器搭建之Samba服务相关推荐

  1. linux系统下ntp网络时钟服务器(NTP服务器)的搭建和使用

    linux系统下ntp网络时钟服务器(NTP服务器)的搭建和使用 linux系统下ntp网络时钟服务器(NTP服务器)的搭建和使用 安徽京准科技开发的NTP网络时间源设备 参考 ahjzsz.com  ...

  2. linux系统指定ntp服务器,Linux系统下如何使用NTP服务器?

    Linux系统下的NTP服务器指的是网络时间同步协议,其作用就是同步网络时间和Linux系统中的时间,使得Linux时间更加精确.下面就来介绍一下Linux系统下如何使用NTP服务器. 一.ntp配置 ...

  3. linux环境下python机器学习环境的搭建

    linux环境下python机器学习环境的搭建## 1.准备工作,查看linux自带的python版本,以及建立一个测试目录用于存放测试文件: ubuntu@VM-164-254-ubuntu:/va ...

  4. linux运行内部错误,介绍Linux系统下的500内部服务器错误及故障排除500错误

    在Linux系统下有时浏览网页时发生的最常见错误之一是看到"500 Internal Server Error(500内部服务器错误)",此消息表明Web服务器遇到技术问题.本文介 ...

  5. linux环境下添加定时任务,linux下添加定时任务。

    这周要做一个定时增量更新Elasticsearch索引的功能,以前没有做过定时更新,所以请教了下同事,使用crontab添加linux下的定时任务. 一.linux下定时执行任务的方法 在linux中 ...

  6. Linux环境下使用Postfix和Dovecot搭建邮件系统

    1. 实验环境: Linux rhel6.5作为邮件服务器,IP:192.168.20.20 Windows server 2008上安装Foxmail,作为邮件测试的客户端,IP:192.168.2 ...

  7. linux系统下如何github,Linux系统下如何安装和使用GitHub

    下面就来介绍一下Linux系统下如何安装和使用GitHub. 一.安装与配置 虽说Git 预装在所有 Mac 和 Linux 电脑中,但预装的 Git 无一例外都版本陈旧.所以,无论你是使用Mac , ...

  8. linux环境下的连接器,Linux下连接器ld链接如何排序

    Linux系统中连接器ld链接的顺序是很重要的,如果顺序不当就会导致undefined referenced 函数报错,下面小编就给大家介绍下Linux下如何排列连接器ld的链接顺序. 原来ld对于链 ...

  9. linux下运行hadoop,Linux环境下hadoop运行平台的搭建

    1.hadoop版本认识 截至目前(2012年12月23日),Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0.第一 ...

  10. Linux环境下Android开发环境的搭建

    本文主要介绍在Ubuntu下Android开发环境的搭建,所使用的IDE为Eclipse(Android Studio同理,且可省去配置SDK以及安装adt插件的步骤). 1.安装JDK (1)JDK ...

最新文章

  1. Java常见的面试算法题:实现两个线程交替打印1到100的数
  2. EF-DbUpdateException解决方案
  3. Java多线程设计模式(1)
  4. 数字图像处理实验(11):PROJECT 05-02,Noise Reduction Using a Median Filter
  5. Java中几种日期格式相互转换
  6. SpringMVC拦截器-知识小结
  7. [luogu4027] [NOI2007]货币兑换
  8. 哪种开源许可证最适合商业化?
  9. 【无码专区9】序列统计(带权并查集 + 前缀和建边 + dp)
  10. mysql中创建表时提示 no database selected
  11. SpringCloud项目总结
  12. python教程视频下载-python怎么下载视频
  13. 0基础学python要多久-零基础学Python的过程有多难?需要多久?
  14. 最简单的基于FFmpeg的AVfilter的例子-纯净版
  15. Ant—Ant标签解释
  16. openfire+XMPP实现即时通讯
  17. GSM/CDMA区别
  18. Jenkins - 插件安装失败处理方法
  19. python变量命名为什么不能以数字开头
  20. maven的创建与配置和加载依赖

热门文章

  1. 戴眼镜总是不舒服,你的眼镜真的适合你吗?
  2. PbootCMS采集-PbootCMS采集插件-免费PbootCMS采集方法点解
  3. 墨刀的html压缩包是什么,墨刀如何使用?(教程介绍)
  4. Java swing的功能测试类库 FEST-Swing
  5. 射频(RF)一些参数小记
  6. 电子电气架构车载网关系列——网关主要应用场景及相关要求
  7. 110款表白网站源码,搭建表白网站必备,总有一款适合你
  8. 全球经济放水之下,数字货币牛市夭折?
  9. 读《why programs fail》的闲话
  10. STF移动测试云平台搭建