分享
 
 
 

SAMBA配置详解

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

使用 Linux 和 SAMBA替代Windows NT/2000 服务器

摘要:

这一篇文章提供了以前LinuxFocus 文章关于SAMBA用于在Unix-Windows异构网络共享资源的方案。 特别地,它集中在使用SAMBA运行Windows提供的服务。

这不仅是因为Linux强大灵活,还更出于经济考虑的结果:

* 极大的节省了购买Windows服务器的许可证费用。

* 要达到相似的性能表现,Linux比Windows使用更少的硬件资源(也就是处理器和内存了)。

一个运行SAMBA配置恰当的Linux服务器可以替代Windows NT/2000服务器, 它一般能共享目录, 提供活动目录服务(active directory service ,ADS) 但是它可以做为主域控制器(Primary Domain Controller, PDC), 进行 Windows 2000/NT/98/95 作为客户机的用户认证 ,共享资源(目录和打印机) 和定制用户会话。

这篇文章主要集中到这些方面。

许多的计算机环境都以Windows 服务器提供的功能为基础,装有SAMBA的Linux 服务器会在不改变客户机的情况下,替代所有基于Windows系统提供的功能。

以下的要讨论的步骤假定:SAMBA已经安装并且运行正确的机器将被用做服务器。读者需要 Linux和Windows服务器的基本的知识。

案例学习

考虑Linux/Samba 服务器作为主域控制器(PDC), 每个认证过的用户进入 两种共享的目录,一个是公共空间,一个是私人空间。在这篇文章里,讨论一种进 入私人数据空间的极为常见的情况,就是每个用户有一个个人的目录。

要考虑的细节:

Linux/Samba NetBIOS 名字:SMBServer

Windows 域名(工作组): THEDOMAIN

每个用户的私人分区: H: (Windows) => /home/ (Linux server)

公共分区: P: (Windows) => /home/public

图 1 显示了一个简单的网络示意图,客户机运行Windows系统,使用 Windows NT/2000服务器提供的资源和服务。 这个服务器能被 Linux/SAMBA服务器替代。

Fig. 1 – 在Windows服务器上运行的主域控制器和 文件服务器

配置

遵循以下步骤:

1) 创建要在主域服务器(Linux/Samba)待认证的用户。

使用adduser 命令, useradd 或 userconf, 你可以使用一些用户管理的工具,也可以 是带有图形界面的(Webmin,Linuxconf,Yast等).

需要确认如果用户只进入Linux/Samba服务(如果你想), 这就是说用户不必进入Linux命令行,这样的话只有把home目录设成/dev/null ,命令行设成/bin/false。

2) 把UNIX用户转换成Linux/Samba/Windows用户,生成smbpasswd 文件。

cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

另一个方法是,执行一下的SAMBA命令来创建用户和定义密码:

smbadduser

smbpasswd

这些命令和adduser与passwd一样有类似的作用。

3) 编辑SAMBA的配置文件(smb.conf), 你要确定加入或减去下列标有comment的可选项:

netbios name = SMBServer

workgroup = THEDOMAIN

server string = Linux Samba NT Server

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

max log file = 0

security = user

encrypt password = yes

smb password file = /etc/samba/smbpasswd

ssl CA certificate = /usr/share/ssl/.... (cancel comment)

socket options = (cancel comment)

local master = yes

preferred master = yes

domain master = yes

domain logons = yes

logon script = logon.bat

wins support = yes

注意:

做为每一个用户的特有的登陆(login), 需要使用"%U.bat"文件替换 原先的“登陆描述”(login script)。这样每一个用户都有一个的带有自 己用户名的“登陆描述”, %u 也是可以使用的. 如果你想定义用户属于 那个组,你可以使用 %g或%G,这些参数和其他参数的定义可以在手册 中找到。(man smb.conf)

4) 创建共享资源

编辑smb.conf 文件 并注释所有的“共享”的例子,加入以下 的信息,如果没有必要的话,不用更改:

[netlogon]

comment = Initialization Scripts

path = /home/netlogon

read only = yes

guest ok = yes

browseable = no

[home]

comment = User Directory

path = /home/%U

browseable = yes

writable = yes

[public]

comment = Public Directory

path = /home/public

browseable = yes

writable = yes

guest ok = yes

create mask = 0777

force create mask = 0777

保存smb.conf 文件。

5) 你可以使用如下的命令来验证smb.conf是否正确:

testparm

这些命令分析smb.conf 文件并报告发现的错误。

6) 分别使用权限0754和0777 创建/home/netlogon 和/home/public目录。

7) 编辑logon描述文件logon.bat。

重要提示: 使用DOS/Windows文字编辑器 (比如Notepad或Edit)来创建logon.bat文件 (所以保存的文本文件是微软兼容的形式),你也可以在Linux上做这件事但是你必须转换成正确的文本形式。 你可以使用比如 Vim的命令":set textmode"得到有微软行结尾符的文件。

net time SMBServer /y (you can also use: /yes instead of /y )

net use H: SMBServerhome -y (you can also use: /yes or /y instead of -y )

net use P: SMBServerpublic -y

8) 加入SMBServer信息到lmhosts文件中。

编辑/etc/samba/lmhosts 文件后 /etc/lmhosts)文件并且 加入关于SMBServer信息的一行。

SMB服务器, 比如: 192.168.0.10 SMBServer

9) 重启动SAMBA的后台程序(smbd)。

service smb restart

如果在你的Linux版本中上面的命令不工作,你可以使用如下命令:

ps -auxgx | grep smb

kill -9 <process ID of smb>

smbd

10) 使用smbclient来验证以上的配置是正确的。

smbclient -L //SMBServer

如果"Password:"显示出来, 按"Enter" 键,服务器的共享的 资源会显示出来。

11) 使用Windows 95/98/NT 计算机在域THEDOMAIN中进行客户登陆, 使用Linux/Samba创建的用户(看步骤1和2)。

在95/98/ME中, 配置可以按照一下的顺序:

开始 => 设置 => 控制面板=> 网络 =>微软网络客户 => 属性。

Windows NT/2000(工作站/专业版)中也是类似的用法, 可能顺序不是一样。

单击选项"Start session in Windows NT/2000 domain" 并写下域名 THEDOMAIN (WORKGROUP)。

一个配置文件的实例

一个完整的SAMBA配置文件罗列如下,这个文件在不通的Linux分发版本中测试通过。 读者可以修改它以达到自己想要的结果。其中每条指令都被恰当的注释。

最后,给那些的想快速配置SAMBA的人的建议是安装 Webmin或者SWAT,这些工具可以让你配置时轻松一点。

#============================================================#

# /etc/smb.conf

#------------------------------------------------------------------------------------------------------------#

# SAMBA主配置文件

# 配置文件的骨架,根据你的需求选择其中的参数。

#------------------------------------------------------------------------------------------------------------#

# 测试通过的系统: Solaris系统和 Linux各个发布版本

# RedHat 6.0, 7.0 和 7.1

# Solaris 7

# Slackware 7.x

# Mandrake 6.1, 7.0 和 8.1

# SuSe 7.2

#------------------------------------------------------------------------------------------------------------#

# 最近一次更改时间: 08/12/2001

# 作者:Sebastian Sasias - sasias@Linuxmail.org

#============================================================#

#

# 这个文件按照SAMBA规范来开发的,可以参见smb.conf(5)手册。

#

# OBS: 更改本文件以后,使用"testparm"命令来测试。

#

#======================== Global Options =======================#

#

# 总配置

#

[global]

#......................................................................................................................................#

# workgroup = NT-Domain-Name o Workgroup-Name,比如: THEDOMAIN

# PDC域

workgroup = THEDOMAIN (不区分大小写)

#......................................................................................................................................#

# 在其他的机器中声明的本机器的名称

netbios name = SMBServer

#......................................................................................................................................#

# 这个声明会出现在Windows的“网络邻居”中

server string = Samba Server de este lugar

#......................................................................................................................................#

# 这一行由于安全的原因很关键,只许在局域网中特定的计算机的连接。

# 在这个例子中,是192.168.8.0(C级网络)的网络

# 和“环路”(loopback)的接口是可以连接的。

# 更多的细节,请阅读smb.conf man手册。

# 比如:只有从规定开始的ip以后的地址才能共享资源。

# 192.168.8 和 127 (以后的注释)

; hosts allow = 192.168.8. 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

#......................................................................................................................................#

# 如果你需要一个guest帐户,你不要注释掉下面这行。

# 你一定么加入这条到/etc/passwd里,否则这个用户无“人”可用。

; guest account = pcguest

#......................................................................................................................................#

# 下面这条就是使得每台计算机都有一个不同的log文件,

# 通过这个文件和SAMBA服务器相连。

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

#......................................................................................................................................#

# 设置log文件长度的限制(单位 Kb)。

max log size = 50

#......................................................................................................................................#

# 阅读security_level.txt for得到更多的细节

# 指定验证密码的方式

# 用户级的安全策略=每个用户都有自己的密码 (SAMBA密码)

security = user

#......................................................................................................................................#

# 如果使用服务器级的安全策略,验证过程在另一个机器上进行。

# 只有在使用服务器级的安全策略时,才使用值"password server"

# 密码服务器等于【认证服务器地址】。

; password server = <NT-Server-Name>

#......................................................................................................................................#

# 如果你想使用加密的密码,请阅读Samba文档中的ENCRYPTION.TXT,

# Win95.txt和WinNT.txt。

# 你只有清楚的了解这个属性的足够多的信息才能使用它。

# 信息:Win95,Win98和 WinNT 可以发送加密的密码。

encrypt passwords = yes

#......................................................................................................................................#

# 使用下列的行来定制你的配置。

# 在网络中的每个计算机,%m 取代了自身netbios的名字。

; include = /usr/local/samba/lib/smb.conf.%m

#......................................................................................................................................#

# 在你会发现文档和一些流行的“提示”会告诉你下面的选项可以得到更好的性能。

# 试试!

# 阅读speed.txt和手册来知道更多的细节。

socket options = TCP_NODELAY

#......................................................................................................................................#

# Samba 可以配置多种的网络接口。

# 如果你使用多种网络接口,你一定要在下面列出来。

# 阅读手册来知道更多的细节。

; interfaces = 192.168.8.2/24 192.168.12.2/24

#......................................................................................................................................#

# Browser 控制选项:

# 如果你不想让samba做为网络中的主browser, 设置"local master = no"。

local master = yes

#......................................................................................................................................#

# 在OS 水平上,本服务器当选主browser优先权的设置。

# 一般地,缺省值可能就可以了。

; os level = 33

#......................................................................................................................................#

# 域主机指定Samba成为域中主Browser。

# 这样允许Samba运行域控制器和在不同的TCP/IP子网中能被“看成”一台机器。

# 如果你使用了 Windows NT/2000域控制器,你就不应该使用它。

domain master = yes

#......................................................................................................................................#

# 更高级的域主在启动中使得Samba成为一个局域的Browser,

# 这使得它有更多的机会(选举成为域主)。

# 如果我们有2个以上的服务器,级别高的服务器会更受“欢迎”,

# 客户机会在一个列表中搜寻到一台服务器的。

preferred master = yes

#......................................................................................................................................#

# 只有你使用NT/2000 服务器在以一个主域控制器(PDC)在运行,你才能使用下条。

; domain controller = <NT-Domain-Controller-SMBName>

#......................................................................................................................................#

# 如果你想把SAMBA当成Windows 9x/Me 工作站的“域登陆服务器”,你要使用下条。

domain logons = yes

#......................................................................................................................................#

# 如果你使用了“域登陆”,你一定要使用一个登陆脚本,

# 在Windows网络中的每台机器或者每个用户。

# 每个工作站的特定登陆批处理是

; logon script = %m.bat

# 每个用户的特定登陆批处理是

; logon script = %U.bat

#......................................................................................................................................#

# 那里存放零星的profiles文件 (只对Win95和 WinNT有效)

# %L 取代这个服务器的NetBIOS名字, %U 取代用户名

# 如果你使用它,一定不要注释掉下面的Profiles共享

; logon path = \%LProfiles\%U

#......................................................................................................................................#

# Windows互联网解析服务器:

# WINS支持 — 告知NMBD使能它的WINS 服务器。

# WINS协议 把机器名转换成IP地址,

# 它象TCP/IP中DNS那样工作。

; wins support = yes

#......................................................................................................................................#

# WINS服务器-告知Samba的NMBD部件成为WINS的一个客户。

# SAMBA服务器可以成为其中的一个:WINS 服务器或 WINS客户机,

# 但是不可以同时2者皆是。

# 这里WINS IP服务器一定要指定。

; wins server = 192.168.8.1

#......................................................................................................................................#

# WINS代理-告知Samba回应那些没有WINS能力的客户的名字解析的请求,

# 这个情况只有在网络中至少有一台WINS服务器时才有效。

# 缺省是不。

; wins proxy = yes

#......................................................................................................................................#

# DNS代理-告知Samba是否解析NetBIOS名字

# 版本1.9.17 内建的缺省是“是”, 从版本1.9.18 变成了“否”

# 这里我们可以告知SAMBA名字解析使用DNS或者不。

# dns proxy = yes

# dns proxy = no (name resolution will be made by using the file lmhosts )

#......................................................................................................................................#

# 如果登陆的驱动盘没有被指定,Z:单元会自动登陆的。

logon drive = P:

#......................................................................................................................................#

# 当一个登陆出现时,这个脚本被执行: /etc/samba/netlogon/SAMBA.BAT

# 并且使用"netuse"来登陆磁盘单元

logon script = SAMBA.BAT

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

# 每个用户的私人目录

# 单位 P:

[homes]

comment = Home Directories

browseable = no

writable = yes

readonly = no

force create mode = 0700

create mode = 0700

force directory mode = 0700

directory mode = 700

#------------------------------------------------------------------------------------------------------------#

# 临时文件目录

# 单位 T:

[tmp]

comment = Tempora Files

path = /tmp

readonly = no

public = yes

writable = yes

force create mode = 0777

create mode = 0777

force directory mode = 0777

directory mode = 0777

#------------------------------------------------------------------------------------------------------------#

# 服务器的CD-ROM

# 单位 L:

[cdrom]

comment = CD-ROM

path = /mnt/cdrom

public = yes

writable = no

#------------------------------------------------------------------------------------------------------------#

# 组,根据/home/grp.name_group来的

# /home/user/group 是 /home/grp.name_group一个链接

# grp.name_group 使用权限770

# 单位 G:

[group]

comment = Directory of Group

path = /home/%u/group

writable = yes

readonly = no

force create mode = 0770

create mode = 0770

force directory mode = 0770

directory mode = 0770

#------------------------------------------------------------------------------------------------------------#

# 这个单元存放应用软件,安装软件,专用软件等。

# /net 和 /net/install的权限是 755, 比如这里, root是它的拥有者

# 单位 N:

[net]

comment = Directory Net

path = /net

writable = yes

readonly = no

force create mode = 0750

create mode = 0750

force directory mode = 0750

directory mode = 0750

#------------------------------------------------------------------------------------------------------------#

[netlogon]

comment = Logon Services in the Network

path = /etc/samba/netlogon

guest ok = yes

writable = no

locking = no

public = no

browseable = yes

share modes = no

#------------------------------------------------------------------------------------------------------------#

#============================================================#

最后的考虑

SAMBA包和其他的一些在Linux上使用的工具在不断的发展中,因此 有可能这里讲的一些细节会失去效用。实际上在SAMBA的发展中一些参 数名字在配置文件中变化很小,并且保持了更优化的结构。

如果你在SAMBA配置中发现一些未知参数的错误信息,你可能有2个 简单的办法解决它:

* 阅读缺省的smb.conf文件,里面相同的行一般会有注释,可以提供 一些“可能产生问题的参数”的信息。

* 阅读SAMBA文档, 从描述最近一次的版本变化的文件开始。

参考:书目和软件工具

* SAMBA,官方网址: http://www.samba.org

* Webmin,官方网址: http://www.webmin.com a remote administration tool for computers running UNIX systems.

* GNU 项目 和自由软件基金会:http://www.gnu.org

* 一个有意思的网址,那里可以得到RPM包: http://www.rpmfind.net

* LinNeighborhood 网址: http://www.bnro.de/~schmidjo, 一个有意思的Linux工具,使用它可以通过“SAMBA网络”共享资源。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有