2023年11月24日发(作者:)

关键字: linux samba

随着计算机网络的发展,实现不同操作系统的文件和打印共享成为一个必然

的趋势。用过Windows的用户都知道,网上邻居是一个可以方便地访问其他Win

dows计算机资源的共享方式。为了使Windows用户以及Linux用户能够互相访

问彼此的资源,Linux提供了一套资源共享的软件——Samba服务器。

4.1 SMB协议和Samba简介

4.1.1 SMB协议

为了使Windows 主机间的资源能够共享,微软于1980年开发了SMBServe

r Message Block)通信协议,并通过SMB通信协议,使网络上各台主机之间能

够共享文件、打印机等资源。目前类似这种资源共享的通信协议还有NFSAppl

etalkNetware等。

4.1.2 Samba简介

这些年来,Windows Linux 操作系统各自拥有自己的用户群和市场。然而

在一般的公司或学校里,可能同时有Windows Linux 操作系统的主机。Wind

ows 主机彼此间可利用“网上邻居”来访问共享的资源,NFS也能使Linux 主机

之间实现资源共享。但如何能使Windows 主机和Linux主机之间实现资源共享

呢?

微软的“网上邻居(就是Windows 上利用SMB通信协议实现资源共享的程

序)”一经推出,便广受用户的好评,大家突然觉得原来要在网上共享资源尽是

那么简单,有鉴于此,便有一些Linux 爱好者开始在Linux 主机上实现SMB

信协议,后来这个实现了SMB功能的软件既被称为 Samba ,它使得Windows

机和Linux主机之间实现了资源共享。

4.1.3 Samba软件的功能

由于SMB通信协议采用的是Client/Server架构,所以Samba 软件可以分为

客户端和服务器端两部分。通过执行Samba 客户端程序,Linux 主机便可以使

用网络上Windows 主机所共享的资源;而在Linux 主机上安装Samba 服务器,

则可以使Windows 主机访问Samba 服务器共享的资源

Samba 提供了以下功能:

1)共享Linux 的文件系统

2)共享安装在Samba 服务器上的打印机

3)使用Windows 系统共享的文件和打印机

4)支持 Windows 域控制器和Windows 成员服务器对使用Samba 资源的

用户进行认证

5)支持WINS名字服务器解析及浏览

6)支持SSL安全套接层协议

4.2 安装和启动Samba

Samba 软件安装在Linux 一端。目前主要由一个20人左右的Samba 团队负

责维护及开发,用户可以在/站点获得Samba的详细信息。

同时,也可以在网页上下载Samba 的最新版本

4.2.1 安装Samba服务器

如果用户在安装Linux 时已经安装了Samba ,就无需再安装了可以通过下

列命令确定是否已经安装了Samba

[root@ smb_server root]# rpm qa | grep samba

samba-commom -2.2.7a-7.9.0

samba-2.2.7a-7.9.0

samba-client-2.2.7a-7.9.0

redhat-config-samba-1.0.4-1

samba-swat-2.2.7a-7.9.0

若出现这5个软件包,则表示已经安装了Samba ,否则必须安装Samba

[root@smb_server root]# mount /dev/cdrom /mnt/cdrom

将光盘挂载到 /mnt/cdrom目录]

[root@smb_server root]# cd /mnt/cdrom/RedHat/RPMS

切换到放置rpm文件的目录

[root@smb_server root]# rpm -ivh samba-commom -2.2.7a-7.9.0i386.

rpm

这是Samba 必备的程序,必须安装

[root@smb_server root]# rpm -ivh

安装Samba 服务器程序,可以使我Windows 主机访问Samba 服务器共享的

资源。

如果需要使Linux 主机访问Windows 主机上的共享资源,则还应该安装Sa

mba 客户端程序。

[root@smb_server root]# rpm -ivh samba-client-2.2.7a-7.9.0.i386.

rpm

4.2.2 Samba的全局参数的配置

Samba最主要的配置文件是 /etc/samba/其中有很多选项可以设

置,但作为初学者,只需要掌握其中一小部分选项的设置就可以配置所需要的S

amba服务器了。在了解基本配置的基础上,就能很快架设一个基本的Samba

务器。在基本配置文件中,也只用到其中一小部分命令选项。

全局参数的配置在[global]字段中,没有出现(或被注释)的参数,Samba

采用的是默认配置。

# This is the main Samba configuration file. You should read the

# (5) manual page in order to understand the options list

ed

# here. Samba has a huge number of configurable options (perhaps

too

# many!) most of which are not shown in this example

#================== Global Settings ============================

[global]

#这是配置文件中关于全局参数的设置部分。

„„„„

workgroup = SMBGROUP

#这是设置服务器所要加入的工作组的名称,会在Windows 的“网上邻居”

中能看到MYGROUP工作组,可以在此设置所需要的工作组的名称。

netbios name=smb-server

#设置出现在“网上邻居”中的主机名。默认情况下,则使用真正的主机名。

server string = Samba Server

#这是设置服务器主机的说明信息,当在Windows 的“网上邻居”中打开Sa

mba 上设置的工作组时,Windows 的资源管理器窗口,会列出“名称”“备

注”栏,其中“名称”栏会显示出Samba服务器的NetBios名称,而“备注”栏

则显示出此处设置的“Samba Server”。当然,可以修改默认的“Sambe Serve

r”,使用自己的描述信息。

hosts allow = 192.168.1. 127

#这里是设置允许什么样的IP地址的主机访问Samba服务器。默认的情况下,

hosts allow选项被注释,表示允许所有IP地址的主机访问。

guest account = pcguest

#设置当访问那些被设置了“guest ok=yes”参数的资源时所要使用的帐号

名。默认的帐号为”nobody如果不想用默认的值,则应该去掉注释用的分号,

用你想要的帐号(如pcguest zhangsan ),然后,你必需将这一新帐号加

入到/etc/passwd文件中去。

client code page=950

设置客户端访问Samba 服务器时所使用的字符编码表(code page),默认

值为850如果Samba 服务器要使用年中文名称来来命名共享的资源,要将此值

改为950

log file = /var/log/samba/%

#这一选项要求Samba服务器为每一个连接的机器使用一个单独的日志文件,

指定文件的位置,名称。Samba会自动将%m转换成连接主机的NetBios名。

max log size = 0

指定日志文件的最大容量(KB为单位)设置为0表示没有限制。默认值

5000

max disk size =1000

#设置能够共享的最大磁盘空间,单位为MB,默认值为0,表示不作任何限

制。

max open file =100

#设置同一客户端最多能打开文件的数目,默认值为10000个。

security = user

#设置Samba服务器的安全等级。默认情况下,使用user等级。

#Samba服务器一共有四种安全等级。

share: 使用此等级,用户不需要帐号及密码可以登陆Samba服务器。

user: 使用此等级,由提供服务的Samba服务器检查用户帐号及密码。

server: 使用此等级,检查帐号及密码的工作可指定另一台Samba服务器负

责。

domain: 使用此等级,需要指定一台Windows NT/2000/XP服务器(通常为

域控制器),以验证用户输入的帐号及密码。

; password server =

#如果安全等级为“server”或“domain”,则使用此选项指定要验证密码

的主机名。

password level = 8

username level = 8

#设置当验证用户口令和帐号时最多允许几个大小写字不同。默认值为0

encrypt passwords = yes

#设置当Samba客户端将帐号及密码传送到服务器端时,是否采取密码加密

的方式。客户的操作系统如果是Windows 95 OSR2 NT SP3以后的版本,应该

将此选项的值设为yes,默认值为no

smb passwd file = /etc/samba/smbpasswd

#设置在Samba服务器上存放加密的密码文件的位置(注意:Samba服务器与

Linux采用不同的密码文件)。

4.2.3 设置Samba密码文件

文件中有smb password file =/ect/samba/smbpassword一行

设置项,现在就要创建该设置项所指定的/ect/samba/smbpassword密码文件(若

是用Windows NT/2000Server 来验证密码,则可以跳过此段内容)。以root

号登录,然后按下列步骤进行:

[root@smb_server root]#cat /etc/passwd | > /etc/sam

ba/smbpasswd

[root@ smb_server root]# chmod 500 /etc/samba

[root@ smb_server root]# chmod 600 /etc/samba/smbpasswd

此步骤是将未加密的/etc/passwd文件转换成加密的smbpasswd文件。基于

保密的原则,将/etc/samba目录的权限设为500,该文件的权限设为600,以避

免他人取得密码文件。

完成之后再利用smbpasswd命令,设置/ect/samba/smbpassword文件中每

个帐号所使用的密码。(下面以fred为例。注意:此处设置的密码是fred要访

Samba服务器的密码,并非登录Linux 主机的密码,默认设置”UNIX passwor

d sync=YES, 则登录Linux 主机的密码将改变,Samba服务器的密码一致,

如果希望这两个密码不一致,则设置”UNIX password sync=NO”)

[root@smb_server root]# smbpasswd fred

New SMB password: 此处输入密码

Retype SMB password: 重新输入密码

Password changed for user fred 看到这一句表示密码设置成功。

4.2.4 启动Samba服务器

可以执行下面的命令来启动Samba服务器:

[root@ smb_server Root]# service smb start

当能看到下面的显示,就表示启动成功。

Starting SMB service [确定]

Starting NMB service [确定]

如果要暂停或重新启动Samba服务器,只要将上面命令中的start 改为st

oprestat就可以了。

也可以让系统在每次开机时就启动Samba服务器。执行ntsysv命令,进入

Service设置画面,选择smb选项,单击确定即可。

4.2.5 测试Samba配置文件

设置好文件之后,执行下面的命令测试的设置语法是否正

确。

[root@smb_server root]# testparm

Load smb config files from /etc/samba/

Processing section "[homes]"

Processing section "[printers]"

Processing section "[tmp]"

Processing section "[public]"

Processing section "[fredsdir]"

Loaded services file OK.

Press enter to see a dump of your service definitions

表示正确。

检查正常后,一定要记得执行

[root@smb_server root]# service smb restart

命令,重新启动Samba服务器。

4.3 配置Samba 文件共享

完成了全局环境的设置之后,可以设置共享的资源(包括共享的文件和打印

机)了。先来介绍如何配置,实现文件的共享。

4.3.1 设置共享资源参数

comment

#针对共享资源所作的说明、注释部分

browseable

#设置用户是否可以看到此共享资源。默认值为yes,若将此参数设置为no,用

户虽然看不到此资源,但是拥有权限的用户仍可直接输入该资源的网址来访问该

资源。

writable

#设置共享的资源是否可以写入。若共享资源是打印机,则不需设置此参数

#设置可访问的用户。系统会自动将%S转换成登录帐号。

create mode

# 设置文件的访问权限,默认值为0744

directory mode

设置目录的访问权限,默认值为0755

path

#若共享资源是目录,则指定目录的位置;若为打印机,则指定打印机队列的位

置。

read only

#设置共享资源是否只读或可以写入,默认值为yes。若共享资源为打印机时,

此参数无任何意义。这一项与writable相反。

Public

#等同于guest ok选项,表示是否允许用户不使用帐号和密码便能访问此资源。

如果起用此功能,当用户没有帐号和密码时,则会利用“guest account=”所设

置的帐号名登录。该选项默认值为no,即不允许没有帐号即密码的用户使用此

资源。

avalible

#设置是否启用此共享资源。默认值为yes。若将此参数设置为no,则不管其他

参数设置为什么,所有人均不得使用此资源。

valid users

4.3.2 配置Samba文件共享举例

以下通过配置3个不同的共享目录为例,可以知道配置Samba文件共享的一

般方法。

[global]

„„„„

#采用前面的[global]配置

[homes]

#用来配置用户访问自己的目录

comment = Home Directories

#注释

browseable = no

#用户私人目录,不给别人浏览(并不是不允许别人访问)

writable = yes

#允许用户写入自己的目录

valid users = %S

#可访问的用户局限于用户自己。%s会被自动转换为登录帐号。

create mode = 0664

#文件的访问权限

directory mode = 0775

#目录的访问权限

# This one is useful for people to share files

[tmp]

#这个部分为所有用户提供临时共享的方式

comment = Temporary file space

#注释文字

path = /tmp

#指定位置

read only = no

#可以读写

public = yes

#允许用户不用帐号和密码访问

[public]

# 这个部分为所有用户提供可以共同访问的目录。允许staff组用户写入,但

其他用户只可访问,不能写入。

comment = Public Stuff

path = /home/samba

public = yes

writable = yes

printable = no

write list = @staff

# write list参数是用来设置具有写权限的用户列表。这里只允许staff组的

成员有写的权限

[fredsdir]

#这个部分用来设置某一用户fred的访问权限。

comment = Freds Service

path = /usr/fred/private

valid users = fred

#只有fred可以访问(注意:即使security=share,也不代表用户登录Linux

主机后可以访问任意资源。)该共享目录

public = no

writable = yes

printable = no

说明:配置文件修改后,要重新用testparm测试配置文件,重新启动Samba

务器程序。