百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Linux服务器配置-samba服务配置(一)

sinye56 2024-11-01 13:33 2 浏览 0 评论

一、samba 软件简介

SMB(Server Messages Block,信息服务块)是基于NetBIOS(Network Basic Input/Output System)通讯协议开发的一种在局域网上共享文件和打印机的通信协议,主要用于 Windows 系统与类 Unix 系统之间进行数据共享服务,由服务器与客户端程序构成。由于NetBl0S是一种局域网通讯协议,所以SMB无法跨路由使用(Router/Gateway),但是可以通过设置“NetBIOS over TCP/IP”使得SMB不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。另外,SMB软件的作者在申请商标时,因为SMB没有实际意义,所以更名为samba。

samba程序主要应用于以下方面:

  • 文件共享
  • 共享打印机
  • Samba登陆时身份验证
  • 可以进行Windows的主机名解析
  • 可共享如CDROM等外围设备。

二、samba 服务的安装

目前在CentOS 6系统中主要是samba 3.x的版本,在RHEL 7或CentOS 7系统中主要是samba 4.x的版本。

1、samba 程序包说明

samba 3.x的版本

  • samba #主服务程序
  • samba-client #linux samba客户端程序
  • samba-common #主服务程序与客户端程序共用文件
  • samba-winbind #Windows域映射服务程序
  • samba-winbind-clients #Windows域映射客户端程序

samba 4.x

  • samba #主服务程序
  • samba-libs #主服务程序库文件
  • samba-client #linux samba客户端程序
  • samba-client-libs #linux samba客户端程序库文件
  • samba-common #主服务程序与客户端程序共用文件
  • samba-common-libs #主服务程序与客户端程序共用库文件
  • samba-common-tools #主服务程序与客户端程序共用工具文件
  • samba-winbind #Windows域映射服务程序
  • samba-winbind-clients #Windows域映射客户端程序
  • samba-winbind-modules #Windows域映射模块

2、 安装 samba 程序

CentOS6 系统

yum install -y samba samba-client

RHEL7或CentOS7系统

yum install -y samba samba-client samba-winbind samba-winbind-clients

三、 samba 服务的启动与端口说明

samba 服务是通过以下两个守护进程来控制共享的,分别是:

  • smbd:这个守护进程主要用来管理samba服务器对文件、打印资源的共享访问,利用TCP协议来传输数据,开放的端口为139和445。
  • nmbd:这个守护进程主要用来管理samba服务器工作组、NetBIOS主机名的解析,主要利用UDP协议开启137,138端口来负责名称解析的任务。

所以启动 samba 服务需要启动这两个守护进程。

设置 samba 服务开机自启,并启动服务。

CentOS6 系统

  • chkconfig smb on #设置开机自启
  • chkconfig nmb on #设置开机自启
  • chkconfig --list | grep -E 'smb|nmb' #查看自启状态
  • service smb start #启动服务
  • service nmb start #启动服务

RHEL7或CentOS7系统

  • systemctl enable smb.service #设置开机自启
  • systemctl enable nmb.service #设置开机自启
  • systemctl list-unit-files | grep -E 'smb|nmb' #查看自启状态
  • systemctl start smb.service #启动服务
  • systemctl start nmb.service #启动服务

四、与 samba 服务的相关文件说明

1. /etc/samba/smb.conf

samba服务的主配置文件,主要用于samba服务器全局及共享资源的相关设置。

a、 配置文件结构

#Global Settings全局设置

[global] 全局设置

设置项

#Share Definitions共享定义

[homes] 用户家目录共享设置

设置项

[myshare] 自定义共享目录设置

设置项

[printers]:打印机共享设置

设置项

设置项格式为:name = value

b、[global] 全局设置项参数

workgroup = MYGROUP

用于设定samba服务器所要加入的工作组名或域名。

server string = Samba Server Version %v

用于设定samba服务器的注释,可以不填。%v表示samba的版本。

netbios name = MYSERVER

用于设置samba服务器的NetBIOS名称,每台 samba 服务器需设置设为不同的名称。netbios name和workgroup名称需不相同。

interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

用于设置samba服务器对那块网卡进行监听,可以写网卡名,也可以写该网卡的IP地址,多个参数用空格分开。

hosts allow = 127. 192.168.12. 192.168.13.

用于设置允许连接samba服务器的客户端,多个参数以空格隔开。表示方法见以下说明。

hosts deny = name1,name2

用于设置禁止连接samba服务器的客户端,多个参数以空格隔开。表示方法见以下说明。

【表示方法说明】

用完整IP地址表示:如192.168.1.100

用IP网段表示:如127. 192.168.0.

用EXCEPT进行排除表示:如 192.168.1.EXCEPT 192.168.1.100

用机器名表示:name1,name2

max connections = 0

用于设置连接samba服务器的最大连接数,如果超过这个连接数,则新的连接请求将被拒绝。0表示不限制。

deadtime = 10

用于设置samba服务器与客户端在多长时间内没有任何打开文件操作就断开连接的时间。单位是分钟,0代表不自动切断任何连接。

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

用于设置samba服务器日志文件的存储位置以及日志文件名称,%m表示客户端的NetBIOS主机名

max log size = 50

用于设置samba服务器日志文件的最大容量,单位为kB,0代表不限制。

security = user

用于设置用户访问samba服务器的验证方式,共有四种验证方式。

  • share

用户访问samba服务器不需要提供账号和密码,安全性能较低。

注意:新版本的samba security = share已经不能用了,要换成

security = user

map to guest = Bad User

如果继续使用share,就会导致系统服务起不来。

  • user

用户访问samba服务器需要使用账号和密码,而且身份验证由samba服务器负责,账号和密码需在samba服务器中建立。

  • server

用户访问samba服务器需要使用账号和密码,可指定其他Windows服务器或另一台samba服务器来作身份验证。如果认证失败,samba服务器将使用user安全模式作为替代的认证方式。

  • domain

用户访问samba服务器需要使用账号和密码,使用Windows域控制器(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用户列表。

pdbedit –Lv #显示samba用户列表的详细信息。

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

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

  • ldapsam

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

encrypt passwords = yes/no

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

password server = <NT-Server-Name>

用于在security = server时,指定某台服务器作为用户认证服务器。

smb passwd file = /etc/samba/smbpasswd

用于定义samba用户的密码文件存放位置及名称,习惯设置为/etc/samba/smbpasswd 。

username map = /etc/samba/smbusers

用于定义用户名映射文件存放位置及名称,习惯设置为/etc/samba/smbusers。此文件用于设置Windows系统用户名与Linux系统用户名的映射关系,如 root = administrator admin,这样就可以用administrator或admin这两个用户来代替root用户登陆samba服务器,更贴近windows用户的习惯。

guest account = nobody

用于设置samba服务器用guest用户登录时,所对应的Linux系统用户名,默认为nobody用户。

smb ports = 445 139

用于指定服务器应该侦听哪些端口以获取SMB流量,默认为139 445端口。

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

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

domain master = yes/no

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

local master = yes/no

用于指定samba服务器是否试图成为本地samba网络的主浏览器。如果设为no,则永远不会成为主浏览器。但是即使设置为yes,也不等于该samba服务器就能成为主浏览器,还需要参加选举。

preferred master = yes/no

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

如果同一个区域内有多台samba服务器,将上面三个参数设定在一台服务器即可。

os level = 200

用于设置samba服务器的os level值。该参数决定samba服务器是否有机会成为本地samba网络的主浏览器。os level从0到255,WINNT的os level是32,win95/98的os level是1。Windows 2000的os level是64。如果设置为0,则意味着samba服务器将失去浏览选择。如果想让samba服务器成为PDC,需将它os level值设置大些。

domain logons = yes/no

用于设置samba服务器是否要作为本地域控制器。主域控制器和备份域控制器都需要开启此项。

wins support = yes/no

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

wins server = Windows服务器IP地址

用于设置samba 服务器是否使用别的Windows服务器提供wins服务。

wins proxy = yes/no

用于设置samba 服务器是否开启wins代理服务。

dns proxy = yes/no

用于设置samba 服务器是否开启dns代理服务。

load printers = yes/no

用于设置是否在启动samba时就共享打印机。

printcap name = cups

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

printing = cups

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

c、[share name] 共享参数

comment = 任意字符串

用于设置对该共享资源的描述,可以是任意字符串。

path = 共享目录路径

用于指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的NetBIOS name,用宏表示主要用于[homes]共享域。例如:如果我们不打算用home段作为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios name的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。

browseable = yes/no

用于指定该共享资源是否浏览可见。

read only = yes/no

用于指定该共享资源是否只读

writable = yes/no

用于指定该共享资源是否可写。

directory mask = 0755

用于设置用户新建目录的权限。默认值为directory mask = 0755

create mask = 0744

用于设置用户新建文件的权限。默认值为create mask = 0744

available = yes/no

用于指定该共享资源是否可用。

admin users = 该共享的管理者

用于指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。

例如:admin users = name1,name2(多个用户中间用逗号隔开)。

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

用于指定允许访问该共享资源的用户。例如:valid users = name1,@name1,@name2(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)

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

用于指定禁止访问该共享资源的用户。例如:invalid users = root,@name1(多个用户或组中间用逗号隔开。)

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

用于指定可以在该共享下写入文件的用户。例如:write list = name1,@name2

guest ok = yes/no

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

public = yes/no

同guest参数。

d、在配置文件中常用的变量

  • %d samba服务器的进程号。
  • %D 当前用户的域或工作组的名称。
  • %g 当前登陆的用户组名。
  • %h samba主机的HOSTNAME。
  • %H 用户的家目录。
  • %l client端的IP地址。
  • %L 服务器端的NetBIOS主机名。
  • %m client端的NetBIOS主机名。
  • %M client端的lnternet 主机名,就是HOSTNAME。
  • %S 当前服务的名称,表示任何可登入的使用者都能登录。
  • %T 目前的日期与时间。
  • %u 当前登陆的用户名。
  • %v samba的版本号。
  • %w winbind分隔符。

2、 /etc/samba/Imhosts

NetBIOS name 与IP地址的对应关系文件,一般samba会自动搜索(只对本机生效)。目前Samba预设会去使用本机名称(hostname)作为NetBl0S name,因此不需要设定也可以。

3、 /etc/sysconfig/samba

提供启动smbd和nmbd服务时,要加入的相关服务参数。

4、/etc/samba/smbusers

用来设置Windows系统与Linux系统管理员与访客用户名之间的对应关系,需要配置文件中“username map”选项支持。如在Windows系统中管理员为administrator,Linux系统中为root。可在此文件中进行如下设置。

root = administrator admin

nobody = guest pcguest smbguest

5、/var/lib/samba/private/passdb.tdb,secrets.tdb

管理samba的用户账号和密码的数据库文件。

6、/usr/share/doc/samba-<版本>

samba相关的所有技术文档。

五、samba管理常用命令

  • testparm(/usr/bin/testparm)

服务器端命令,用于检验samba服务配置文件smb.conf的语法是否正确。当编辑过smb.conf文件需要使用这个命令来进行检查。

  • smbstatus(/usr/bin/smbstatus)

服务器端命令,显示samba服务器的联机状态,包括samba服务器联机的PlD,分享的资源,正在使用的用户等信息。

  • smbpasswd,pdbedit(/usr/bin/smbpasswd or pdbedit)

服务器端命令,用于管理samba服务的用户账号和密码,早期使用smbpasswd命令, 后因使用TDB数据库文件来保存samba用户信息,改为pdbedit 命令来管理用户数据。

  • tdbdump(/usr/bin/tdbdump)

服务器端命令,用于查看samba用户信息数据库文件的内容。需安装tdb-tools软件包。

  • tdbtool(/usr/bin/tdbtool)

服务器端命令,可直接进入数据库文件手动修改samba用户的账号与密码。需安装tdb-tools软件包。

  • mount.cifs(/sbin/mount.cifs)

客户端命令,在Linux系统上,可使用mount(mount.cifs)命令将远程主机分享的资源挂载到Linux主机上。

  • nmblookup(/usr/bin/nmblookup)

客户端命令,主要用于查出NetB10S name。

  • smbtree(/usr/bin/smbtree)

客户端命令,以工作组与计算机名方式,树形显示samba服务的共享资源列表。

  • smbclient(/usr/bin/smbclient)

客户端命令,来查看其他计算机所分享出来的共享资源信息。

以上是我在学习Linux系统中整理的一些学习要点,肯定会有不对的地方,希望各位大侠给与指正,我们共同学习!谢谢!

下篇:Linux服务器配置-samba服务配置(二)

将介绍samba服务的防火墙配置,并通过实例说明samba共享资源无需密码访问的配置。

相关推荐

Linux两种光驱自动挂载的方法

环境:CentOS6.4西昆云服务器方式一修改fstab文件/etc/fstab是系统保存文件系统信息?静态文件,每一行描述一个文件系统;系统每次启动会读取此文件信息以确定需要挂载哪些文件系统。参...

linux系统运维,挂载和分区概念太难?在虚机下操作一次全掌握

虚拟机的好处就是可以模拟和学习生产环境的一切操作,假如我们还不熟悉磁盘操作,那先在虚机环境下多操作几次。这次来练习下硬盘扩容操作。虚拟机环境:centos8vm11linux设备命名规则在linux中...

Linux 挂载 NFS 外部存储 (mount 和 /etc/fstab)

mount:手工挂载,下次重启需再重新挂载,操作命令:mount-tnfs-ooptionsserver:/remote/export/local/directory上面命令中,本地目录...

在Linux中如何设置自动挂载特定文件系统(示例)

Linux...

Linux环境中的绑定挂载(bind mount)

简介:Linux中的mount命令是一个特殊的指令,主要用于挂载文件目录。而绑定挂载(bindmount)命令更为特别。mount的bind选项将第一个目录克隆到第二个。一个目录中的改变将会在...

Linux挂载CIFS共享 临时挂载 1. 首先

如何解决服务器存储空间不足的问题?大家好,欢迎回来。在上一期视频中,我为大家介绍了如何利用Linux挂载来扩容服务器存储空间。这一期视频,我将以Linux为例,教大家如何进行扩容。群辉使用的是Linu...

Linux 硬盘挂载(服务器重启自动挂载)

1、先查看目前机器上有几块硬盘,及已挂载磁盘:fdisk-l能够查看到当前主机上已连接上的磁盘,以及已经分割的磁盘分区。(下面以/dev/vdb磁盘进行分区、挂载为例,挂载点设置为/data)df...

linux 挂载磁盘

在Linux中挂载硬盘的步骤如下:...

笨小猪教您Linux磁盘挂载

本教程针对Linux系统比较熟悉或者想学习Linux基础的用户朋友,本教程操作起来比较傻瓜式,跟着步骤就会操作,本文使用的工具是XShell同时多多注意空格(文中会有提示)。【问答】什么是磁盘挂载?答...

Linux 磁盘挂载和docker安装命令

本篇给大家介绍Linux磁盘挂载和docker安装的相关内容,Linux服务器的操作是一个手熟的过程,一些不常用的命令隔断时间就忘记了,熟话说好记性不如烂笔头,还需在平时的工作中多练习记录。...

Linux设置开机自动挂载分区

有时候,我们在安装完Linux系统之后,可能在使用过程中添加硬盘或者分区进行使用,这时候就需要手动把磁盘分区挂载到某个路径,但是开机之后就会消失,需要重新挂载,非常麻烦,那么我们应该如何设置开机自动挂...

在linux挂载一个新硬盘的完整步骤

以下是在Linux中挂载新原始磁盘的完整步骤,包括分区、创建文件系统以及使用UUID在/etc/fstab中启动时挂载磁盘:将新的原始磁盘连接到Linux系统并打开电源。运行以下命令,...

Linux系统如何挂载exFAT分区

简介:Linux系统中不能像Windows系统那样自动识别加载新设备,需要手动识别,手动加载。Linux中一切皆文件。文件通过一个很大的文件树来组织,文件树的根目录是:/,从根目开始录逐级展开。这些文...

Linux系统挂载硬盘

fdisk-l查看可挂载的磁盘都有哪些df-h查看已经挂载的磁盘...

WSL2发布,如何在Win10中挂载Linux文件系统

WSL2是最新版本的架构,它为Windows子系统提供支持,使其能够在Windows上运行ELF64Linux二进制文件。通过最近的更新,它允许使用Linux文件系统访问存储在硬盘中的文件。如果你...

取消回复欢迎 发表评论: