收藏 分享(赏)

Samba学习笔记.doc

上传人:hskm5268 文档编号:7058652 上传时间:2019-05-04 格式:DOC 页数:13 大小:114KB
下载 相关 举报
Samba学习笔记.doc_第1页
第1页 / 共13页
Samba学习笔记.doc_第2页
第2页 / 共13页
Samba学习笔记.doc_第3页
第3页 / 共13页
Samba学习笔记.doc_第4页
第4页 / 共13页
Samba学习笔记.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、Samba学习笔记整理:Jims of 肥肥世家Copyright 2005 本文遵从 GNU的自由文档许可证(Free Document License)的条款,欢迎转载、修改、散布。发布时间:2005 年 07月 08日最新更新:2006 年 09月 07日,增加 smbfs介绍。AbstractSamba是 Linux与 Windows信息沟通的桥梁。它可使 Linux系统变成 Windows文件和打印服务器,供 Linux用户和 Windows用户共同使用。在现在 Windows和 Linux多操作平台共存的环境下,这种技术就更显得重要,它能帮我们实现信息的跨平台交流和平台的平稳迁移。

2、Samba 成功突破了 Windows的技术封锁,是自由软件的一面旗枳和典范。Table of Contents1. Samba基础 2. 安装配置 2.1. 服务器角色 2.2. 使用 openldap目录服务进行 samba用户验证 2.3. 回收站功能3. 小技巧List of Tables1.1. NetBIOS节点类型 1.2. NetBIOS资源类型 1.3. NetBIOS组资源类型Chapter 1. Samba基础Samba是一套使用 SMB/CIFS协议的 Unix应用程序,通过该套程序我们可以和Windows服务器共享资源。更进一步,我们还可用 Samba服务器替代 Wi

3、ndows服务器的一些功能,如 Wins,PDC 等。Samba功能介绍 在 Linux下使用 Windows的共享资源。 作为 Windows文件服务器/打印服务器的开源替代 实现 Wins服务器功能。 作为 Windows环境下的 PDC、BDC。一些基本概念 节点类型-NBT 网络中每台机器根据处理名称注册和解析的方式的不同,被指定为以下几种节点类型。Table 1.1. NetBIOS节点类型类型 描述b-node 只使用广播方式的注册和解析。p-node 只使用点到点的注册和解析。m-node 先用广播方式注册,一旦成功,则将结果通知 NBNS服务器。使用广播方式解析,如果不成功,则

4、使用 NBNS服务器。h-node 使用 NBNS服务器进行注册和解析,如果 NBNS服务器没有响应或不能操作,则使用广播方式。Windows系统多数使用 b-node或 h-node节点类型,h-node 提供了更强大的容错能力。用 ipconfig/all查询 Node Type属性就可知道当前系统的节点类型。 NetBIOS不仅能通告自已的存在,还能告诉其它机器自已能提供的资源类型。下面是一个资源类型的列表。Table 1.2. NetBIOS资源类型资源类型 值标准工作站服务 00消息服务(WinPopup) 03RAS服务器服务 06域主浏览器服务 1B主浏览器名称 1DNetDDE

5、服务 1F文件服务器/打印服务器 20RAS客户机服务 21网络监视代理 BE网络监视工具 BF 网上的机器还可以划分成不同的工作组,下面是 NetBIOS的组资源类型。Table 1.3. NetBIOS组资源类型类型 描述标准工作站组 00登录工作站 1C主浏览器名称 1D通用组名称 1EInternet名称 20_MSBROUSE_ 01Chapter 2. 安装配置Table of Contents2.1. 服务器角色 2.2. 使用 openldap目录服务进行 samba用户验证 2.3. 回收站功能在 Debian中有现成的 Samba包,用以命令即可安装,smbclient 是

6、客户端软件,用以在 Linux下测试和连接 samba服务器:debian:# apt-get install samba smbclientSamba的配置文件是 smb.conf,如果是 debian系统,则位于/etc/samba 目录下,如果从源码编译安装,则位于安装目录的 lib目录下。下面是一个示例:globalworkgroup = Samba serverserver string = Samba servernetbios name = t02;browser setupdomain master = yeslocal master = yespreferred master

7、 = yesos level = 255;share charsetunix charset = GB2312display charset = GB2312dos charset = GB2312;security setupsecurity = userencrypt passwords = yes;smb passwd file = /usr/local/samba/private/smbpasswdldap admin dn = “cn=admin,dc=com“passdb backend = ldapsam:ldap:/t03;ldap admin dn = “cn=admin,d

8、c=com“ldap delete dn = yesldap user suffix = dc=samba,dc=tigerldap suffix = dc=com;log setuplog file = /usr/local/samba/var/log.%mmax log size = 50socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192dns proxy =no;start wins serverwins support = yeshomescomment = Home Directoriesveto files = /.

9、*/browseable = nowritable = yeslinux-appcomment = share the Linux application softwarepath = /data/linappcase sensitive = nofollow symlinks = nowritable = yesvalid users = root +wjcreate mask = 0660directory mask = 07702.1. 服务器角色Samba 3服务器可担任主域控制器、独立域服务器和域成员服务器等角色。设置方法如下: 主域控制器: global . domain mast

10、er = yes preferred master = yes domain logons = yes security = user .使用 testparm命令测试一下:debian:# testparm Load smb config files from /etc/samba/smb.confProcessing section “homes“Processing section “printers“Loaded services file OK.Server role: ROLE_DOMAIN_PDC #服务器角色为主域控制器Press enter to see a dump of

11、your service definitions 备份域控制器: global . domain master = no preferred master = yes domain logons = yes security = user .运行 testparm测试一下:testparm Load smb config files from /etc/samba/smb.confProcessing section “homes“Processing section “printers“Loaded services file OK.Server role: ROLE_DOMAIN_BDC

12、#服务器角色为备份域控制器Press enter to see a dump of your service definitions 独立服务器: global . domain master = yes preferred master = yes domain logon = no security = user .再使用 testparm命令测试一下。debian:# testparm Load smb config files from /etc/samba/smb.confProcessing section “homes“Processing section “printers“L

13、oaded services file OK.Server role: ROLE_STANDALONE #服务器的角色为独立服务器Press enter to see a dump of your service definitions 域的成员服务器: global . domain master = yes preferred master = yes domain logon = no security = domain .运行 testparm测试一下:Load smb config files from /etc/samba/smb.confProcessing section “h

14、omes“Processing section “printers“Loaded services file OK.Server role: ROLE_DOMAIN_MEMBER #服务器的角色为域成员服务器Press enter to see a dump of your service definitions2.2. 使用 openldap目录服务进行 samba用户验证samba可把用户信息存放到 ldap目录服务器上,使用目录服务器上的用户数据进行用户验证。这样做的好处是:1. 集中存放用户信息,多台 Samba服务器可共用一套用户数据。2. 当用户数量多时,采用 ldap目录服务器可

15、加快用户验证的速度。因为ldap目录服务是专门为读操作而优化的,搜索数据的速度是非常快的。3. 维护方便,可利用 ldap客户端进行可视化维护,如 phpldapadmin。4. 用户可自由更改自已的密码,而不用经过系统管理员,可大大减轻系统管理员的工作量。要使 samba能够使用 ldap目录服务器作为用户验证的后台数据库,需在编译samba时选择了“-with-ldapsam”选项。在确保 samba服务器和 openldap服务器正常运行的前提下,进行以下配置。 要 openldap能认识 samba的用户信息,我们需在 openldap服务器中导入 samba.schema。该文件是不

16、包含在 openldap源码中的,我们可在samba源码目录中的/examples/LDAP 路径中找到该文件。把它拷贝到openldap的 schema目录。接着编辑 slapd.conf文件,用 include指令把 samba.schema导入 openldap。如: # Allow LDAPv2 binds allow bind_v2 # This is the main slapd configuration file. See slapd.conf(5) for more # info on the configuration options. # # Global Directi

17、ves: # Features to permit #allow bind_v2 # Schema and objectClass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema #导入 samba.schema文件重启服务器,使配

18、置生效。 下来我们要配置 samba服务器了。打开 smb.conf文件,添加以下内容: # You may wish to use password encryption. Please read ENCRYPTION.txt, # Win95.txt and WinNT.txt in the Samba documentation. Do not enable this # option unless you have read those documents encrypt passwords = true ; passdb backend = smbpasswd guest #取消sm

19、bpasswd验证 ldap admin dn = “cn=admin,dc=com“ #指定管理员 passdb backend = ldapsam:ldap:/ldapserver #指定用户验证的 ldap目录服务器 ldap user suffix = dc=samba,dc=it #用户信息存放的目录路径 ldap delete dn = no #不允许删除dn ldap suffix = dc=com #指定搜索后缀 存盘退出,重启 samba服务器。运行以下命令,把 cn=admin,dc=com管理员的密码“secret”保存到 secrets.tdb文件中,以便 samba服

20、务器与 openldap服务器进行通信。 debian:# smbpasswd -w secret Setting stored password for “cn=admin,dc=com“ in secrets.tdb #成功保存的提示信息 把 Samba用户的验证信息存放到 ldap目录服务器的方式有两种。一种是利用 ldap里已有的目录项,不用另外增加一个目录项来专门存放 samba用户验证信息,而是把 samba用户的验证信息存放到目录服务器中同名的目录项。采用这种方式,sambaSamAccount 对象类型需手工维护,当用户数量大的时候就很难保证 sambaSID号码的唯一。另外一

21、种是直接运行 smbpasswd -a test命令,重新创建一个uid=test,dc=samba,dc=it,dc=com的目录项。sambaSamAccount 对象类型会自动创建,sambaSID 号会由程序自动维护。但如果要以uid=test,dc=samba,dc=it,dc=com登录目录服务器维护 samba用户信息,则要手工添加一个 simpleSecurityObject对象类型,增加userPassword属性才行。这两种方式各有优缺点,可满足不同场合的需求。第二种方式相对简单,这里就不具体介绍。下面详细介绍一下第一种方式的配置步骤。首先,我们在 ldap目录服务器上要有

22、一个叫“cn=test,dc=samba,dc=it,dc=com”的目录项,且使用该 dn能正常登录 ldap目录服务器。在 cn=test,dc=samba,dc=it,dc=com目录项中还要添加一个 sambaSamAccount对象类型,以便 smbpasswd程序写入 samba帐号信息。添加该对象类型时需要填两个属性,一个是 sambaSID,一个是 uid,sambaSID 类似 Windows NT中的 SID,它是以 S开头一串数字,由 Samba服务器的 SID + UID组成。当你的 samba服务器成功连接到ldap目录服务器时,它已在 ldap目录服务器中自动创建一

23、个sambaDomainName=hostname的目录项。该目录项的 sambaSID就是 Samba服务器的 SID了,类似于 S-1-5-21-3129426798-1813742091-3551573396。UID 手动填一个即可,如 3001。每个用户的 UID都是不同的。最后的 sambaSID是 S-1-5-21-3129426798-1813742091-3551573396-3001。 配置完成,使用 smbpasswd命令就可把用户信息保存到 ldap目录服务器上了。 debian:# smbpasswd -a test New SMB password: Retype n

24、ew SMB password: Added user test. #成功添加用户用 phpldapadmin以 cn=test,dc=samba,dc=it,dc=com登录进ldapserver服务器,你会发现该用户添加了 samba用户的验证信息。其中,uid 属性记录的是 samba的用户名,sambaLMPassword 和sambaNTPassword两个属性分别记录了用户的加密密码资料,分别对应windows98和 NT两种加密方式。 到此为止,使用 ldap目录服务器进行 Samba用户验证已配置完成。但现在还是要管理员在 samba服务器上使用 smbpasswd命令为用户维

25、护密码。从维护工作量和保密的角度出发,由用户自已维护自已的密码是一种最好的方法。我们借助 phpldapadmin这个工具可帮我们实现该功能。具体设置方法是这样的:1. 首先,在设置前,需先把 phpldapadmin安装好,具体的安装步骤请参考我网站上的 openldap学习笔记。安装好 phpldapadmin后,我们已可正常使用该工具维护目录项了。同时,通过目录服务器的权限管理,我们也可把 test用户密码属性设置成只有 dn是cn=test,dc=samba,dc=it,dc=com的用户和目录服务器管理员才能修改。要达到该项果,请把以下 ACL加入到 slapd.conf中。2. a

26、ccess to attrs=sambaLMPassword3. by dn=“cn=admin,dc=com“ write4. by anonymous auth5. by self write6. by * none7.8. access to attrs=sambaNTPassword9. by dn=“cn=admin,dc=com“ write10. by anonymous auth11. by self write12. by * none重启 openldap服务器使配置生效。13.要修改 samba用户的密码,我们只要修改 smbaLMPassword和sambaNTPass

27、word两个属性值即可,但会出错,提示修改失败,要我们去修改 phpldapadmin的 template_config.php文件。这是因为 phpldapadmin使用了一个叫 mkntpwd的程序来生成 samba的加密密码。在 template_config.php文件中设置了 mkntpwd程序的执行路径。mkntpwd 程序默认是没有安装在系统中的,我们需安装它,并把它放到在 template_config.php文件里指定的执行位置(/usr/bin/)。mkntpwd 的源码包含在 samba的源码中,我们可进入 samba的源码目下的 examples/LDAP/smblda

28、p-tools/mkntpwd目录,mkntpwd 的源码全部在这里了,运行 make命令,就可生成 mkntpwd程序。最后把 mkntpwd拷贝到/usr/bin目录下即可。如果是 debian系统,template_config.php 文件就位于/etc/phpldapadmin/templates目录下。节选有关定义 mkntpwd程序路径的内容如下:.# SAMBA TEMPLATE CONFIGURATION # - # # In order to use the samba templates, you might edit the following properties:

29、# 1 - $mkntpwdCommand : the path to the mkntpwd utility provided with/by Samba. # 2 - $samba3_domains : the domain name and the domain sid. # #*/ path 2 the mkntpwd utility (Customize)$mkntpwdCommand = “/usr/bin/mkntpwd“;.14.以 cn=test,dc=samba,dc=it,dc=com登录进入 ldap服务器,我们就可修改 smbaLMPassword和 sambaNTP

30、assword两个属性值了。其它用户的这两个属性 test用户是看不到的。其实,不使用 phpldapadmin来维护 samba用户密码也可以,我们完全可以用 python-ldap配合 mkntpwd程序自已 DIY一个用户密码管理程序。2.3. 回收站功能samba也有回收站功能,它能把你在 samba服务器中删除的文件移到回收站中,而不是真正的从磁盘删除掉。这大大提高了数据的安全性,更人性化一些。下面介绍如何设置。homescomment = Home Directoriesbrowseable = no# By default, the home directories are ex

31、ported read-only. Change next# parameter to yes if you want to be able to write to them.writable = yes# File creation mask is set to 0700 for security reasons. If you want to# create files with group=rw permissions, set next parameter to 0775.create mask = 0700# Directory creation mask is set to 070

32、0 for security reasons. If you want to# create dirs. with group=rw permissions, set next parameter to 0775.directory mask = 0700vfs object = recycle #启用回收站功能recycle:keeptree = yes #保持目录的树状结构recycle:versions = yes #相同文档名时,有不同版本recycle:repository = /recycle/%u #回收站的位置,每个用户都有一个目录recycle目录的访问权限是所有用户可写,自

33、动生成的 recycle/%u目录的访问权限是只能由用户可写。Chapter 3. 小技巧 使用 tdbdump程序可以查看 samba的 tbd格式文件。 使用 smbclient -L winserver -d 3可显示连接 winserver时的 Debug信息,这些信息对于跟踪连接过程和故障处理都很有用。-d 是开启debug功能的选项,3 代表 debug的级别,可选值为 0到 10,数字越大显示的信息越详细。 连接中文机器名时要注意两边系统的字符集要相同,如果不同,要用unix charset和 doc charset指定两边的字符集。如果两边系统的字符集不对称,则在连接时会出现以

34、下的出错信息。 session request to failed (Called name not present) session request to *SMBSERVER failed (Called name not present) samba通过 Windows的 139和 445端口进行通信,samba 会先通过 445端口进行连接,如果连接失败,则再尝试 139端口。在 NT中,SMB 运行于NBT(NetBIOS over TCP/IP)上,使用 137,139(UDP),139(TCP)端口。在 2000/XP/2003中,SMB 可以直接运行在 tcp/ip上,而没有额

35、外的 NBT层,使用 TCP 445端口。 手动加载 smbfs文件系统的方法: debian:# mount -t smbfs -o username=your_username,password=your_password,iocharset=utf8,codepage=cp936 /servername/sharename /mnt/share我的 Debian采用 UTF8编码,Samba 服务器的操作系统采用 GB2312编码,使用 iocharset=utf8和 codepage=cp936选项是为了使加载的共享能正常显示中文,iocharset 指定客户端的字符集,codepag

36、e 指定服务器的代码页。注意,由于该命令包含访问文件服务器的用户名和密码,为保密起见,该命令尽量不要在命令行中输入,因为 bash有一个命令缓存功能,能记录你所输入的所有 shell命令。我们应该采用 credentials选项代替username和 password选项,如下所示:debian:# mount -t smbfs -o credentials=/root/smbpassword,iocharset=utf8,codepage=cp936 /servername/sharename /mnt/sharecredentials=/root/smbpassword选项指定登录 sam

37、ba服务器的密码文件,smbpassword 文件的格式如下:username=xxxxxxpassword=xxxxxx由于在 smbpassword密码文件中的密码是明文的,所以我们要设置好访问权限,只能由合法用户来读取。我们也可把加载 smbfs文件系统的方法写在 fstab文件中,使它能够在系统启动时自动加载,下面是我的 fstab文件,自动加载了/root/data和/root/books 目录。# /etc/fstab: static file system information.# /dev/hda3 / ext3 errors=remount-ro 0 1/dev/hda2

38、none swap sw 0 0proc /proc proc defaults 0 0/dev/fd0 /floppy auto user,noauto 0 0/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0/samba/data /root/data smbfs credentials=/root/smbpassword,iocharset=utf8,codepage=cp936 0 0/samba/books /root/books smbfs credentials=/root/smbpassword,iocharset=utf8,codepage=cp936 0 0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报