想找个专业做网站公司,网站背景如何做,网站双链接怎么做,网站建设网站备案所需资料服务名:smb配置目录:/etc/sabma/主配置文件:/etc/sabma/smb.conf# Global Settings 17行workgroup语法 workgtoup 工作组群;
预设 workgroup MYGROUP
说明 设定 Samba Server 的工作组
例 workgroup workgroup 和WIN2000S设为一个组#xff0c;可在网上邻居可中看到… 服务名:smb配置目录:/etc/sabma/主配置文件:/etc/sabma/smb.conf# Global Settings 17行workgroup语法 workgtoup 工作组群;
预设 workgroup MYGROUP
说明 设定 Samba Server 的工作组
例 workgroup workgroup 和WIN2000S设为一个组可在网上邻居可中看到共享
例 workgroup example 和WIN2008域设为一个组可在域环境中使用如example.com 取域前缀samba加域时使用21行server string 语法 server string 说明;
预设 sarver string Samba Server
说明 设定 Samba Server 的注释一般是hostname
其他 支持变量 t%-访问时间 I%-客户端IP m%-客户端主机名 M%-客户端域名 S%-客户端用户名
例 server string this is a Samba Server 设定出现在Windows网上邻居的 Samba Server 注释为 this is a Samba Server28行hosts allow语法 hosts aoolw IP地址; ...
预设 ; host allow 192.168.1. 192.168.2. 127.
说明 限制允许连接到 Samba Server 的机器多个参数以空格隔开。表示方法可以为
完整的IP地址如 192.168.0.1
网段如 192.168.0.
例 hosts allow 192.168.1. 192.168.0.1 表示允许192.168.1 网段的机器 网址为192.168.0.1 的机器 连接到自己的samba server32行printcap name 语法 printcap name 打印机配置文件;
预设 printcap name /etc/printcap
说明 设定 samba srever 打印机的配置文件
例 printcap name /etc/printcap 设定 samba srever 参考 /etc/printcap 档的打印机设定33行load printers语法 load printers yes/no;
预设 load printers yes
说明 是否在开启 samba server 时即共享打印机38行printing语法 printing 打印机类型;
预设 printing lprng
说明 设定 samba server 打印机所使用的类型,37行为目前所支持的类型42行guest account语法 guert account 帐户名称;
预设 guert account pcguest
说明 设定访问 samba server 的来宾帐户(即访问时不用输入用户名和密码的帐户),若设为pcguest的话则为默认为nobody用户
例 guert account andy 设定设定访问 samba server 的来宾帐户以andy用户登陆,则此登陆帐户享有andy用户的所有权限46行log file语法 log file 日志文件;
预设 log file /var/log/samba/%m.log
说明 设定 samba server 日志文件的储存位置和文件名(%m代表客户端主机名)49行max log size语法 max log size ??KB;
预设 max log size 0
说明 设定日子文件的最大容量,单位KB 这里的预设值0代表不做限制53行security语法 security 等级;
预设 security user
说明 设定访问 samba server 的安全级别 共有四种
share---不需要提供用户名和密码
user----需要提供用户名和密码,而且身份验证由 samba server 负责
server--需要提供用户名和密码,可指定其他机器(winNT/2000/XP/2008)或另一台 samba server作身份验证
domain--需要提供用户名和密码,指定winNT/2000/XP域服务器作身份验证
ads 这里 也是winNT/2000/XP域服务器作身份验证60行password server 语法 password server IP地址/主机名;
预设 password server NT-Server-Name;
说明 指定某台服务器(包括windows 和 linux)的密码,作为用户登入时验证的密码
其他 此项需配合 security server时,才可设定本参数64行password level 65行username level 语法 password level 位数;
username level 位数;
预设 password level 8
username level 8
说明 设定用户名和密码的位数,预设为8位字符70行encrypt passwords 语法 encrypt passwords yes/no;
预设 encrypt passwords yse
说明 设定是否对samba的密码加密71行smb passwd file语法 smb passwd file 密码文件;
预设 smb passwd file /etc/samba/smbpasswd
说明 设定samba的密码文件130行local master 语法 local master yes/no;
预设 local master no
说明 设定 samba server 是否要担当LMB角色(LMB负责收集本地网络的Browse List资源),通常无特殊原因设为no134行os level 33语法 os level 数字;
预设 os level 33
说明 设定 samba server的os level. os level从 0 到 255 . winNT的os level为33, win95/98的os level 是 1 .
若要拿samba server 当LMB或DMB则它的os level至少要大于NT的33以上139行domain master语法 domain master yes/no;
预设 domain master yes
说明 设定 samba server 是否要担当DMB角色(DMB会负责收集其他子网的Browse List资源),通常无特殊原因设为no143行preferred master语法 preferred master yes/no;
预设 preferred master yes
说明 设定 samba server 是否要担当PDC角色(PDC会负责追踪网络帐户进行的一切变更),通常无特殊原因设为no.
(同一网段内不可有两个PDC,他们会每5分钟抢主控权一次)163行wins support 语法 wins support yes/no;
预设 wins support yes
说明 设定samba server 是否想网络提供WINS服务,通常无特殊原因设为no.
除非所处网络上没有主机提供WINS服务且需要此台samba server提供WINS服务是才设yes
其他 wins support 和 wins server 只能选择一个167行wins server语法 wins server IP地址;
预设 wins server w.x.y.z
说明 设定samba server 是否要使用别台主机提供的WINS服务.通常无特殊原因设为no.除非所处网络上有一台主机提供WINS服务才要设yes
其他 wins support 和 wins server
例 wins server 192.168.0.1 表示samba server要使用192.168.0.1提供的WINS服务# Share Definitions [homes]
comment Home Directories
browseable no
writable yes
valid users %S使用者本身的家目录当使用者以samba使用者身份登入samba server 后samba server 底下会看到自己的家目录目录名称是使用者自己的帐号[分享的资源名称]指令1; (参数)指令2; (参数)..........................要提供分享资源时须先把欲分享的资源以 [ ] 符号括住底下通常会带指令和参数来表示此资源的设定和存取权限等,详情如下comment---------注释说明path------------分享资源的完整路径名称除了路径要正确外目录的权限也要设对browseable------是yes/否no在浏览资源中显示共享目录若为否则必须指定共享路径才能存取printable-------是yes/否no允许打印hide dot ftles--是yes/否no隐藏隐藏文件public----------是yes/否no公开共享若为否则进行身份验证(只有当security share 时此项才起作用)guest ok--------是yes/否no公开共享若为否则进行身份验证(只有当security share 时此项才起作用)read only-------是yes/否no以只读方式共享当与writable发生冲突时也writable为准writable--------是yes/否no不以只读方式共享当与read only发生冲突时无视read onlyvaild users-----设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/组名)invalid users---设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/组名)read list-------设定此名单内的成员为只读(用户名/组名)write list------若设定为只读时则只有此设定的名单内的成员才可作写入动作(用户名/组名)create mask-----建立文件时所给的权限directory mask--建立目录时所给的权限force group-----指定存取资源时须以此设定的群组使用者进入才能存取(用户名/组名)force user------指定存取资源时须以此设定的使用者进入才能存取(用户名/组名)allow hosts-----设定只有此网段/IP的用户才能访问共享资源allwo hosts 网段 except IPdeny hosts------设定只有此网段/IP的用户不能访问共享资源allow hosts本网段指定IP指定IPdeny hosts指定IP本网段指定IP看到这里您对配置已经有了一定的了解了吧下面的内容有些繁琐可以简略的看看。# samba经典主要是针对傻瓜式学习Samba使用大全一samba服务器Samba协议基础在NetBIOS 出现之后Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统这个系统基于NetBIOS设定了一套文件共享协议 Microsoft称之为SMBServer Message Block协议。这个协议被Microsoft用于它们Lan Manager和Windows NT服务器系统中实现不同计算机之间共享打印机、串行口和通讯抽象如命名管道、邮件插槽等。随着 Internet的流行Microsoft希望将这个协议扩展到Internet上去成为Inter net上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理重新命名为 CIFSCommon Internet File System并打算将它与NetBIOS相脱离试图使它成为Internet上的一个标准协议。因此为了让Windows和Unix计算机相集成最好的办法即是在Unix计算机中安装支持SMB/CIFS协议的软件这样 Windows客户就不需要更改设置就能如同使用Windows NT服务器一样使用Unix计算机上的资源了。Samba是用来实现SMB的一种软件它的工作原理是让NETBIOSWindows95网络邻居的通讯协议和SMBServer Message Block这两个协议运行于TCP/IP通信协议之上并且使用Windows的NETBEUI协议让Unix计算机可以在网络邻居上被Windows 计算机看到。它的功能有1.共享Linux磁盘给Win95/NT/20082.共享Win95/NT/2008磁盘给Linux机器3.共享Linux打印机给Win95/NT/20084.共享Win95/NT/2008打印机给Linux机器。同时它的文件服务功能比NT系统还高而且在Windows2000之前就提供了用户磁盘空间限制的功能。Samba的配置在我写这篇文章的时候Samba的版本已经到了2.2.2了需要的可以通过ftp://samba.org/pub/samba/samba-latest.tar.gz 得到最新安装包。然后执行来安装或者升级它。sudo yum install samba samba-client安装完后可以看见/etc/samba这么一个目录里面存放和 Samba相关的一些文件最主要的是smb.conf现在根据配置文件讲讲它的配置选项全局设置:workgroup MYGROUP定义该Samba服务器所在的工作组或者域如果下面的securitydomain的话。server string MY Samba Server设定机器的描述当我们通过网络邻居访问的时候可以在备注里面看见这个内容而且还可以使用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, LANMAN2NT1)%d 当前服务进程的ID%a 客户机的结构只能识别几项SambaWfWgWinNTWin95%I 客户机的IP%T 当前日期和时间hosts allow 网络或者主机这里可以设置允许访问的网络和主机IP比如允许192.168.1.0/24和192.168.2.1/32访问就用host allow 192.168.1. 192.168.2.1 127.0.0.1(网络注意后面加”.”号各个项目间用空格隔开记得把本机也加进去)printcap name printcapFile到printcapFile一般是/etc/printcap这个文件中取得打印机的描述信息load printers yes|no设定是否自动共享打印机而不用设置下面的[printer]一节的相关东西printing PrintSystemType定义打印系统的类型缺省是lprng,可选项有bsd, sysv, plp, lprng, aix, hpux, qnx。guest account pcguest定义游客帐号而且需要把这个帐号加入/etc/passwd不然它就用缺省的nobodylog file LogFileName定义记录文件的位置LogFileName一般是用/var/log/samba/%m.logmax log size size定义记录文件的大小size单位是KB如果是0的话就不限大小security security_level定义Samba的安全级别按从低到高分为四级shareuserserverdomain。它们对应的验证方式如下share:没有安全性的级别任何用户都可以不要用户名和口令访问服务器上的资源。user:samba的默认配置要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。server:和user安全级别类似但用户名和密码是递交到另外一个服务器去验证比如递交给一台NT服务器。如果递交失败就退到user安全级。domain:这个安全级别要求网络上存在一台Windows的主域控制器samba把用户名和密码递交给它去验证。后面三种安全级都要求用户在本Linux机器上也要系统帐户。否则是不能访问的。password server NT-Server-Name当前面的security设定为server或者domain的时候才有必要设定它。password level n这是设定针对一些SMB客户像OS/2之类而设的这样的系统在发送用户密码的时候会把密码转换成大写再发送这样就和samba的密码不一致这个参数可以设定密码里允许的大写字母个数这样samba就根据这个数目对接收到的密码进行大小写重组以重组过的密码尝试验证密码的正确性。n越大组合的次数就越多验证时间就越长安全性也会因此变得越低。例如n2用户的密码是abcd但发送出去其实是ABCDsamba就会把这个 ABCD进行大小写重组组合后的结果可以是: Abcd, aBcd, abCd, abcD, abcd, ABcd, AbCd, AbcD,aBCd,aBcD,abCD。所以如果没有必要就把n定为是零。这样的话samba只尝试两次一个是接收到的密码另一个尝试的是这个密码都是小写的情况。username level n这个是对于用户名的情况说明和上面一项类似。encrypt passwords yes|no设置是否对密码进行加密samba本身有一个密码文件/etc/samba/smbpasswd如果不对密码进行加密则在验证会话期间客户机和服务器之间传递的是明文密码samba直接把这个密码和Linux里的/etc/samba/smbpasswd密码文件进行验证。但是在 Windows 95 OS/R2以后的版本和Windows NT SP3以后的版本缺省都不传送明文密码要让这些系统能传送明文密码必须在其注册表里更改比较麻烦好的方法就是把这里的这个开关设置为yes。smb passwd file smbPasswordFile设置存放samba用户密码的文件smbPasswordFile(一般是/etc/samba/smbpasswd)。ssl CA certFile sslFile当samba编译的时候支持SSL的时候需要指定SSL的证书的位置一般在/usr/share/ssl/certs/ca-bundle.crt。unix password sync yes|nopasswd program /usr/bin/passwd %upasswd chat *New*UNIX*password* %n*ReType*new*UNIX*password* %n*passwd:*all*authentication*tokens*updated*successfully*这三项设置能否从windows的应用程序修改unix系统的用户密码username map UsermapFile指定用户映射文件一般是/etc/samba/smbusers当我们在这个文件里面指定一行root administrator admin的时候客户机的用户是admin或者administrator连接时会被当作用户root看待。include MachineConfFile指定对不同机器的连接采用不同的配置文件MachineConfFile一般为了灵活管理使用/etc/samba/smb.conf.%m由于采用了samba的变量把配置文件和客户机的NETBIOS名称关联起来能很容易地控制这些客户机的权限和设置。socket ōptions TCP_NODELAY SO_RCVBUF8192 SO_SNDBUF8192这个是网络socket方面的一些参数能实现最好的文件传输性能。相关的选项还有SO_KEEPALIVE、 SO_REUSEADDR、SO_BROADCAST、IPTOS_LOWDELAY、IPTOS_THROUGHPUT、SO_SNDLOWAT *、SO_RCVLOWAT*带*号的要指定数值。一般如果在本地网络就只用IPTOS_LOWDELAY,如果是有一个本地网络的就用 IPTOS_LOWDELAY TCP_NODELAY如果是广域网络就试试IPTOS_THROUGHPUT。interfaces interface1 interface2如果有多个网络接口就必须在这里指定。如interface 192.168.12.2/24 192.168.13.2/24remote browse sync host(subnet)这里指定浏览列表同步信息从哪里取得 如果用host比如192.168.3.25或者整个子网192.168.5.255。★这里说明一下什么是浏览Browse在SMB 协议中计算机为了访问网络资源就需要了解网络上存在的资源列表例如在Windows下使用网络邻居查看可以访问的计算机这个机制就被称为浏览Browse。虽然SMB协议中经常使用广播的方式但如果每次都使用广播的方式了解当前的网络资源包括提供服务的计算机和各个计算机上的服务资源就需要消耗大量的网络资源和浪费较长的查找时间因此最好在网络中维护一个网络资源的列表以方便查找网络资源。只有必要的时候才重新查找资源例如使用Windows下的查找计算机功能。但没有必要每个计算机都维护整个资源列表维护网络中当前资源列表的任务由网络上的几个特殊计算机完成的这些计算机被称为Browser这些Browser通过记录广播数据或查询名字服务器来记录网络上的各种资源。Browser 并不是事先指定的计算机而是在普通计算机之间通过自动进行的推举产生的。不同的计算机可以按照其提供服务的能力设置在推举时具备的不同权重。为了保证一个Browser停机时网络浏览仍然正常网络中常常存在多个Browser一个为主BrowserMaster Browser其他的为备份Browser。★remote announce host(subnet)指定这些机器向网络宣告自己而不是有Browser得到。local master yes|no这个参数指定nmbd是否试图成为本地主浏览器默认值是yes如果设为no则samba服务器就永远都不会成为本地主浏览器。但即使设置了yes也不等于samba服务器就会成为本地主浏览器。只是参与本地主浏览器选择。os level nn的值是个整数决定了nmbd是否有机会成为本地广播区域的工作组里的本地主浏览器默认值是零零则意味着nmbd失去浏览选择。如果要nmbd更有机会成为本地主浏览器的话可以设为65。domain master yes|no这个参数让nmbd成为一个域浏览器取得各本地主浏览器的浏览列表并将整个域的浏览列表递交给各本地主浏览器。preferred master yes|no这个参数指定nmbd是否是工作组里的首要的主浏览器如果指定为yesnmbd在启动的时候就强制一个浏览选择。★Domain master和local master工作组和域这两个概念在进行浏览时具备同样的用处都是用于区分并维护同一组浏览数据的多个计算机。事实上他们的不同在于认证方式上工作组中每台计算机都基本上是独立的独立对客户访问进行认证而域中将存在一个或几个域控制器保存对整个域中都有效的认证信息包括用户的认证信息以及域内成员计算机的认证信息。浏览数据的时候并不需要认证信息Microsoft将工作组扩展为域只是为了形成一种分级的目录结构将原有的浏览和目录服务相结合以扩大Mircrosoft网络服务范围的一种策略。工作组和域都可以跨越多个子网因此网络中就存在两种Browser一种为 Domain Master Browser 用于维护整个工作组或域内的浏览数据另一种为Local Master Browser用于维护本子网内的浏览数据它和Domain Master Browser通信以获得所有的可浏览数据。划分这两种Browser 主要是由于浏览数据依赖于本地网广播来获得资源列表不同子网之间只能通过浏览器之间的交流能力才能互相交换资源列表。但是为了浏览多个子网的资源必须使用NBNS名字服务器的解析方式没有NBNS的帮助计算机将不能获得子网外计算机的NetBIOS名字。Local Master Browser也需要查询NetBIOS名字服务器以获得Domain Master Browser的名字以相互交换网络资源信息。由于域控制器在域内的特殊性因此域控制器倾向于被用做Browser主域控制器应该被用作Domain Master Browser他们在推举时设置的权重较大。★preserve case yes|noshort preserve case yes|no指定拷贝DOS文件的时候保持大小写缺省是nodefault case lower|upper所有的DOS文件的缺省是大写还是小写case sensitive yes|no大小写敏感一般是no,不然会出现一些问题。共享设置★共享资源:每个SMB服务器能对外提供文件或打印服务每个共享资源需要被给予一个共享名这个名字将显示在这个服务器的资源列表中。如果一个资源的名字的最后一个字母为$则这个共享名就为隐藏共享不能直接表现在浏览列表中而只能通过直接访问这个名字来进行访问。在SMB协议中为了获得服务器提供的资源列表必须使用一个隐藏的资源名字IPC$来访问服务器否则客户无法获得系统资源的列表。★共享设置中有个比较奇怪的段:[homes]在smb.conf文件中一般没有对这个目录的设定特定内容比如路径等。当客户机发出服务请求时就在smb.conf文件的其它部分查找友特定内容的服务。如果没有发现这些服务并且提供了homes段时那么就搜索密码文件得到用户的Home目录。通过Homes段 Samba可以得到用户的Home 目录并使之共享。下面是这个段的最基本的几个设置。[homes]commentHome Directorybrowseablenowritableyes比较正常的共享的配置如下例[MyShare]comment grind’s filepath /home/grindallow hosts host(subnet)deny hosts host(subnet)writable yes|nouser user(group)valid users user(group)invalid users user(group)read list user(group)write list user(group)admin list user(group)public yes|nohide dot files yes|nocreate mode 0755directory mode 0755sync always yes|noshort preserve case yes|nopreserve case yes|nocase sensitive yes|nomangle case yes|nodefault case upper|lowerforce user grindwide links yes|nomax connections 100delete readonly yes|no其中[]里面的MyShare指定共享名一般就是网络邻居里面可以看见的文件夹的名字。comment指的是对改共享的备注。path 指定共享的路径其中可以配合samba变量使用。比如你可以指定path/data/%m这样如果一台机器的NETBIOS名字是grind,它访问MyShare这个共享的时候就是进入/data/grind目录,而对于NETBIOS名是glass的机器则进入/data/glass目录。allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。writeable指定了这个目录缺省是否可写也可以用readonly no来设置可写。user设置所有可能使用该共享资源的用户也可以用group代表group这个组的所有成员不同的项目之间用空格或者逗号隔开。valid users指定能够使用该共享资源的用户和组。invalid users指定不能够使用该共享资源的用户和组。read list 指定只能读取该共享资源的用户和组。write list指定能读取和写该共享资源的用户和组。admin list指定能管理该共享资源包括读写和权限赋予等的用户和组。public指明该共享资源是否能给游客帐号访问这个开关有时候也叫guest ok所以有的配置文件中出现guest ōk yes其实和public yes是一样的。hide dot files指明是不是像unix那样隐藏以“.”号开头的文件。create mode指明新建立的文件的属性一般是0755。directory mode指明新建立的目录的属性一般是0755。sync always指明对该共享资源进行写操作后是否进行同步操作。short preserve case指明不管文件名大小写。preserve case指明保持大小写。case sensitive指明是否对大小写敏感一般选no,不然可能引起错误。mangle case指明混合大小写。default case指明缺省的文件名是全部大写还是小写。force user强制把建立文件的属主是谁。如果我有一个目录让guest可以写那么guest就可以删除如果我用force user grind强制建立文件的属主是grind同时限制create mask 0755这样guest就不能删除了。wide links指明是否允许共享外符号连接比如共享资源里面有个连接指向非共享资源里面的文件或者目录如果设置wide links no将使该连接不可用。max connections n设定同时连接数是n。delete readonly指明能否删除共享资源里面已经被定义为只读的文件。有两类特殊的共享分别是光驱和打印机光驱的共享设置:[cdrom]comment grind’s cdrompath /mnt/cdrompublic yesbrowseable yesroot preexec /bin/mount -t iso9660 /dev/cd0 /mnt/cdromroot postexec /bin/umount /mnt/cdrom这里root preexec指明了连接时用root的身份运行mount命令而root postexec则指明了断开时用root身份运行umount,有效实现了对光驱的共享。打印机共享的设置[printers]path /var/spool/sambawriteable noguest ōk yesprintable yesprinter driver HP LaserJet 5L这里printable指明该打印机可以打印 guest ok说明游客也能打印path指明打印的文件队列暂时放到/var/spool/samba目录下。printer driver的作用是指明该打印机的类型这样我们在安装网络打印机的时候可以直接自动安装驱动而不必选择。添加用户samba 添加用户比较方便一般是用smbadduser用法是smbadduser unixid:netid举个例子如果你的本机有个叫grind的用户你用smbadduser grind:grind这样从网上邻居访问的时候用户名就用grind而如果你用了smbadduser grind:glass的话网上邻居访问的时候提供的用户名就是glass而不是grind了。关于samba服务端的设置基本就是这些我想一般应用中所要使用的上面几乎都覆盖到了所以有些不重要的就省略了如果要更加详细的信息可以用man smb.conf参考。Samba使用大全二Samba客户端使用Samba网络打印使用unix网络打印以前的文章比较少涉及最近试验了一下效果还是不错的现在讲讲基本的实现方法比如你要建立一台网络打印机grind而打印机对应网络上面的//glass/HPLaserj所有需要配置的文件有下面几个:1/etc/printcap内容一般为:grind::sh: #禁止提示的header:ml0: #打印的文件的长度下限,:mx0: #最大的打印文件大小0为不限制:sd/var/spool/lpd/grind: #打印机的spool目录:lp|/usr/bin/smbprint: #打印输出需要的设备名或者管道名:lpd_bouncetrue: #强制lpd守护进程过滤打印文件:if/usr/share/printconf/mf_wrapper: #过滤命令文件2smbprint这个一般在安装完smb相关的rpm包以后就有了主要内容是eval acct_file$$#spool_dirdirname $acct_fileconfig_file$spool_dir/.configeval cat $config_fileshareecho $share | sed s/[]///gif [ $user ! ]; thenusercmd-Uelseusercmdfiif [ $workgroup ! ]; thenworkgroupcmd-Welseworkgroupcmdfiif [ $translate yes ]; thencommandtranslate ; print -elsecommandprint -ficat | /usr/bin/smbclient $share $password -E ${hostip:-I}$hostip -N -P $usercmd $user $workgroupcmd $workgroup-c $command 2/dev/null3mf_wrapper是一个magic filter文件是相关的一些过滤规则。内容是MF_RULE_DIR/usr/share/printconf/mf_rulesMF_RULES$MF_RULE_DIR/mf[[:digit:]][[:digit:]]-*TMP_FILEmktemp /tmp/printconf.XXXXXX exit 1cat ./mf.cfg $MF_RULES | m4 $TMP_FILEif [ -n $DEBUG ]; thencase $DEBUG in2)DEBUGSTRING--debug --debug;;3)DEBUGSTRING--debug --debug --debug;; 4)DEBUGSTRING--debug --debug --debug --debug;;5)DEBUGSTRING--debug --debug --debug --debug --debug;;*)DEBUGSTRING--debug;;esacelseDEBUGSTRINGfi# Run magic filter/usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $* /dev/stdinRETVAL$?if [ -f $TMP_FILE ]; thenrm -f $TMP_FILE;fi;;esacelseDEBUGSTRINGfi# Run magic filter/usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $* /dev/stdinRETVAL$?if [ -f $TMP_FILE ]; thenrm -f $TMP_FILE;fiif [[ $RETVAL -eq 0 ]]; thenTERMINATIONgrep ^[[:space:]]*#[[:space:]]*TERMINATION ./mf.cfg | sed s/^[[:space:]]*#[[:space:]]*TERMINATION//;if [ -n $TERMINATION ]; thenecho -n -e $TERMINATION;fifi同时需要在/var/spool/lpd/grind下面有这么两个文件mf.cfg和scrīpt.cfg。mf.cfg的内容是define(TEXTfilter, text 14 )dnldefine(PSfilter, filter /usr/share/printconf/util/mf_postscrīpt_wrapper --mfomatic -d lj5gray-75168.foo)dnlscrīpt.cfg的内容是share//glass/HPLaserj #glass机器上面共享的打印机hostip192.168.1.123 #glass这台机器的IPuserpasswordworkgrouptranslateno完成这个工作后启动lpd进程然后就能用lpr等命令使用网络打印机打印了。使用网络共享文件资源列出网络资源一般可以用smbclient来列出某台机器相关的资源smbclient的用法参考http://www.linuxaid.com.cn/training...owtod.jsp?i241。这里讲比较有用的使用方法smbclient -L IP或者NETBIOS名称作用是显示某台提供samba服务的服务器上的共享资源。命令执行效果如下smbclient -L glassSharename Type Comment--------- ---- -------IPC$ IPC 远程 IPCHPLaserJ Printer HP LaserJet 6PADMIN$ Disk 远程管理littlep DiskC$ Disk 默认共享Server Comment--------- -------GLASSGRINDWorkgroup Master--------- -------BLUESUN GLASSWORKGROUP HEIHEI第一段列举了该机器glass上面的共享资源第二段列举了glass所在的工作组里面所有提供samba服务的机器第三列举了其他工作组提供 browse服务的Master机器关于Master和Browse服务可以参考我的前面一篇samba使用大全-samba服务器。使用网络资源smbclient //IP或者NETBIOS名称/共享资源名 [-U 用户名]命令执行效果如下smbclient //glass/littlepadded interface ip192.168.1.123 bcast192.168.1.255 nmask255.255.255.0Got a positive name query response from 192.168.1.123 (192.168.1.123)Password:Domain[BLUESUN] ōS[Windows 5.0] Server[Windows 2000 LAN Manager]smb: 接下来的操作和ftp的时候命令一样用get下载文件而用put上传文件命令可以用help查看。还有一种方法是用文件系统的方式这种方式要确定你的内核支持smbfs如果没有支持的话编译内核的时候必须选中File systems---Network File Systems--- SMB file system support (to mount Windows shares etc.) smbmount //IP或者NETBIOS名称/共享资源名 /本地挂接点 [-o option]常用的的option有username用户名password密码guest指定为用guest访问不用提供密码前面的即使用usernameguest参数的话也会要求输入密码ro有时候为了系统安全要指定为只读模式rw同时多个 option的话用逗号隔开。或者可以用mount -t smbfs [-o option] //IP或者NETBIOS名称/共享资源名 /本地挂接点来实现同样的功能。例子如下smbmount //glass/littlep /test -o guest或者mount -t smbfs -o guest //glass/littlep /test然后就能通过访问/test来使用网络上的资源了。如果不需要使用的时候可以简单地使用smbumount /test或者umount /test来解除这个挂接。关于samba的功能共享Linux磁盘给Win95/NT、共享Linux打印机给win95/NT、共享win95/NT打印机给 Linux机器。、共享Win95/NT磁盘给Linux机器前面两个属于samba服务器的内容而后两个属于samba客户段的内容在我的两篇文章中都有介绍了他们的实现方法但是samba实在是一个强大的工具无法十分详细地介绍它地全部功能而且限于笔者的知识有限有不到之处请各位指出还望各位多多交流。Samba使用大全中有这样一段force user强制把建立文件的属主是谁。如果我有一个目录让guest可以写那么guest就可以删除如果我用force user grind强制建立文件的属主是grind同时限制create mask 0755这样guest就不能删除了。如上面所述我建立一个共享文件夹(smb.conf片断)...........[MyShare]comment share directorypath /home/mysharewritable yespublic yescreate mode 0755directory mode 0755force user root按照资料的意思不论我以任何用户登陆到这个共享文件夹在这个文件夹里建立的文件都是属于root用户的当前用户建立文件之后应该就是没有删除的权限了。我试验在win2000登陆到samba服务器进入myshare目录在里面建立好一个文本文件test.txt之后我在samba服务器上用 root登陆进入myshare目录用ls -l查看,test.txt的属主是root,属性是 -rwxr--r--,这样应该说我在win2000上就应该不能删除这个test.txt文件了但是在win2000里却可以删除这个文件不知道兄弟们有没有注意这个问题到底怎样解释还有一个问题/home/myshare目录是root用户建立的用命令chmod 777 /home/myshare 更改过权限上面的权限问题是不是和这个文件夹的权限有关meteorsky★有分号的是注释meteorsky★我发现force user ...这一行的作用不是“force user强制把建立文件的属主是谁。如果我有一个目录让guest可以写那么guest就可以删除如果我用force user grind强制建立文件的属主是grind同时限制create mask 0755这样guest就不能删除了”这个意思而是任何登陆的用户进入这个目录时就被当作root作为root当然可以进行任何操作登陆身份的改变是在刚登陆之后。我在linux系统中察看当前连接到samba的用户id时发现不管我用那一个用户登陆samba服务器只要我进入MyShare目录当前的用户id就变为root,可是这样的话我就无法实现限制用户在指定目录里只能写不能删除的权限了这样的权限限制在windows的ntfs文件系统中是很容易实现的不知道在samba中如何才能实现这样的限制抑或根本就实现不了还请大家帮忙Samba服务器的使用一、Samba基础1、 简介1.SMB协议SMBServer MessageBlock服务信息块协议可以看作是局域网上的共享文件/打印机的一种协议它可以为网络内部的其它Windows和Linux机器提供文件系统、打印服务或是其他一些信息。SMB的工作原理是让NetBIOS(Win95网络邻居通信协议)与SMB这两种协议运行在TCP/IP的通信协议上且使用NetBIOSnameserver让用户的Linux机器可以在Windows的网络邻居里被看到所以就可以和Win95/NT主机在网络上相互沟通共享文件与服务了。目前Microsoft正在开发一种新的文件和打印共享协议--CIFSCommon Internet FilesSystem通用网络文件协议该协议支持TCP/IP和DNS等协议能在www上支持文件和打印共享。在CIFS下服务器实际上是DNS 名由主机名和域名组成。这种变化是从NetBIOS命令结构中分离出来的。目前CIFS还没有得到广泛的应用。现在在Linux和Win95/NT之间的文件共享注意还是 SMB和NFS。2.什么是SambaSamba是用来实现SMB的一种软件由澳大利亚的Andew Tridgell开发是一种在LinuxUnix环境下运行的免费软件。通过使用SambaLinux系统可以实现如下功能文件服务和打印服务在Linux和Win95/NT之间系统之间提供打印机和磁盘的共享登陆服务器使用Windows客户能注册到网络上作为主要域控制器和域中成员的功能WINS服务器以及浏览功能支持SSLSecure Socket Layer支持SWAT (Samba Web Administration Tool )Samba除了支持Linux(Unix)和Win95/NT之外还支持DOS、IBM OS/2、Macintosh 等操作系统。在Samba的软件包中所包括的组件参看表1-1表1-1 Samba软件包的组成列表2、Samba的记录文件Samba为smbd、nmbd和访问Samba的客户提供了下列记录文件分别记录有关smbd、nmbd运行信息和每个客户的访问信息记录smbd 信息/var/log/samba/log.smb记录nmbd信息/var/log/samba/log.nmb记录客户访问信息/var/log/samba/log.%m3、启用Samba服务器Samba的运行包含两个后台守护进程smbd和nmbd它们是Samba的核心在全部时间内运行。nmbd程序使得通过企图计算机可以浏览Linux服务器。Smbd守护进程在SMB软件包到达网上时对它们进行处理并且为使用或共享它的资源与 Linux进行协调。如果指定的是一个文件该资源就是一个文件而一个打印机请求就要求访问一台打印机。实际上在请求访问打印机时Smbd把要打印的信息存储到打印机队列中在请求访问一个文件时Smbd把数据发到内核最后将它存到磁盘上。你可以从inetd选择启动它们但这种方法会使Samba变慢。建议使用下面命令可以启动这两个进程/etc/rc.d/init.d/smb start/usr/sbin/samba start如果想要在系统启动时自动启动samba可以使用/usr/sbin/turboservice命令选中其中的SMB (Windows)FileServices。二、Samba配置及使用1、定制文件/etc/smb.conf在安装完Samba后还需要定制它的配置文件smb.conf才能使Samba正常工作以符合要求。由于SMB是一个非常复杂的协议所以配置Samba的工作也是比较繁琐的大约有超过170条配置项出现在smb.conf文件中。1)smb.conf的语法smb.conf文件有一个清晰的语法结构与Windows的*.ini文件十分类似。如下所示该文件被分成几部分每一部分都包括几个参数用来定义Samba输出的共享及其详细操作。文件被分隔成若干节每一节都由一个被方括号括起来的标识开始例如[global]、[home]、[printers]每一个配置参数或是一个全局参数影响或控制整个服务器或是一个服务参数影响或控制服务器提供的某项服务 。global部分定义的参数用来控制Samba的总特性。除global部分外每一部分都定义了一个专门的服务。你可以使用下面的语句来指定一个参数nameVALUEname可以是一个单词或者用空格隔开的多个单词。VALUE可以是布尔值ture或falseyes或no1或0、数字或字符串。注释以分号开头可以单独一行也可以跟在一条语句之后。通过在一行的最后一个字符后加反斜杠\\可以将一行分成多行。每一部分的名字和参数都不区分大小写例如参数browseableyes与browseableYES是完全等价的2)smb.conf文件的功能smbd和nmbd这两个守护进程启动时通常为系统引导时读配置文件smb.conf这一配置文件向这两个守护进程说明输出什么共享、共享输出给谁以及如何进行输出等等。因为安全问题是最重要的所以你必须指定哪些计算机可以访问这一共享smb.conf文件可以很灵活的明确指定每一服务有哪些用户可以访问。随着Linux网络的增大这一控制越来越重要。3)smb.conf文件结构smb.conf文件主要包括三部分global全局参数directory shares 目录共享部分--包括标准的[home]部分printer shares打印共享部分其中global参数用来设置整个系统的规则[home]部分和[printer]部分是服务的特定例程services服务这一术语是网络客户机共享或输出的目录和打印机的Samba术语。这些服务定义了哪些用户可以访问这些目录和打印机以及如何访问这些目录和打印机。清单1-1给出了smb.conf文件的一个简单的例子。清单1-1 smb.conf文件的一个简单示例[global]netbios name FRODOworkgroup UAB-TUCCserver string John Blair\s Linux Boxsecurity userprinting lprnglog file /var/log/sambalock directory /var/lock/samba[homes]comment Home Directorybrowseable noread ōnly no[printers]browseable noguest ōk yesprintable yes在 [global] 段中设置了主机名称, 主机所在的工作组名称和浏览时可看到的对本机的描述。安全参数告诉 Samba使用用户级别的安全保护方式。 SMB 有两种安全模式 共享级别, 将资源加密码控制用户级别, 可以使用某一用户的所有资源。这里不能详细解释两种方式的微妙差别, 但大部分情况下, 你会想用用户级别安全控制。[global] 段中还定义了日志文件目录和锁定文件的位置。日志文件在解决故障和完善系统时是很有用的锁定文件可以阻止多个用户同时修改相同的文件。[homes] 段中的设置控制了每一个用主目录的共享权限。comment 参数指定的字符串在你浏览本机资源时出现在指定资源的旁边。browseable 参数控制一项服务是否能够出现在网络资源浏览表中。这里是一些非直觉的东西, browseable no意味着这个目录将在浏览时显示为要验证的用户名称。 举例来说, 指定 browseable no, 当我浏览这个 Samba 服务器时,我将看到一个名称为 cuckoo 的共享目录。当指定 browseable yes 时, 我将看到一个名为 homes 和 cuckoo的共享目录。设置 read ōnly no 将允许通过验证的用户对主目录有写入的权限。 但是, 如果他们的主目录的 UNIX 权限 不允许写入,那么他们就没有写的权限。 无论 UNIX 的权限怎样, 设置 read ōnly yes 后, 他们的主目录是只读的。printing 命令描述了本地打印系统类型, 这可以让 Samba 知道怎样提交打印任务, 显示打印队列, 删除打印任务和其它操作。如果打印系统是 Samba 所不知道的, 你必须在每次执行打印操作时指明命令。清单中[printing]一段配置允许任何能够登录到 Samba 服务器的用户使用 printcap 中出现的 每一台打印机。 正常情况下,如果使用用户级别安全控制, guest ōk yes 并不能授权每一个用户(使用系统)。 每一个打印服务必须定义为 printable yes。下面的一段配置片断增加了一个命名为 public 的共享目录, 直接对匿名FTP目录有只读的 权限。 你必须在客户机上建立打印机驱动程序。 对于Windows 95 和 Windows NT 客户机, 你可以使用printer name 和 printer driver命令自动建立打印驱动。[public]comment Public FTP Directorypath /home/ftp/pubbrowseable yesread ōnly yes这段描述并不是解释一些微妙的主题,例如用户级和共享级安全性的区别或者其它的授权认证主题。它仅仅让我们看到了Samba这座冰山的一角。另一方面这是一个良好的例子从中我们可以了解产生一个简单但可工作的smb.conf文件是多么容易。下面我们举另一个例子说明如何通过Samba把Linux的打印机共享给Windows机器。为了共享Linux的打印机给Windows机器必须确定Linux机器上的打印机已经设置好。如果能从Linux上打印那么设定Samba 的打印机共享是很简便的。只要根据自己的情况对smb.conf文件有关打印的部分进行修改就可以了。在修改中唯一需要注意的是确保打印机的路径要与 /etc/printcap中的spool目录相符合然后就可以在Win95/NT上配置网络打印机了关于如何在Win95/NT上配置网络打印机本文不做介绍。4)标准smb.conf文件清单在Samba的软件包里的example目录中有一个缺省的配置文件 smb.conf.defaults。我们可以对它做适当修改后拷贝到你的安装目录下的lib目录里并改名为smb.conf。清单1-2是Samba 系统提供的标准的配置文件。为方便读者阅读本文翻译了文件中的注释并适当的添加了解释。清单1-2 标准smb.conf 文件# 这是服务器的主要配置文件。您应该阅读smb.conf(5)的用户手册以了解下面# 列出的每一个选项。Samba有很多的选项它们之中的大多数并没有出现在这# 个例子中。## 以分号或井号#开始的每一行都是注释在执行时被忽略。在本例中# 我们使用#作为注释而使用作为可选配置的注释。## 注意无论何时修改了这个配置文件您都要运行testparm命令来检查您所# 做的修改有没有基本的语法错误。## 全局变量设置Global Settings [global]# workgroup用来指定您的机器在网络上所属的NT域名或组名。格式是# workgroup NT-Domain-Name or Workgroup-Name。缺省的组名是 MYGROUP。workgroup MYGROUP# server string 用来设置NT描述域。缺省值是Samba Server 。server string Samba Server# 下面的选项对于安全很重要。它允许您设置哪些领域的机器可以访问您的Samba# 服务器。下面的这个例子允许两个C类子网和lookup的连接请求而禁止来# 自其他网段机器的连接请求。有关的例子请参看smb.conf的用户手册。; hosts allow 192.168.1. 192.168.2. 127.# 允许自动加载打印机列表而不需要您单独设置每一台打印机。load printers yes# 您也许希望覆盖原有的printcap 文件。; printcap name /etc/printcap# 对于SystemV系统如果将printcap名设置为lpstat 将允许您从SystemV 的# spool中自动获得打印列表。; printcap name lpstat# 除非您的打印机不是标准型号否则您没有必要在下面指定打印机系统的类型。# 目前支持的打印机系统包括bsd, sysv, plp, lprng, aix, hpux, qnx; printing bsd# 如果希望建立一个客户帐号去掉下面语句前面的分号。同时您必须在# /etc/passwd中加入这个帐号的定义否则将使用用户nobody作为客户帐户。; guest account pcguest# 此选项将为每一个与服务器连接的机器定义一个单独的日志文件。log file /usr/local/samba/var/log.%m# 此选项设置最大的日志文件的大小以KB为单位max log size 50# 定义安全模式。大多数人都喜欢用户级安全模式详细内容参看security_level.txtsecurity user# 只有当安全模式设置为服务器级security server时才定义下面选项。; password server NT-Server-Name# 如果用户想使用加密口令的话请参阅ENCRYPTION.txt、Win95.txt和 WinNT.txt# 文件请在阅读以上文件后使用下面选项。; encrypt passwords yes# 使用此选项允许您对每一个机器使用不同的配置。%m将被替换成与服务器# 请求连接机器的NetBIOS名。; include /usr/local/samba/lib/smb.conf.%m# 大多数人会发现此选项将显著提高服务器的执行效率请参读speed.txt和用户# 手册以了解更多细节。socket ōptions TCP_NODELAY# 配置Samba来使用多个网络界面如果您有多个网络界面那么必须按照下面# 格式在这里列出。请参阅用户手册以获得更多的细节。; interfaces 192.168.12.2/24 192.168.13.2/24# 浏览控制选项#如果不想使您的Samba服务器成为局域网内部的主浏览服务器将此选项设为no; local master no# OS Level决定了该服务器在局域网内的访问优先权。; os level 33# Domain Master将Samba服务器定义为主域浏览器。此选项将允许Samba在子#网列表中比较浏览。如您已经有一台Windows NT域控制器不要使用此选项; domain master yes# Preferred Master使Samba在启动时选择一个本地浏览器并给它获得选择的较高# 的机会; preferred master yes#仅当您的网络中有一台在安装时设置为主域控制器的NT服务器时使用此选项。; domain controller NT-Domain-Controller-SMBName# 如果想使Samba成为Windows95工作站的登录服务器则使用此选项。; domain logons yes# 如果允许域登录服务那么您也许希望每台机器或每个用户的登录脚本运行一# 个特定的每工作站的登录批处理文件。; logon scrīpt %m.bat# 运行一个特定的每用户名登录批处理文件。; logon scrīpt %U.bat# 放置roving profiles 文件的位置(仅用于 Win95 和WinNT) %L代表该服务器# NetBIOS名%U是用户名您必须取消后面定义的[Profiles]前面的注释号。; logon path \\\\%L\\Profiles\\%U# Windows的Internet名服务支持记录部分# WINS Support告诉NMBD守护进程支持WINS服务器。; wins support yes# WINS Serve选项告诉NMBD守护进程作为WINS的客户机。# 注意Samba既可以作为WINS服务器也可以作为 WINS客户机但不能兼# 而有之。; wins server w.x.y.z# WINS Prox代表一个非WINS客户通知Samba响应名字解析请求。要使此选项# 正常工作必须保证网络中至少有一台WINS服务器。缺省值是NO。; wins proxy yes# DNS Proxy选项决定Samba是否通过DNS 的nslookups 去解析主机的NetBIOS# 名。对于1.9.17 以前的版本内置值是yes 对于1.9.18之后的版本内置值是no 。dns proxy no# 定义共享服务Share Definitions # 所有使用者的home目录[homes]comment Home Directories# 当一个客户程序以客人用户类出本服务器的共享服务时不列出homes服务。# 但是本机用户创建的主目录服务仍使用[global]节设定的browseable。browseable nowritable yes# 如果要创建一个netlogon目录则取消下面的注释。; [netlogon]; comment Network Logon Service; path /usr/local/samba/lib/netlogon; guest ōk yes; writable no; share modes no# 如果要提供一个特定的共享roving profile则取消下面的注释。# 缺省值是使用用户的home目录。;[Profiles]; path /usr/local/samba/profiles; browseable no; guest ōk yes# 注意如果您有一个BSD 风格的打印系统您不需要单独定义每台打印机。[printers]comment All Printerspath /usr/spool/sambabrowseable no# 设置public yes 将允许以guest 帐号登录的用户使用打印机。guest ōk nowritable noprintable yes# 此选项定义网络用户共享文件的临时目录。;[tmp]; comment Temporary file space; path /tmp; read ōnly no; public yes# 一个用户共享目录除了在staff 组里的用户有些写的权限之外之外对# 其它用户是只读的。;[public]; comment Public Stuff; path /home/samba; public yes; writable yes; printable no; write list staff# 其他例子## 下面定义了一台只有fred可以使用的私人打印机。Spool数据放在fred的home# 目录里。注意fred必须对Spool目录有写的权限不管这个目录在什么位置。;[fredsprn]; comment Fred\s Printer; valid users fred; path /homes/fred; printer freds_printer; public no; writable no; printable yes# 下面定义一个只有用户fred才能使用的私人目录。fred 必须对这个目录拥有# 写的权限。;[fredsdir]; comment Fred\s Service; path /usr/somewhere/private; valid users fred; public no; writable yes; printable no# 下面定义的是对每个域服务器连接的机器有不同的目录的服务。这将允许您# 对于不同的机器使用不同的配置同样也可以使用%U选项为每个用户使用不# 同的配置。%m在连接时将被替换为客户机的主机名。;[pchome]; comment PC Directories; path /usr/pc/%m; public no; writable yes# 下面定义一个所有用户都可以读写的共享目录。注意用户在这个目录中创建的# 文件都将归默认用户所有。所以任何可以访问这个目录的用户都可以删除别的# 用户在这个目录里放置的文件。显然这个目录对于默认用户必须是可写的。# 当然也可以指定某个用户这时该目录的所有文件将为此用户所有。;[public]; path /usr/somewhere/else/public; public yes; only guest yes; writable yes; printable no# 下例说明了如何定义让两个用户共享一个目录他们在这个目录里放置的文件# 归他们各自所有。在此例中这两个用户对该目录都有写的权限。当然文件的# 保护应该设置恰当。很显然这个例子可以扩展到适合于多个用户的情况。;[myshare]; comment Mary\s and Fred\s stuff; path /usr/somewhere/shared; valid users mary fred; public no; writable yes; printable no; create mask 0765 2 共享访问限制1)通过主机地址使用以下参数来限制通过主机地址访问allow hostshosts allowdeny hostshosts denyallow hosts、 hostsallow这两个功能相同的参数指定允许访问一个服务的主机列表主机列表用号、空格或制表符隔开。如用于[global]段则应用于所有服务而忽略在每个服务中的各自的设置。主机列表的组成可以是主机名、IP地址、子网地址或网络号码/掩码。也可以使?quot;EXCEPT关键字来限制子网中的个别主机的访问。例如hosts allow 202.204. 3 EXCEPT 202.204.3.30允许在202.204.3子网上的主机访问但禁止其中的202.204.3.30访问。deny hosts、 hosts deny这两个功能相同的参数指定禁止访问某个服务的主机列表与allowhosts相反。当与allow hosts列表冲突时allow hosts列表优先。2)通过用户口令使用以下参数来限制通过用户口令访问security参数security可以确定对客户用户名/口令的验证方式。缺省为user即对Samba服务器的任何访问都要通过用户名/口令的验证。如果客户登录客户机如Windows所用的用户名与Samba服务器上的UNIX用户名一致则通过口令验证后就可以访问如Windows所用的口令也与UNIX一样那么不经任何提示就可以访问。但如果客户机上登录的用户名与Samba服务器上的UNIX用户名不一致则需要在一个映射文件中如/etc/smbusers写入客户机用户名到UNIX用户名的映射同时使用usernamemap参数指定映射文件例如username map /ect/smbusers在/etc/smbusers文件中的内容如下cuckoo cuckoo doo这样在客户机上以cuckoodoo注册后再与Samba服务器连接时输入UNIX客户cuckoo的口令就可以进入因为Samba已经把cuckoodoo映射为cuckoo。security 参数的另一个值是share表示Samba服务器不需要客户机使用用户名/口令来登录而是根据每个共享的设置来决定是否需要用户名/口令验证。设置security为share一般用于客户机上大多数用户名与Samba服务器上UNIX用户名不相同的情况以及Samba服务器主要提供guest 访问。在smb.conf文件中如果没有设置encryptpasswordsSamba将使用UNIX的password数据库来验证用户口令。这需要客户机将口令以普通文件的方式传递过来。如果设置了encryptpasswordsSamba则使用另一个加密口令文件通过smb passwd file来设置例如encrypt passwords yessmb passwd file /etc/smbpasswd3)通过用户名publicguest ok上面的两个参数的功能相同都可以使用相应的服务允许guest用户即不需要用户名/口令验证。如果还指定了guestonly那么相应的服务器只允许由guest用户来访问。invalid usersvalid users这两个参数分别设置不允许注册某个服务和允许注册某个服务的用户列表。一个用户同时出现在两个列表中的时候不允许注册优先。列表中的用户名可以用空格隔开以开头的名字被认为是NIS组名或UNIX组名以开头的名字被认为是UNIX组名以开头的名字只被认为是NIS组名。only user此参数控制是否只允许在user 列表中指定的用户访问某个服务。如果设置为true则只有在user 列表中的用户才能访问。4)通过是否可以读写来控制read only此参数设置为yes则使用服务的用户不能在该服务的目录中创建或修改文件。writablewriteablewrite ok这三个参数功能相同。如果它们被设置为no则使用服务的用户不能在该服务的目录中创建或修改文件。read listwrite list这两个参数分别指定只允许对一个服务进行只读访问或同时有写权限的主机列表这里如果一个主机同时在两个列表里则写优先。5)通过是否在浏览器列表中显示来控制browsablebrowseable这两个功能相同的参数控制该段是否在浏览列表中列出。浏览列表列出的是可获得的共享列表。一般[home]段禁止浏览以提高安全性。3、Windows 9x做为SMB客户的设置1)配置microsoft网络客户在客户机WIN9X上在控制面板里添加microsoft网络客户。选中microsoft网络客户--标识--计算机名--my_computer_name--my_group其中my_computer_name将作为表示客户机的NetBIOS名my_group为组名2)编辑注册表记录如果在SMB服务器上的smb.conf 文件中没有用到encryptpasswords即使用普通文本格式的口令则必须要编辑注册表来允许使用普通文本格式的口令。在Windows的注册表的以下条目中/HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/VNETSUP新建DWORD值将新建的值命名为EnablePlainTextPassword双击EnablePlainTextPassword将键值设为1。3)重新启动重新启动计算机以用户名/口令登陆。该用户名/口令将用于与SMB服务器连接时进行用户身份认证所以如果要访问SMB服务器上用户自己的home目录建议使用与SMB服务器上相同的用户名/口令。4)访问Samba服务器通过网络邻居浏览访问Samba服务器可以在列表里选择也可以在命令窗口里使用命令:\\\\sambaserver4 、Samba服务器提供的其他命令smbstatussmbstatus指令用于显示当前的SMB服务器的连接状态。例如在IP地址为202.204.3.16的cuckoo客户机上用户john访问SMB服务器的public服务时命令输出如下/usr/bin/smbstatusSamba version 2.0.3Service uid gid pid machine----------------------------------------------public john john 10009 cuckoo (202.204.3.16) Fri Jul 21 20:3No locked filesShare mode memory usage (bytes):1048464(99%) free 56(0%) used 56(0%) ōverhead 1048576(100%) total此命令可以附加一些开关来显示不同的内容下表列出了主要的开关及其含义表1-2 smbstatus命令主要选项表nmblookupnmblookup命令用于把一个NetBIOS名字映射到IP地址。对于上面的例子可以使用下面的命令查找主机cuckoo:/usr/bin/nmblookup sale可以使用合适的选项来允许nmblookup查询一个IP广播域或是一个单独的机器该命令常用的选项参看表1-3。表1-3 nmblookup 命令主要选项列表smbclientsmbclient是访问SMB服务器资源的客户程序。该程序提供的接口与ftp程序类似访问操作包括从SMB服务器下载文件到本地或从本地上载文件到SMB服务器还可以在SMB服务器上检索目录信息等。命令语法如下/usr/bin/smbclient //smbserver/service [passwd][-U username]其中smbserver是SMB服务器的NetBIOS名一般与服务器的主机名一样但不是必须的。service为服务器提供的服务如文件服务public或打印服务printer。passwd是访问某些服务时需要的口令。如果在命令行输入后面则不会再提示输入口令。否则将在后面提示输入口令。虽然有些要访问的服务器不需要口令但仍然会有输入口令的提示。如果不希望有口令提示则可以在命令行使用-N选项。如果要使用其他的端口与SMB服务器进行TCP连接可以使用-p选项来指定缺省值为139。-U可以指定与SMB服务器连接时使用的用户名。如果没有指定smbclient使用环境变量USER指定的值作用户名。如果没有USER环境变量则用guest。在环境变量USER中可以设置USERusername%password这样就不用在命令行上输入口令。同时使用ps命令看不到命令行参数具有一定的安全性。同样也可以使用-Uusername%password的形式指定用户名和口令。?quot;-U指定的口令%password要优先于在命令行[password]中指定的口令。-L选项可以列出在一个服务器上提供的服务例如/usr/bin/smbclient -L smbserver使用下面的命令可以进入与ftp类似的提示状态/usr/bin/smbclient //smbserver/service执行结果smb:\\其中\\表示服务器当前的工作目录。在该提示符下可以使用的命令可以通过?、help命令列出。命令不分大小写。在该提示符下除了可以使用很多与ftp类似的命令外还有命令recurse它可以被设置为on以便在使用mget或mput命令时能够get或put匹配的子目录。recurse缺省为off即只get或put当前目录中的文件。在该提示符下还可以使用下面的命令smb:\\tar c localfile filename将服务器上文件名为filename的文件和目录可以使用通配符经过tar 拷贝到本地的localfile 文件中。或者smb:\\tar x localfile filename可以把本地tar 文件localfile 中的文件filename拷贝到服务器上如果filename省略则拷贝所有的文件。上面的命令也可以在smbclient命令行上来执行如/usr/bin/smbclient //smbserver/service [passwd] -T c local file filename/usr/bin/smbclient //smbserver/service [passwd] -T x local file filenamesmbprintsmbprint是在Linux系统下将打印文件提交给远地SMB服务器打印的脚本程序。程序中调用的命令就是smbclient。下面举例说明此命令的使用方法。例如远端SMB服务器NetBios名为prtserver(Windows9X)提供打印服务。服务名为netpclNEC激光打印机不需要口令。在Linux系统中配置如下1 编辑/etc/printcap文件加入下面一行smb:lo/dev/null:sd/usr/spool/smb:sh:if/usr/bin/smbprint:af/var/spool/lpd/smb/acct2建立目录/usr/spool/smb、/var/spool/lpd/smb3用下面命令建立记帐文件touch /var/spool/lpd/smb/acct4建立/var/spool/lpd/smb/.config文件包含下面内容server prtserverservice necpclpassword 5编辑/usr/bin/smbprint文件在smbclient命令参数中使echotranslate有效这样可以使UNIX文件到Windows 9x系统打印时进行LF与CR/LF的转换。6启动lpd:/etc/rc.d/init.d/lpd start7使用lpr命令打印/etc/hosts文件/lpr -P smb/etc/hostslpr缺省使用的打印机名为lp这里使用的是smb。5、使用Samba加密口令客户机访问Samba服务器时进行的用户身份认证包括使用普通文本格式的口令通过网络传送给SMB服务器与UNIX的帐户数据库如/etc/passwd进行核查或者使用加密口令通过SMBchallenge/response验证进行核查。本文着重介绍加密口令的用法。在Samba服务器中使用了与Windows NT兼容的口令加密算法因此可以像Windows NT一样对Samba的客户进行用户口令核实。WindowsNT 使用一个包含用户口令hashed值的文件是通过对用户的普通文本的口令经过加密算法得到的称为hashed口令。不能从该hashed值返回得到原始的普通文本的口令。在Samba服务器上可以形成同样的hashed口令保存在smbpasswd文件中。当一个Samba客户如Windows 9x或NT使用Samba资源时它先请求一个连接并商讨连接使用的协议。Samba回答客户请求时产生一个随机值发送给客户并且还储存在Samba服务器上称为challenge。challenge对于每一个客户连接是不一样的。客户然后使用hashed口令与challenge进行加密运算产生24个字节的response发送给Samba服务器。Samba服务器使用自己保存的hashed值的用户口令保存在smbpasswd文件中与先前产生的challenge进行同样的加密运算将产生的结果与客户发送过来的结果进行比较如果结果相同则客户被允许访问否则禁止用户访问。对于Samba服务器来说它不存储普通文本格式的口令储存的是从普通文本口令转换的hashed口令。并且在网络连接时普通文本 和 hashed口令都不被传送所以比UNIX安全。因为当客户程序与UNIX服务器连接时如telnet口令往往是以普通文本在网络上传送的可以被网络***如tcpdump截获。Samba加密口令文件smbpasswd会被利用成为潜在的漏洞。所以该文件是要由root所有读写权限应该为600。Windows 9x或NT缺省的用户认证方式是使用加密的口令这?quot;普通文本不在网络上传送。相应的Samba也要使用加密口令的认证方式。但如果想使用普通文本格式的口令可以编辑WindowsNT的注册表来允许。这样Samba服务器就可以使用/etc/psswd文件来验证用户口令而不需要smbpasswd文件。要想让Samba使用与WindowsNT兼容的口令加密算法则必须在Samba服务器上保存包含与用户名对应的hashed值的口令文件。可以使用/usr/bin/mksmbpasswd.sh程序产生加密口令文件的框架文件名由smbpasswd file参数设置这里是/etc/smbpasswd命令行格式为cat /etc/passwd |mksmbpasswd.sh /etc/smbpasswd然后root可以使用smbpasswd命令可以设置用户口令例如设置客户cuckoo的smb口令为smbpassword/usr/bin/smbpsswd cuckoo smbpasswordroot还可以使用smbpsswd 进行添加用户、取消口令等操作。但添加的用户必须在/etc/psswd文件中存在。普通用户使用smbpsswd命令只能像使用passwd程序一样更改自己的smb口令。三、Samba 防删除Oseq-tj] comment bgi path /export/unscramble create mask 0664 directory mask 0775 writeable yes valid users bgi browseable yes vfs object recycle 接收这个类型 recycle:repository /export/sambadir/delete/%U 指定用户的回收站数据路径/export/sambadir/delete/ recycle:keeptree yes 保持目录结构 recycle:versions yes 保持版本 recycle:maxsixe 0 保持大小 四、Samba常见故障排除Samba的故障排除可以在SMB服务器和SMB客户机上通过各自的命令来完成。1 SMB服务器上的操作1)使用下面的命令来查看是否有错误的配置。/usr/bin/testparm /etc/smb.conf2) 在服务器上以及客户机上用ping命令检查tcp/ip是否正常工作。3) 在SMB服务器上用/usr/bin/smbclient -L SMBserver命令将得到一个共享的列表。如果出现失败信息则要检查与服务器相关的hosts allow、hosts deny、valid users、invlidusers等参数的设置。如果出现connectionrefused则检查Samba服务器进程是否启动若Samba以守护进程形式运行的话用netstat -a命令检查端口是否处于监听状态。4) 运行了命令/usr/bin/nmblookup SMBserver将返回SMB服务器的IP地址。否则nmbd没有正确的运行。5) 运行/usr/bin/nmblookup -d 2 \*\命令在子网中运行NetBIOS/TCPIP的主机将会响应。否则说明nmblookup不能正确的得到广播地址可以尝试在smb.conf文件中用interfaces参数人工设置IP地址、广播地址和子网掩码。6) 运行/usr/bin/smbclient\ \\\\SMBserver\\homes命令需要输入客户在SMB服务器上的用户口令然后会出现类似smb的提示符。这时可以使用 dir命令浏览客户在SMB服务器帐户目录下的文件用help命令可以得到其他命令的帮助。如果不能出现类似smb的提示符并且有 invalidnetwork name的错误信息则有可能homes共享没有正确的设置或者有Bad password则要检查shadowpassword、password encryption以及参数valid users和path的设置。2、SMB客户机上的操作1) 运行net view \\\\SMBserver命令应该能够列出SMB服务器上的共享。如果出现类似network name not found的错误则要检查客户机上DNS或WINS的设置。如果出现Invalid networkname或bad password error的错误则参照与上面smbclient-L命令中同样的错误结果的解决方法。要注意客户机将要用客户注册客户机时所用的用户名/口令去与SMB服务器连接所以在SMB服务器上用户最好有同样的用户名/口令。2) 使用net usex;\\\\SMBserver\\homes命令可以把SMB服务器上客户home目录映射到客户机x:盘x:应该是一个客户机上未用的盘号。这样共享的目录可以在客户机上以x:盘来看待。正常的信息为commandcomplete successfully。如果要停止使用x:盘可以使用net usex:/delete命令。如果不能正常的把客户的home目录映射到x:盘则要检查SMB服务器上hostsallow等参数的配置。如果客户机上的用户名不能与服务器上的用户名匹配尝试使用username map选项。3) 如果在SMB服务器上没有使用encrypted passwords则在客户机上要在注册表中允许使?quot;普通文本格式的口令。小结Samba是SMB的一种实现方法主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。守护进程smbd和nmbd是Samba的核心在全部时间内运行。nmbd程序使得通过企图计算机可以浏览Linux服务器。Smbd守护进程在SMB软件包到达网上时对它们进行处理并且为使用或共享它的资源与Linux进行协调。在安装完Samba后还需要定制它的配置文件smb.conf才能使Samba正常工作以符合要求。smb.conf文件的的语法结构与 Windows 的*.ini文件十分类似文件结构主要包括三部分全局参数部分、目录共享部分、打印共享部分本文着重介绍了如何配置各选项以完成特定的功能。通过使用不同的参数可以实现对Samba的不同访问控制通过主机地址限制访问、通过用户口令限制访问、通过用户名限制访问、通过验证读写权限限制访问、通过是否在浏览器列表里显示来控制等。所有这些方法大大的增强了Samba服务器的安全性。 转载于:https://blog.51cto.com/lilinji/1583260