Linux之Samba基础知识及应用

Linux之Samba基础知识及应用

一、Samba简介

Server Message Block的缩写是SMB,即服务器消息块,SMB主要是作为Microsoft的网络通讯协议。Samba将SMB通信协议应用到了Linux系统上。其功能特性可实现:WINS和DNS服务、网络浏览服务、Linux和Windows域之间的认证和授权、UNICODE字符集和域名映射、满足CIFS协议的UNIX共享等

  SMB是基于客户机/服务器型的协议,故一台Samba服务器既可当文件共享服务器,也可充Samba的客户端。Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。

SMB工作原理大致分为:

1、协议协商:客户端在访问Samba服务器时,首先由客户端发送一个SMB negprot请求数据报,并列出它所支持的所有SMB协议版本。服务器在接收到请求信息后开始响应请求,并列出希望使用的协议版本。如果没有可使用的协议版本则返回oXFFFFH信息,结束通信。

2、建立连接:当SMB协议版本确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送SesssetupX请求数据报实现的。客户端发送一对用户名和密码或一个简单密码到服务器,然后服务器通过发送一个SesssetupX请应答数据报来允许或拒绝本次连接。

3、访问共享资源:当客户端和服务器完成了协商和认证之后,它会发送一个Tcon或SMB TconX数据报并列出它想访问网络资源的名称,之后服务器会发送一个SMB TconX应答数据报以表示此次连接是否被接受或拒绝。

4、断开连接:连接到相应资源,SMB客户端就能够open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件。

二、安装Samba服务

#rpm -qa | grep samba

#yum install samba samba-client

注:Samba安装好后,使用testparm命令可以测试smb.conf配置是否正确。使用testparm –v命令可以详细的列出smb.conf支持的配置参数

三、简要说明Samba服务配置文件

Samba的主配置文件位置:/etc/samba/smb.conf

配置文件分两部分:

1、Global Settings (55至245行):该设置都是与Samba服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的。

2、Share Definitions (246-尾行):该设置针对的是共享目录个别的设置,只对当前的共享资源起作用。

以下为全局参数和共享参数说明:

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

全局参数---[global]

config file = /usr/local/samba/lib/smb.conf.%m

##config file可以让你使用另一个配置文件来覆盖缺省的配置文件。如果文件不存在,则该项无效。这个参数很有用,可以使得samba配置更灵活,可以让一台 samba服务器模拟多台不同配置的服务器。

workgroup = WORKGROUP

##设定 Samba Server 所要加入的工作组或者域。

server string = Samba Server Version %v

##设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。

netbios name = smbserver

##设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了。

interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

##设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。

hosts allow = 127. 192.168.1. 192.168.10.1

##表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反。

hosts allow=172.17.2.0/255.255.0.0

##表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接

hosts allow=M1,M2

##表示容许来自M1和M2两台计算机连接

hosts [email protected]

##表示容许来自pega网域的所有计算机连接

max connections = 0

##max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。

deadtime = 0

##deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。

time server = yes/n

##time server用来设置让nmdb成为windows客户端的时间服务器。

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

##设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件

max log size = 50

##设置Samba Server日志文件的最大容量,单位为kB,0代表不限制。

security = user

##设置用户访问Samba Server的验证方式,一共有四种验证方式。

share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。

user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。

server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用 Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。

domain:域安全级别,使用主域控制器(PDC)来完成认证。

passdb backend = tdbsam

##passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写:

smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。

tdbsam: 该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库 可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的 参数很多,我们列出几个主要的。

  pdbedit –a username:新建Samba账户。

  pdbedit –x username:删除Samba账户。

  pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。

  pdbedit –Lv:列出Samba用户列表的详细信息。

  pdbedit –c “[D]” –u username:暂停该Samba用户的账号。

  pdbedit –c “[]” –u username:恢复该Samba用户的账号。

ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”

encrypt passwords = yes/no

##是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。

smb passwd file = /etc/samba/smbpasswd

##用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。

username map = /etc/samba/smbusers

##用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。

guest account = nobody

##用来设置guest用户名。

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

##用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。

domain master = yes/no

##设置Samba服务器是否要成为网域主浏览器,网域主浏览器可以管理跨子网域的浏览服务。

local master = yes/no

##local master用来指定Samba Server是否试图成为本地网域主浏览器。如果设为no,则永远不会成为本地网域主浏览器。但是即使设置为yes,也不等于该Samba Server就能成为主浏览器,还需要参加选举。

preferred master = yes/no

##设置Samba Server一开机就强迫进行主浏览器选举,可以提高Samba Server成为本地网域主浏览器的机会。如果该参数指定为yes时,最好把domain master也指定为yes。使用该参数时要注意:如果在本Samba Server所在的子网有其他的机器(不论是windows NT还是其他Samba Server)也指定为首要主浏览器时,那么这些机器将会因为争夺主浏览器而在网络上大发广播,影响网络性能。

os level = 200

##设置samba服务器的os level。该参数决定Samba Server是否有机会成为本地网域的主浏览器。os level从0到255,winNT的os level是32,win95/98的os level是1。

domain logons = yes/no

##设置Samba Server是否要做为本地域控制器。主域控制器和备份域控制器都需要开启此项。

logon script = %u.bat

##当使用者用windows客户端登陆,那么Samba将提供一个登陆档。如果设置成%u.bat,那么就要为每个用户提供一个登陆档。

wins support = yes/no

##设置samba服务器是否提供wins服务。

wins server = wins服务器IP地址

##设置Samba Server是否使用别的wins服务器提供wins服务。

wins proxy = yes/no

##设置Samba Server是否开启wins代理服务。

dns proxy = yes/no

##设置Samba Server是否开启dns代理服务。

load printers = yes/no

##设置是否在启动Samba时就共享打印机。

printcap name = cups

##设置共享打印机的配置文件。

printing = cups

##设置Samba共享打印机的类型。现在支持的打印系统有:bsd, sysv, plp, lprng, aix, hpux, qnx

共享参数

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

[共享名]

comment = 任意字符串

##comment是对该共享的描述,可以是任意字符串。

path = 共享目录路径

##path用来指定共享目录的路径。

browseable = yes/no

##browseable用来指定该共享是否可以浏览。

writable = yes/no

##writable用来指定该共享路径是否可写。

available = yes/no

##available用来指定该共享资源是否可用。

admin users = 该共享的管理者

##admin users用来指定该共享的管理员(对该共享具有完全控制权限)。

valid users = 允许访问该共享的用户

##valid users用来指定允许访问该共享资源的用户。

invalid users = 禁止访问该共享的用户

##invalid users用来指定不允许访问该共享资源的用户。如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)

write list = 允许写入该共享的用户

##write list用来指定可以在该共享下写入文件的用户。

public = yes/no

##public用来指定该共享是否允许guest账户访问。

guest ok = yes/no

#意义同“public”。

------几个特殊共享:

[homes]

comment = Home Directories

browseable = no

writable = yes

valid users = %S

; valid users = MYDOMAIN\%S

[printers]

comment = All Printers

path = /var/spool/samba

browseable = no

guest ok = no

writable = no

printable = yes

[netlogon]

comment = Network Logon Service

path = /var/lib/samba/netlogon

guest ok = yes

writable = no

share modes = no

[Profiles]

path = /var/lib/samba/profiles

browseable = no

guest ok = yes

四、应用实践

要求:

1.建立samba共享,共享目录为/data;

2.共享名为shared,工作组为magedu;

3.添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;

4.添加samba用户gentoo,centos和ubuntu,密码均为“mageedu”;

5.此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问;

6.此samba共享服务允许来自于192.168.1.0/24(可根据自己的网络情况来设置)网络的主机访问

配置过程:

1.先创建相关的用户(系统用户和smb用户)、组、密码

#groupadd develop

#useradd -G develop gentoo

#useradd -G develop centos

#useradd ubuntu

#passwd gentoo

#passwd centos

#pas ubuntu

#smbpasswd -a gentoo

#smbpasswd -a centos

#smbpasswd -a ubuntu

注意:如果smbpasswd设置用户密码不加参数-a,会出现以下错误

[[email protected] ~]# smbpasswd ubuntu

New SMB password:

Retype new SMB password:

Failed to find entry for user ubuntu.

2.创建根下data目录,设置权限可读可写

[[email protected] ~]# mkdir /data

[[email protected] ~]# chmod 777 /data/

3.编辑smb.conf配置文件,共享名为data的共享名为shared,develop可写,其他都只读

# vim /etc/samba/smb.conf

//添加以下内容

hosts allow = 192.168.1               //80行

[shared]      //共享目录

comment = shared

path = /data

browseable = yes

guest ok = no

writable = no

write list = +develop

4.启动smb服务

service smb start

5.用户centos 和ubuntu用户测试

时间: 2024-10-08 23:42:27

Linux之Samba基础知识及应用的相关文章

1)Linux程序设计入门--基础知识

1)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助 1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们 以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(hello.c): int main(int argc,

linux运维基础知识-CentOS7系统安装配置及健康检查

linux运维基础知识 1.完成一台CentOS7.X操作系统安装,分区并配置逻辑卷:2.完成LVM分区扩容20GB存储:3.检查系统CPU/内存/网络/存储性能检查:4.检查操作系统版本:5.检查系统是否有非法账号:6.检查系统日志是否有相关报错:7.检查系统后台是否有非法应用运行: 一:系统安装及配置LVM逻辑卷 1:系统安装(略) 2:分区及配置逻辑卷 LVM简介:逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的

Linux操作系统入门基础知识教程1

第一章 Linux基础知识 硬盘 硬盘是可以存储大量信息资源的媒介.我们平时看到的硬盘是方方正正的一块挺沉的铁匣子,但是其实硬盘是圆的,加上一些控制电路以后,为了便于携带而设计成为方形外壳.但是硬盘真是圆的,不骗你,要不怎么叫做盘呢?第二,你需要知道的是硬盘可以进行分区.可以把硬盘分区成为很多个分区,看来分区即是一个名次也是一个动词.什么叫做名次的分区呢?现在的硬盘越来越大,存放的资源越来越多.为了更合理的管理使用硬盘资源,更有效的提高查询速度和访问质量,我们可以把硬盘划分为很多分区,分别存放一

Linux入门及基础知识

如果操作系统发展史出一部美国大片,那一定是三国硝烟的味道.上世界末的一群西方人,虽没有西部牛仔的放荡不羁,也成就了一段令后人难望其项背的历史.而且,身为Unix之父,Linux之父,计算机开源运动之父,Windows之父,无一例外,都还好好的活在这个他们亲眼见证的,不断发展壮大的信息技术时代. 1970年,美国Bell实验室的Ken Thompson为了玩游戏顺手写出的系统在其同事Dennis Ritch的帮忙开发下,已经颇具规模.73年,两人用 C语言重写该系统,不久该系统也有了自己真正的名字

[转帖] Linux运维基础知识学习内容

原作者地址:https://www.cnblogs.com/chenshoubiao/p/4793487.html 最近在学习 linux  对简单的命令有所掌握 但是 复杂的脚本 shell python 还是没有掌握 这一点需要继续学习... 很多东西仅仅是学会了搭建  非常不够 运维监控的内容会的非常少. Linux系统如果是学习可以选用Redhat或CentOS,特别是CentOS在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,

关于linux的一些基础知识

一.基础 1.linux所有内容以文件形式保存,包括硬件. 2.linux 不区分扩展名,靠权限区分.   #但是,约定 .sh脚本文件  .conf配置文件. 3.-rw-r--r--        #第一位(-文件,d目录,l软链接文件),后面每三位一组(u所有者   g所属者    o其他人),(r读   w写   x执行). 4.cd ./XXX/xxx   #从当前路径开始. 5.常见目录作用:  /根目录    /home普通用户家目录   /root超级用户家目录 二.常用命令 1

Linux操作系统入门基础知识教程3

第三章 Linux 基本使用命令(基本篇)-(高级篇在后面会有,这一章从实用的角度出发介绍基本的操作) 现在请输入你的用户名和密码,当然,我们输入root,这样获得一切管理权限! 你一定非常希望立刻看到那些非常漂亮的图形界面,但是也许我要让你失望了.我建议在没有使用图形界面以前,首先熟练的掌握基本的Linux命令,这样才是一个真正的Linuxer.从哪里开始呢? 1. ls 列出文件和目录的命令 你一定很想知道你的电脑里面有哪些东西,现在执行命令ls,啊,怎么什么都没有?当然啦,这是你第一次登录

【读书笔记】《鸟哥Linux私房菜-基础知识篇》第二节 基础命令

第二节 基础命令 uname –r 查询Linux核心版本. 装置及装置在Linux内的文件名 IDE硬盘机 /dev/hd[a-d] SCSI/SATA/USB硬盘机 /dev/sd[a-p] USB快闪碟 /dev/sd[a-p] 软盘驱动器 /dev/fd[0-1] 打印机 25针:/dev/lp[0-2] USB:/dev/usb/lp[0-15] 鼠标 USB:/dev/usb/mouse[0-15] PS2:/dev/psaux 当前CDROM/DVDROM /dev/cdrom 当

Linux操作系统文件系统基础知识详解(引用内容)

一 .Linux文件结构  文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Linux使用标准的目录结构,在安装的时候,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型.                     /根目录                              ┃┏━━┳━━━┳━━━┳━━━╋━━━┳━━━┳━━━┳━━━┓┃   ┃      ┃