【linux服务器之最爱centos】之 SAMBA服务器架设

分类:linux

SAMBA服务器简介


1SAMBA服务主要用途是要在WindowsUnix Like主机间共享数据。

SAMBA的功能:

  • 提供用户登陆SAMBA主机时进行身份认证,从而提供不同的身份识别。

  • 可以进行NetBIOS名称解析。

  • 可以进行设备共享(如:CD-ROM、打印机)。


2SAMBA使用的NetBIOS通信协议:

就像NFS是架构在RPC Server上一样,SAMBA是架设在NetBIOS通信协议上的。NetBOIOS最初是为局域网设计的,所以它无法跨路由工作。但是可以通过NetBIOS over TCP/IP技术我们就可以跨路由使用SAMBA服务器提供的功能了。


3SAMBA使用的daemons

SAMBA是如何工作的?(1)、获取对方的NetBIOS名,并定位到该主机。我们要想登入某台Windows主机使用它所提供的文件时,必须加入该Windows主机的群组(Workgroup),并且我们的主机也必须设置一个NetBIOS名称。NetBIOS名称与主机名称的区别是NetBIOS名称最多有15个字符组成,在Windows上如果计算机名超过15个字符通常截取前15个字符作为NetBIOS名称。NetBIOS名称必须在同一群组中是唯一的。(2)、利用对方给予的权限存取可用资源。

SAMBA主要使用两个daemons来管理这俩个不同的服务:

  • smbd:这个daemon主要功能是用来管理SAMBA主机共享目录、文件与打印机信息。

  • nmbd:这个daemon则是用来管理群组和NetBIOS名称解析的。


4SAMBA主要使用工作组模式和域模式进行连机。工作组模式适合于小型的工作环境,用户独立拥有计算机的控制权。域模型适合于大型的多人共性计算机环境。


SAMBA服务器的基础架设


1SAMBA服务器所需要的软件:

  • SAMBA:主要提供smbdnmbd两个daemonsSAMBA文档以及相关的logrotate设置文件等。

  • samba-common:主要提供了SAMBA的主要配置文件(smb.onf)、smb.conf的语法检验测试程序(testparm)。

  • samba-client:提供客户端工具指令,如用于挂载SAMBA文件格式的smbmount等。

SAMBA的软件结构:

  • /etc/samba/smb.conf SAMBA的主要配置文件,这个文件主要设置工作组、NetBIOS名称以及分享的目录等。

  • /etc/samba/lmhosts用于NetBIOS名称与主机IP的对应,类似与/etc/hosts文件。

  • /etc/samba/smbpasswd这个文件默认并不存在,他是SAMBA默认的用户密码对应表。这个文件因为包含了密码,所以权限一定要设置好,一般设置为root所有,权限为600

  • /etc/samba/smbusers Windows主机和Unix Like主机间账号的对应关系,此文件必须通过配置文件中的“username map”设置项目启动才能生效。

  • testparm用于检查sam.conf的语法。

  • smbstatus列出目前的SAMBA Server状态。

  • smbpasswd用来创建SAMBA的密码文件。

  • smbclient用在自己的SAMBA主机上面检查服务是否设置成功。

  • smbmount挂载远程共享目录到本地挂载点。

  • nmblookup NetBIOS名称查询。

  • smbtree显示工作组与计算机名称的树状目录分布图。

  • /usr/share/doc/samba-<version> SAMBA的相关技术手册。


2SAMBA设置流程:

  1. smb.conf中设置好工作组、NetBIOS名称、密码使用状态等与主机相关的信息。

  2. smb.conf中设置好预共享的目录、装置已经可以使用的用户数据。

  3. 根据步骤2的设置在Linux文件系统中建立好文件或装置的使用权。

  4. 根据步骤2的设置通过smbpasswd建立用户账号及密码。

  5. 启动SAMBAsmbdnmbd服务。


3SAMBA配置文件

SAMBA的配置文件可以分成两部分,一是主机信息部分,在smb.cfg文件的[global]下设置;二是共享信息部分,以目录名问设置依据。

主机信息部分设置:

workgroup:设置工作组名称。

netbios name:设置主机的NetBIOS名称。

server string:主机的简易说明。


display charset:自己服务器上面显示的编码,一般与下面的unix charset相同。

unix charset:在Linux服务器上面所使用的编码,一般为/etc/sysconfig/il8n内的编码。

dos charsetWindows客户端的编码。


log file:日志文件存放位置,文件名可能会以变量处理。

max log size:日志文件的最大尺寸。


security:设置值包括userserverdomainshareuser:使用SAMBA本身的密码数据库,密码数据库与下面的smb passwd file有关;share:共享的数据不需要密码即可访问;serverdomain:使用外部主机的密码,与password server=IP配合使用。

encrypt passwordsyes代表密码需要加密。

smb passwd file:密码放置文件,一般为/etc/samba/smbpasswd


共享目录参数:

[共享名称]:设置共享名。

comment:目录说明。

path:共性目录在操作系统上的实际路径。

read only:设置是否只读。

public:设置是否所用可以登陆的用都能看到这个共享名。

writable:设置是否可以写入。

create modedirectory mode与权限有关。

valid users = user@group):设定能够访问此共享资源的特定用户或用户组。

invalid users = user (@group) :设定禁止访问该共享资源的用户或者组。

read list = user (@group) :设定可以读取该共享资源的用户或者组。

write list = user (@group) :设定可以读取和写入该共享资源的用户或者组。

admin list = user (@group) :设定可以管理该共享资源的用户或者组。

guest ok = yes|no :设定该共享资源是否能被来宾帐号访问。


SAMBA里的变量:

%S任何可以登陆的用户均可以登陆起自己的默认目录(/home/username)。如:

[homes]

valid users=%S

……

Jim登陆后,[homes]会变成[Jim]%S用来替换掉homes

%m代表客户端的NetBIOS名称。

%M代表客户端的Host Name

%L代表SAMBA主机的NetBIOS名称。

%H代表用户的默认目录。

%U代表目前登陆的用户名称。

%g代表登陆的群组名称。

%h代表目前这台SAMBA主机的Host Name

%I代表客户端的IP

%T代表当前的时间日期。


SAMBA服务器架设示例


1、软件安装

[root@server ~]# rpm -qa |grep samba

samba-common-3.0.25b-0.el5.4

samba-client-3.0.25b-0.el5.4

[root@server ~]# mount /dev/cdrom /mnt/

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@server ~]# cd /mnt/CentOS

[root@server CentOS]#rpm -ivh samba-3.0.25b-0.el5.4.i386.rpm

Preparing... ########################################### [100%]

1:samba ########################################### [100%]


2、设置lmhosts文件

[root@server samba]# vi /etc/samba/lmhosts

127.0.0.1 localhost

192.168.0.20 smbserver

192.168.0.30 smbclient

192.168.0.103 somode


3、检查语言资料

为了避免中文乱码问题,必须了解以下编码:

源文件(共享的文件)的编码格式,中文一般是GB2312

Linux的默认语言编码。

SAMBA的显示编码,一般与Linux的默认编码相同。

连接到SAMBA主机的软件的语言编码。

RedHat系统默认语言编码可以通过查看i18n文件:

[root@server ~]# vi /etc/sysconfig/i18n

LANG="zh_CN.UTF-8"

所以SAMBA的配置文件可以这样设置编码:

unix charset=utf8

display charset=utf8

dos charset=cp936


4、设置smb.conf配置文件


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

[global]

workgroup = WORKGROUP

server string = iStone's Samba Server,Server Version %v .


netbios name = smbserver

#设置监听的接口,默认在所有网络接口监听

interfaces = lo eth0

#用于限制可以访问这台samba服务器的客户机的IP地址范围,以提供安全限制。

#缺省情况下,这行配置被注释了,即所有的客户都可以访问这台计算机,

#这样就存在一定的安全问题

hosts allow = 127. 192.168.0.

# ---------------------------语言编码设置-----------------------------

#

unix charset=utf8

display charset=utf8

dos charset=cp936


# --------------------------- Logging Options -----------------------------

#

#定义日志的存储位置及名称,%m代表客户端的NetBIOS名称

log file = /var/log/samba/%m.log

# max 50KB per log file, then rotate

#定义每个日志文件的存储限制。默认是0(无限制)

#一定要定义好,防止硬盘被爆掉

max log size = 50

# ----------------------- Standalone Server Options ------------------------

#

# Scurity can be set to user, share(deprecated) or server(deprecated)

#

# Backend to store user information in. New installations should

# use either tdbsam or ldapsam. smbpasswd is available for backwards

# compatibility. tdbsam requires no further configuration.

#认证方式,包括简单的共享级认证和用户级认证。Unix为多用户操作系统,缺省就使用用户级认证方式。当使用用户级认证的时候,Samba服务器使用Unix操作系统的用户(来自/etc/passwd)对用户进行认证,这是一种独立的认证方式。而有时候希望所有的服务器使用同一个认证数据库进行统一认证,因此就导致出现了基于域的统一认证模式。为了使Samba服务器支持域认证方式,可以有两种不同的设置方式,一种为真正的域认证,另一种为服务器认证方式,将Samba服务器配置为通过服务器验证用户,这需要指定security=server,以及指定password server的名字为NT的域控制器。认证服务器的方式不能实现域认证方式提供的一些特征,但它的适用范围并不仅限于域,使用工作组的网络也能通过统一的认证服务器来使用统一认证模式。

#一共有4种服务级别,分别是

# share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。

# user:samba的默认配置,要求用户在访问共享资源之前必须先提供用户名和密码进行验证。

# server:user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级,以此类推。

# domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。

security =user


# --------------------------- password Options -----------------------------

#

#新版本使用数据库存储用户密码,但可以先后兼容,既可以使用密码文件来存储密码。

passdb backend = tdbsam

#客户机和服务器之间进行认证时,把口令加密传输,这样保证了安全性。

; encrypt passwords = yes

#在以前的版本中使用smbpasswd文件来定义smb帐号密码,现在使用tdbsam来定义帐号密码

; smb passwd file = /etc/samba/smbpasswd

#用户映射文件客户机的用户是admin或者administrator连接时会被当作用户root看待。

; username map = /etc/samba/smbuser

# ----------------------- Domain Members Options ------------------------

#

; security = domain

; passdb backend = tdbsam

; realm = MY_REALM


; password server = <NT-Server-Name>

# ----------------------- Domain Controller Options ------------------------

#

; security = user

; passdb backend = tdbsam


; domain master = yes

; domain logons = yes


#如果你采用domain方式登陆,必须设置登陆脚本。

# the login script name depends on the machine name

#每个工作站登陆脚本。

; logon script = %m.bat

# the login script name depends on the unix user used

#每个用户的登陆脚本

; logon script = %u.bat

; logon path = \\%L\Profiles\%u

# disables profiles support by specifing an empty path

; logon path =


; add user script = /usr/sbin/useradd "%u" -n -g users

; add group script = /usr/sbin/groupadd "%g"

; add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u"

; delete user script = /usr/sbin/userdel "%u"

; delete user from group script = /usr/sbin/userdel "%u" "%g"

; delete group script = /usr/sbin/groupdel "%g"

# ----------------------- Browser Control Options ----------------------------

#

# set local master to no if you don't want Samba to become a master

# browser on your network. Otherwise the normal election rules apply

#

# OS Level determines the precedence of this server in master browser

# elections. The default value should be reasonable

#

# Preferred Master causes Samba to force a local browser election on startup

# and gives it a slightly higher chance of winning the election

#当访问共享资源时,首先要先获取网络中的资源列表,默认情况下browser是由网络中的每个计算机来维护的。但没有必要每个计算机都维护整个资源列表,维护网络中当前资源列表的任务由网络上的几个特殊计算机完成的,这些计算机被称为Browser

#设定sam服务器是否能做为网络中的主browser

; local master = no

# browser优先权的设置

; os level = 33


; preferred master = yes

# --------------------------- Printing Options -----------------------------

#

# Load Printers let you load automatically the list of printers rather

# than setting them up individually

#

# Cups Options let you pass the cups libs custom options, setting it to raw

# for example will let you use drivers on your Windows clients

#

# Printcap Name let you specify an alternative printcap file

#

# You can choose a non default printing system using the Printing option

#这些设置是用于设置samba服务器的打印机资源。

# load printer=yes就允许samba服务器对外共享服务器的打印机。

load printers = yes

cups options = raw


; printcap name = /etc/printcap

#obtain list of printers automatically on SystemV

; printcap name = lpstat

#定义打印系统的类型

; printing = cups

#============================ Share Definitions ==============================

#每个有登陆权限的用户均可访问他们自己的默认目录

[homes]

comment = Home Directories

browseable = no

writable = yes

valid users = %S

create mode = 0664

directory mode = 0775

; valid users = MYDOMAIN\%S

#一个共享文件夹,除istone组能写外其他组只能读取文件

[public]

comment = Public istone

path = /home/public

public = yes

writable = no

printable = no

write list = @istone

#打印机共享,共享名必须是printers

[printers]

comment = All Printers

#打印队列的存放位置

path = /var/spool/samba

#是否允许他人浏览

browseable = no

#是否允许gest用户使用

guest ok = no

writable = no

printable = yes

#使用testparm检查smb.conf配置文件是否有语法错误,每次修改配置文件后都需要先进行一下语法检查。

[root@server ~]# testparm


5、创建共享目录,并赋权

特别注意用户在文件系统中的权限,只有在文件系统和SAMBA配置文件中都有相应权限时用户才真正具有此共享权限。

[root@server ~]# mkdir /home/public

#public的用户组改为istone,在配置文件中设置了istone组有写入权限。

[root@server ~]# chgrp -Ristone/home/public/

[root@server ~]# chmod 775 /home/public/

#添加用户并设置密码

[root@server ~]# useradd istone

root@server ~]# passwd istone

Changing password for user istone.

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root@server ~]# useradd jim

[root@server ~]# passwd jim

Changing password for user jim.

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root@server ~]# ls -l /home/

总计12

drwx------ 2 istone istone 4096 05-27 16:01 istone

drwx------ 2 jim jim 4096 05-28 10:13 jim

drwxrwxr-x 2 rootistone4096 05-28 10:12 public


6、创建SAMBA密码文件

[root@server ~]# mkdir /etc/samba/smbpasswd

[root@server ~]# chown root /etc/samba/smbpasswd

[root@server ~]# chmod 600 /etc/samba/smbpasswd

smbpasswd [-adem] username

-a在密码文件中新增一个用户

-d停用一个已经存在的账号

-e从新启用已经停用的账号

-m username为计算机名,与domain mode有关

如果没有加任何参数表示修改用户的SAMBA密码。

#访问共享的用户使用的是此处设置的密码,可以与系统用户的密码不同。

[root@server ~]# smbpasswd -a istone

New SMB password:

Retype new SMB password:

Added user istone.

[root@server ~]# smbpasswd -a jim

New SMB password:

Retype new SMB password:

Added user jim.

[root@server ~]# cat /etc/samba/smbpasswd

istone:500:E8450C7E07112982AAD3B435B51404EE:2D7F1A5A61D3A96FB5159B5EEF17ADC6:[U ]:LCT-483CC0E6:

jim:501:E8450C7E07112982AAD3B435B51404EE:2D7F1A5A61D3A96FB5159B5EEF17ADC6:[U ]:LCT-483CC0EC:


7、启动SAMBA服务

[root@server samba]# /etc/init.d/smb start

启动SMB服务:[确定]

启动NMB服务:[确定]

[root@server samba]# netstat -tunlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:1390.0.0.0:* LISTEN 20281/smbd

tcp 0 0 0.0.0.0:4450.0.0.0:* LISTEN 20281/smbd

udp 0 0 192.168.0.20:1370.0.0.0:* 20284/nmbd

udp 0 0 0.0.0.0:1370.0.0.0:* 20284/nmbd

udp 0 0 192.168.0.20:1380.0.0.0:* 20284/nmbd

udp 0 0 0.0.0.0:1380.0.0.0:* 20284/nmbd


8、验证共享目录

smbclient –L [//主机或IP] [-U用户账号]

[root@server ~]# smbclient -L //127.0.0.1 -Uistone

Password:

Domain=[SMBSERVER] OS=[Unix] Server=[Samba 3.0.25b-0.el5.4]


Sharename Type Comment

--------- ---- -------

publicDisk Public istone

IPC$ IPC IPC Service (iStone's Samba Server,Server Version 3.0.25b-0.el5.4)

istoneDisk Home Directories//在此看到的是istone用户的默认目录

Domain=[SMBSERVER] OS=[Unix] Server=[Samba 3.0.25b-0.el5.4]


Server Comment

--------- -------


Workgroup Master

--------- -------

WORKGROUP

[root@server ~]# smbclient -L //127.0.0.1 -Ujim

Password:

Domain=[SMBSERVER] OS=[Unix] Server=[Samba 3.0.25b-0.el5.4]


Sharename Type Comment

--------- ---- -------

publicDisk Public istone

IPC$ IPC IPC Service (iStone's Samba Server,Server Version 3.0.25b-0.el5.4)

jimDisk Home Directories//在此看到的是jim用户的默认目录


Domain=[SMBSERVER] OS=[Unix] Server=[Samba 3.0.25b-0.el5.4]


Server Comment

--------- -------


Workgroup Master

--------- -------

WORKGROUP


利用类似于FTP命令行方式访问共享

get下载一个文件

put上传一个文件

mget批量下载文件

mput批量上传文件

ls/dir查看所在目录的文件

rm/del删除文件


你可能感兴趣的:(centos)