
smb端口映射公网 samba默认端口号
证明怎么写-给老师的一封信作文
2023年3月3日发(作者:重有感)Samba使用大全之samba服务器
Samba使用大全〔一〕-samba服务器
Samba协议基础
在NetBIOS显现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,那个
系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB〔ServerMessageBlock〕协
议。那个协议被Microsoft用于它们LanManager和WindowsNT服务器系统中,实现不同运算机
之间共享打印机、串行口和通讯抽象〔如命名管道、邮件插槽等〕。
随着Internet的流行,Microsoft期望将那个协议扩展到Internet上去,成为Internet上运算机
之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理,
重新命名为CIFS〔CommonInternetFileSystem〕,并打算将它与NetBIOS相脱离,试图使它成
为Internet上的一个标准协议。
因此,为了让Windows和Unix运算机相集成,最好的方法即是在Unix运算机中安装支持
SMB/CIFS协议的软件,如此Windows客户就不需要更换设置,就能如同使用WindowsNT服务
器一样,使用Unix运算机上的资源了。Samba是用来实现SMB的一种软件,它的工作原理是,
让NETBIOS〔Windows95网络邻居的通讯协议〕和SMB〔ServerMessageBlock〕这两个协议运
行于TCP/IP通信协议之上,同时使用Windows的NETBEUI协议让Unix运算机能够在网络邻居
上被Windows运算机看到。它的功能有:
1.共享Linux磁盘给Win95/NT
2.共享Win95/NT磁盘给Linux机器
3.共享Linux打印机给win95/NT
4.共享win95/NT打印机给Linux机器。
同时它的文件服务功能比NT系统还高,而且在Windows2000之前就提供了用户磁盘空间限制的
功能。
Samba的配置
在我写这篇文章的时候,Samba的版本差不多到了2.2.2了,需要的能够通过
ftp:///pub/samba/Binary_Pa...得到最新的rpm安装包。然后执行rpm-Uvh
来安装或者升级它。安装完后,能够看见/etc/samba这么一个名目,
里面存放和Samba相关的一些文件,最要紧的是,现在依照配置文件讲讲它的配置选项:
全局设置:
workgroup=MYGROUP
定义该Samba服务器所在的工作组或者域〔假如下面的security=domain的话〕。
serverstring=MYSambaServer
设定机器的描述,当我们通过网络邻居访问的时候能够在备注里面看见那个内容,而且还能够使
用samba设定的变量。那个地点说一下samba定义的变量:
%S=当前服务名〔假如有的话〕
%P=当前服务的根名目〔假如有的话〕
%u=当前服务的用户名〔假如有的话〕
%g=当前用户说在的主工作组
%U=当前对话的用户名
%G=当前对话的用户的主工作组
%H=当前服务的用户的Home名目
%v=Samba服务的版本号。
%h=运行Samba服务机器的主机名
%m=客户机的NETBIOS名称
%L=服务器的NETBIOS名称
%M=客户机的主机名
%N=NIS服务器名
%p=NIS服务的Home名目
%R=说采纳的协议等级(值能够是CORE,COREPLUS,LANMAN1,LANMAN2,NT1)
%d=当前服务进程的ID
%a=客户机的结构〔只能识别几项:Samba,WfWg,WinNT,Win95〕
%I=客户机的IP
%T=当前日期和时刻
hostsallow=网络或者主机
那个地点能够设置承诺访问的网络和主机IP,比如承诺192.168.1.0/24和192.168.2.1/32访问,就
用hostallow=192.168.1.192.168.2.1127.0.0.1(网络注意后面加〞.〞号,各个项目间用空格隔开,
记得把本机也加到里面去)
printcapname=printcapFile
到printcapFile〔一样是/etc/printcap〕那个文件中取得打印机的描述信息
loadprinters=yes|no
设定是否自动共享打印机而不用设置下面的[printer]一节的相关东西
printing=PrintSystemType
定义打印系统的类型,缺省是lprng,可选项有:bsd,sysv,plp,lprng,aix,hpux,qnx。
guestaccount=pcguest
定义游客帐号,而且需要把那个帐号加入/etc/passwd,不然它就用缺省的nobody
logfile=LogFileName
定义记录文件的位置LogFileName〔一样是用/var/log/samba/%〕
maxlogsize=size
定义记录文件的大小size〔单位是KB,假如是0的话就不限大小〕
security=security_level
定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证
方式如下:
share:没有安全性的级别,任何用户都能够不要用户名和口令访问服务器上的资源。
user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台
NT服务器。假如递交失败,就退到user安全级。
domain:那个安全级别要求网络上存在一台Windows的主域操纵器,samba把用户名和密码递交
给它去验证。
后面三种安全级都要求用户在本Linux机器上也要系统帐户。否那么是不能访问的。
passwordserver=
当前面的security设定为server或者domain的时候才有必要设定它。
passwordlevel=n
这是设定针对一些SMB客户像OS/2之类而设的,如此的系统在发送用户密码的时候,会把密码
转换成大写再发送,如此就和samba的密码不一致,那个参数能够设定密码里承诺的大写字母个
数,如此samba就依照那个数目对接收到的密码进行大小写重组,以重组过的密码尝试验证密码
的正确性。n越大,组合的次数就越多,验证时刻就越长,安全性也会因此变得越低。例如n=2,
用户的密码是abcd,但发送出去事实上是ABCD,samba就会把那个ABCD进行大小写重组,组
合后的结果能够是:Abcd,aBcd,abCd,abcD,abcd,ABcd,AbCd,AbcD,aBCd,aBcD,abCD。
因此假如没有必要,就把n定为是零。如此的话samba只尝试两次,一个是接收到的密码,另一
个尝试的是那个密码差不多上小写的情形。
usernamelevel=n
那个是关于用户名的情形,说明和上面一项类似。
encryptpasswords=yes|no
设置是否对密码进行加密,samba本身有一个密码文件/etc/samba/smbpasswd,假如不对密码进行
加密那么在验证会话期间客户机和服务器之间传递的是明文密码,samba直截了当把那个密码和
Linux里的/etc/samba/smbpasswd密码文件进行验证。然而在Windows95OS/R2以后的版本和
WindowsNTSP3以后的版本缺省都不传送明文密码,要让这些系统能传送明文密码必须在其注
册表里更换,比较苦恼,好的方法确实是把那个地点的那个开关设置为yes。
smbpasswdfile=smbPasswordFile
设置存放samba用户密码的文件smbPasswordFile(一样是/etc/samba/smbpasswd)。
sslCAcertFile=sslFile
当samba编译的时候支持SSL的时候,需要指定SSL的证书的位置〔一样在
/usr/share/ssl/certs/〕。
unixpasswordsync=yes|no
passwdprogram=/usr/bin/passwd%u
passwdchat=*New*UNIX*password*%n
*ReType*new*UNIX*password*%n
*passwd:*all*authentication*tokens*updated*successfully*
这三项设置能否从windows的应用程序修改unix系统的用户密码
usernamemap=UsermapFile
指定用户映射文件〔一样是/etc/samba/smbusers〕,当我们在那个文件里面指定一行root=
administratoradmin的时候,客户机的用户是admin或者administrator连接时会被当作用户root
看待。
include=MachineConfFile
指定对不同机器的连接采纳不同的配置文件MachineConfFile〔一样为了灵活治理使用
/etc/samba/.%m,由于采纳了samba的变量,把配置文件和客户机的NETBIOS名称关联
起来,能专门容易地操纵这些客户机的权限和设置〕。
socketoptions=TCP_NODELAYSO_RCVBUF=8192SO_SNDBUF=8192
那个是网络socket方面的一些参数,能实现最好的文件传输性能。相关的选项还有
SO_KEEPALIVE、SO_REUSEADDR、SO_BROADCAST、IPTOS_LOWDELAY、
IPTOS_THROUGHPUT、SO_SNDLOWAT〔*〕、SO_RCVLOWAT〔*〕,带*号的要指定数值。
一样假如在本地网络,就只用IPTOS_LOWDELAY,假如是有一个本地网络的,就用
IPTOS_LOWDELAYTCP_NODELAY,假如是广域网络,就试试IPTOS_THROUGHPUT。
interfaces=interface1interface2
假如有多个网络接口,就必须在那个地点指定。如interface=192.168.12.2/24192.168.13.2/24
remotebrowsesync=host(subnet)
那个地点指定扫瞄列表同步信息从哪里取得,假如用host〔比如192.168.3.25〕或者整个子网
〔192.168.5.255〕。
★那个地点说明一下什么是扫瞄〔Browse〕:
在SMB协议中,运算机为了访问网络资源,就需要了解网络上存在的资源列表〔例如在Windows
下使用网络邻居查看能够访问的运算机〕,那个机制就被称为扫瞄〔Browse〕。尽管SMB协议
中经常使用广播的方式,但假如每次都使用广播的方式了解当前的网络资源〔包括提供服务的运
算机和各个运算机上的服务资源〕,就需要消耗大量的网络资源和白费较长的查找时刻,因此最
好在网络中爱护一个网络资源的列表,以方便查找网络资源。只有必要的时候,才重新查找资源,
例如使用Windows下的查找运算机功能。
但没有必要每个运算机都爱护整个资源列表,爱护网络中当前资源列表的任务由网络上的几
个专门运算机完成的,这些运算机被称为Browser,这些Browser通过记录广播数据或查询名字
服务器来记录网络上的各种资源。
Browser并不是事先指定的运算机,而是在一般运算机之间通过自动进行的推举产生的。不同的
运算机能够按照其提供服务的能力,设置在推举时具备的不同权重。为了保证一个Browser停机
时网络扫瞄仍旧正常,网络中常常存在多个Browser,一个为主Browser〔MasterBrowser〕,其
他的为备份Browser。★
remoteannounce=host(subnet)
指定这些机器向网络宣告自己,而不是有Browser得到。
localmaster=yes|no
那个参数指定nmbd是否试图成为本地主扫瞄器,默认值是yes,假如设为no那么samba服务器
就永久都可不能成为本地主扫瞄器。但即使设置了yes,也不等于samba服务器就会成为本地主
扫瞄器。只是参与本地主扫瞄器选择。
oslevel=n
n的值是个整数,决定了nmbd是否有机会成为本地广播区域的工作组里的本地主扫瞄器,默认
值是零,零那么意味着nmbd失去扫瞄选择。假如要nmbd更有机会成为本地主扫瞄器的话,能
够设为65。
domainmaster=yes|no
那个参数让nmbd成为一个域扫瞄器,取得各本地主扫瞄器的扫瞄列表,并将整个域的扫瞄列表
递交给各本地主扫瞄器。
preferredmaster=yes|no
那个参数指定nmbd是否是工作组里的首要的主扫瞄器,假如指定为yes,nmbd在启动的时候就
强制一个扫瞄选择。
★Domainmaster和localmaster
工作组和域这两个概念在进行扫瞄时具备同样的用处,差不多上用于区分并爱护同一组扫瞄数据
的多个运算机。事实上他们的不同在于认证方式上,工作组中每台运算机都差不多上是独立的,
独立对客户访问进行认证,而域中将存在一个〔或几个〕域操纵器,储存对整个域中都有效的认
证信息,包括用户的认证信息以及域内成员运算机的认证信息。扫瞄数据的时候,并不需要认证
信息,Microsoft将工作组扩展为域,只是为了形成一种分级的名目结构,将原有的扫瞄和名目服
务相结合,以扩大Mircrosoft网络服务范畴的一种策略。
工作组和域都能够跨过多个子网,因此网络中就存在两种Browser,一种为DomainMaster
Browser,用于爱护整个工作组或域内的扫瞄数据,另一种为LocalMasterBrowser,用于爱护本
子网内的扫瞄数据,它和DomainMasterBrowser通信以获得所有的可扫瞄数据。划分这两种
Browser要紧是由于扫瞄数据依靠于本地网广播来获得资源列表,不同子网之间只能通过扫瞄器
之间的交流能力,才能互相交换资源列表。
然而,为了扫瞄多个子网的资源,必须使用NBNS名字服务器的解析方式,没有NBNS的关心,
运算机将不能获得子网外运算机的NetBIOS名字。LocalMasterBrowser也需要查询NetBIOS名
字服务器以获得DomainMasterBrowser的名字,以相互交换网络资源信息。
由于域操纵器在域内的专门性,因此域操纵器倾向于被用做Browser,主域操纵器应该被用作
DomainMasterBrowser,他们在推举时设置的权重较大。★
preservecase=yes|no
shortpreservecase=yes|no
指定拷贝DOS文件的时候保持大小写,缺省是no
defaultcase=lower|upper
所有的DOS文件的缺省是大写依旧小写
ca nsitive=yes|no
大小写敏锐,一样是no,不然会显现一些问题。
共享设置:
★共享资源:
每个SMB服务器能对外提供文件或打印服务,每个共享资源需要被给予一个共享名,那个名字
将显示在那个服务器的资源列表中。假如一个资源的名字的最后一个字母为$,那么那个共享名
就为隐藏共享,不能直截了当表现在扫瞄列表中,而只能通过直截了当访问那个名字来进行访问。
在SMB协议中,为了获得服务器提供的资源列表,必须使用一个隐藏的资源名字IPC$来访问服
务器,否那么客户无法获得系统资源的列表。★
共享设置中有个比较惊奇的段:
[homes],在文件中一样没有对那个名目的设定特定内容比如路径等。当客户机发出服
务要求时,就在文件的其它部分查找友特定内容的服务。假如没有发觉这些服务,同时
提供了homes段时,那么就搜索密码文件得到用户的Home名目。通过Homes段,Samba能够得
到用户的Home名目并使之共享。下面是那个段的最差不多的几个设置。
[homes]
comment=HomeDirectory
browseable=no
writable=yes
比较正常的共享的配置如下例:
[MyShare]
comment=grind’sfile
path=/home/grind
allowhosts=host(subnet)
denyhosts=host(subnet)
writable=yes|no
user=user(@group)
validusers=user(@group)
invalidusers=user(@group)
readlist=user(@group)
writelist=user(@group)
adminlist=user(@group)
public=yes|no
hidedotfiles=yes|no
createmode=0755
directorymode=0755
syncalways=yes|no
shortpreservecase=yes|no
preservecase=yes|no
ca nsitive=yes|no
manglecase=yes|no
defaultcase=upper|lower
forceuser=grind
widelinks=yes|no
maxconnections=100
deletereadonly=yes|no
其中[]里面的MyShare指定共享名,一样确实是网络邻居里面能够看见的文件夹的名字。
comment指的是对改共享的备注。
path指定共享的路径,其中能够配合samba变量使用。比如你能够指定path=/data/%m,如此假
如一台机器的NETBIOS名字是grind,它访问MyShare那个共享的时候确实是进入/data/grind名目,
而关于NETBIOS名是glass的机器,那么进入/data/glass名目。
allowhosts和denyhosts和前面的全局设置的方法一样那个地点不再提及。
writeable指定了那个名目缺省是否可写,也能够用readonly=no来设置可写。
user设置所有可能使用该共享资源的用户,也能够用@group代表group那个组的所有成员,不同
的项目之间用空格或者逗号隔开。
validusers指定能够使用该共享资源的用户和组。
invalidusers指定不能够使用该共享资源的用户和组。
readlist指定只能读取该共享资源的用户和组。
writelist指定能读取和写该共享资源的用户和组。
adminlist指定能治理该共享资源〔包括读写和权限给予等〕的用户和组。
public指明该共享资源是否能给游客帐号访问,那个开关有时候也叫guestok,因此有的配置文
件中显现guestok=yes事实上和public=yes是一样的。
hidedotfiles指明是不是像unix那样隐藏以〝.〞号开头的文件。
createmode指明新建立的文件的属性,一样是0755。
directorymode指明新建立的名目的属性,一样是0755。
syncalways指明对该共享资源进行写操作后是否进行同步操作。
shortpreservecase指明不管文件名大小写。
preservecase指明保持大小写。
ca nsitive指明是否对大小写敏锐,一样选no,不然可能引起错误。
manglecase指明混合大小写。
defaultcase指明缺省的文件名是全部大写依旧小写。
forceuser强制把建立文件的属主是谁。假如我有一个名目,让guest能够写,那么guest就能够
删除,假如我用forceuser=grind强制建立文件的属主是grind,同时限制createmask=0755,如
此guest就不能删除了。
widelinks指明是否承诺共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文
件或者名目,假如设置widelinks=no将使该连接不可用。
maxconnections=n设定同时连接数是n。
deletereadonly指明能否删除共享资源里面差不多被定义为只读的文件。
有两类专门的共享,分别是光驱和打印机
光驱的共享设置:
[cdrom]
comment=grind’scdrom
path=/mnt/cdrom
public=yes
browseable=yes
rootpreexec=/bin/mount-tiso9660/dev/cd0/mnt/cdrom
rootpostexec=/bin/umount/mnt/cdrom
那个地点rootpreexec指明了连接时用root的身份运行mount命令,而rootpostexec那么指明了
断开时用root身份运行umount,有效实现了对光驱的共享。
打印机共享的设置:
[printers]
path=/var/spool/samba
writeable=no
guestok=yes
printable=yes
printerdriver=HPLaserJet5L
那个地点printable指明该打印机能够打印,guestok说明游客也能打印,path指明打印的文件队
列临时放到/var/spool/samba名目下。printerdriver的作用是指明该打印机的类型,如此我们在安
装网络打印机的时候能够直截了当自动安装驱动而不必选择。
添加用户:
samba添加用户比较方便,一样是用smbadduser,用法是smbadduserunixid:netid,举个例子:假
如你的本机有个叫grind的用户,你用smbaddusergrind:grind,如此从网上邻居访问的时候用户
名就用grind,而假如你用了smbaddusergrind:glass的话,网上邻居访问的时候提供的用户名确实
是glass而不是grind了。
关于samba服务端的设置差不多确实是这些,我想一样应用中所要使用的上面几乎都覆盖到了,
因此有些不重要的就省略了,假如要更加详细的信息能够用参考。<
Samba使用大全〔二〕-Samba客户端
使用Samba网络打印:
使用unix网络打印往常的文章比较少涉及,最近试验了一下,成效依旧不错的,现在讲讲差不
多的实现方法:
比如你要建立一台网络打印机grind,而打印机对应网络上面的//glass/HPLaserj,所有需要配置的
文件有下面几个:
1./etc/printcap,内容一样为:
grind:
:sh:#禁止提示的header
:ml=0:#打印的文件的长度下限,
:mx=0:#最大的打印文件大小,0为不限制
:sd=/var/spool/lpd/grind:#打印机的spool名目
:lp=|/usr/bin/smbprint:#打印输出需要的设备名或者管道名
:lpd_bounce=true:#强制lpd守护进程过滤打印文件
:if=/usr/share/printconf/mf_wrapper:#过滤命令文件
2.smbprint那个一样在安装完smb相关的rpm包以后就有了,要紧内容是:
evalacct_file=$$
#spoo