Samba服务配置详解

引用一下David_Tang同学的Samba简介:

    Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器信息块 。SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即通用互联网文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。

    Samba最大的功能就是可用于Linux和windows系统的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。

    SMB是基于客户端/服务器型的协议,然而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端。例如,一台在Linux 下已经架设好的Samba服务器,windows客户端可以通过SMB协议访问Samba服务器上的文件资源,同时,Samba服务器也可以访问网络中其它windows系统或者Linux系统共享出来的文件。

    Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。

    组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户端间的对话, 验证用户身份并提供对文件和打印资源的访问,只有SMB服务启动,才能实现文件的共享,监听在139/445 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,监听在137/138 UCP端口,如果NMB服务没有启动,就只能通过IP来访问共享文件。


Samba安装及配置:

1、关闭SELINUX、防火墙

# vim /etc/selinux/config

SELINUX=disabled

# setenforce 0

# service iptables stop


2、安装Samba

# yum install samba4 samba4-client samba4-common samba4-swat

# 安装包解析

samba4:服务器端程序,提供了samba服务器端守护进程(包含了smbd及nmbd),以及其它与samba相关的共享文档、日志、开机启动项等;

samba4-client:客户端程序,它为Linux作为客户端时提供了所需要的工具指令;

samba4-common:提供samba服务器的配置文件和配置文件的语法检测程序testparm;

samba4-swat:提供了基于web的samba图形配置界面。


3、启动Samba

# service smb start

# service nmb start


4、Samba配置及解析

# 简单来说,Samba的配置文件可以分为两段,一段为[global]全局配置段,一段为[share]共享定义段;

# 这里列出一些常用的配置参数:

[global]

workgroup = MYGROUP                                        # 工作组

netbios name = MYSERVER                                # 当前主机的NIetBIOS名称

server string = Samba Server Version %v         # 服务器描述,修改成别的,不应输出

hosts allow = 127. 172.16. 192.168.101.                # 基于IP的访问控制

log file = /var/log/samba/log.%m                        # 访问的每个客户端使用独立的日志

max log size = 50                                                    # 日志文件最大容量(50KB),超过则滚动

security = user                                                        # 安全机制

passdb backend = tdbsam                                    # 账号和密码存放的格式

load printers = yes                                                 # 是否共享打印机

cups options = raw                                                # 打印选项

socket options =                                        # 配置服务器端和客户端之间会话的socket选项,可优化传输速度。


[share]

    comment = share directory                            # 注释

    path =                                                                # 共享资源路径

    browseable = no                                            # 是否能被浏览

    writable = yes                                                # 是否可写

    public = yes                                                    # 是否能被所有用户读

    read only =                                                        # 是否为只读的

    write list = user1,user2,@group,+group        # 定义可写用户列表

    valid users =                                                    # 允许访问的用户(白名单)

    invalid users =                                                # 不允许访问的用户(黑名单)

    

# 简要说一下samba的用户认证模式,有5种:

1. share:所有人都可以访问这台samba服务器(不需要输入用户名和密码,匿名访问);

2. user:需要输入有效的用户名和密码才能访问samba服务器(需要samba添加验证用户);

3. server:与user相同,只是将身份验证交由指定的另一台samba服务器负责;

4. domain:将身份验证交由域控制器负责;

5. ads:将身份验证交由域控制器负责。

# 以上5种,最为常用的是share 和 user,也就是匿名访问和用户认证访问。


# 一个简单的配置示例(匿名访问)

# 本文使用的是samba4,因samba4中的share匿名认证方式已经被弃用

# 需要将:security = share 改为

# security = user

# map to guest = Bad User


## Start ##

# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

# vim /etc/samba/smb.conf

[global]

workgroup = WORKGROUP

netbios name = MYSERVER

server string = Linux Samba Server


security = user

map to guest = Bad User

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

max log size = 5000

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192


[share]

comment = Test Share

path = /data/tshare

public = yes

writeable = yes

browseable = yes

guest ok = yes

readonly = no

:wq!

# 重启smb

# mkdir /data/tshare

# chmod 777 /data/tshare

# service smb restart

## End ##

# 这样,一个可匿名访问、可写的共享目录就完成了,windows访问\\192.168.101.168即可。


# 再来一个用户认证的示例

# vim /etc/samba/smb.conf

[global]

workgroup = WORKGROUP

netbios name = MYSERVER

server string = Linux Samba Server


security = user

encrypt passwords = yes

passdb backend = tdbsam

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

max log size = 5000

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192


[share]

comment = Test Share

path = /data/tshare

valid users = vuser

public = yes

writeable = yes

browseable = yes

readonly = no

:wq!


# 创建vuser用户

# pdbedit -a vuser

new password:

retype new password:


# 检测语法并重启smb

# chmod 755 /data/tshare

# chown vuser:vuser /data/tshare

# testparm

Load smb config files from /etc/samba/smb.conf

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

Processing section "[share]"

Loaded services file OK.

# service smb restart


# 注意:这里/data/tshare的目录权限,可使用setfacl进行对应修改。


# 这里提一下passdb backend的三种管理模式

1. smbpasswd:这种方式是使用smb工具smbpasswd给系统用户设置一个samba密码,以文本方式存储,客户端就用此密码访问samba的共享资源,smbpasswd保存在/etc/samba/目录下,需要手动创建。使用方法:passdb backend = smbpasswd:/etc/samba/smbpasswd;注意,这里的系统用户是系统已经存在的真实用户或虚拟用户。

2. tdbsam:sam即security account manager,使用数据库管理samba用户,数据库名一般叫passdb.tdb;可使用smbpasswd -a创建用户,也可以使用pdbedit创建用户,pdbedit有较多的选项,可以使用pdbedit --help查看。

3. ldapsam:基于LDAP的用户管理模式,因对LDAP不太熟悉,这里不作过多介绍,有兴趣的朋友请自行google、baidu。


5、客户端访问共享资源命令

smbclient:

    -L NetBIOS_Name:查看对应主机或IP的共享资源

    -U username:用户名

    Example:smbclient -L 192.168.101.168 -U vuser


6、samba的web图形化管理工具swat

# 注意:因swat是由xinetd超级守护进程管理的(监听在端口901),在安装samba-swat过程中,xinetd也会由依赖安装上,如果没有安装,请手动安装。

# rpm -qa xinetd samba4-swat

# chkconfig --list swat

# chkconfig swat on


# 修改xinetd管理swat配置

# vim /etc/xinetd.d/swat

service swat

{

        port            = 901

        socket_type     = stream

        wait            = no

        only_from       = 127.0.0.1 192.168.101.0/24

        user            = root

        server          = /usr/sbin/swat

        log_on_failure  += USERID

        disable         = no

}


# 重启xinetd

# service xinetd restart


# 浏览器访问:http://192.168.101.168:901    ;; 使用root帐号密码登录即可。

wKiom1VgYtrQU6NPAAE9c3JkP3U347.jpg

你可能感兴趣的:(samba,smb,nmb)