QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 719|回复: 4

Fedora Core 1+SAMBA 构建完美PDC域服务

[复制链接]
发表于 2004-8-23 11:12:35 | 显示全部楼层 |阅读模式
版权声明:本文可以供非盈利网站任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明,商业网站如需要转载,请与我联系,不得用于商业用途.
前言:
SAMBA 作为一个伟大的工具,提供了我们WINDOWS和LINUX互访等应用的完美解决方案.正如我之前所设置的SAMBA PDF SERVER一样,其强大之处以及给大家带来的方便,这里我就不多说了.
本文我和大家分享一下利用SAMBA做PDC的经验,其实大家以前或许配置过,网上也好多类似的文章,但是我觉得都不是好详细或者好实用,所以自己研究了一下,并把过程整理成此文,本文提到的文件服务器能很好的做到用户认证,文件和文件夹的权限控制等,希望对你有所帮助.
A.安装SAMBA  
1。如果你在安装LINUX系统时候并没有选择安装SAMBA的话,你可以从Fedora的光盘中获取RPM包,或者索性就直接在添加和删除程序中选取SAMBA服务器直接安装
rpm -ivh samba*.rpm
当然你也可以直接到samba的官方网站(http://www.samba.org)去下载最新的软件包最新的tar包,http://us1.samba.org/samba/ftp/samba-3.0.0.tar.gz
一般来说你只要下面的方法编译安装即可.
tar zvxf samba-3.0.0.tar.gz
cd samba-3.0.0
./configure ##可以加—help 加上你需要的参数,具体请参考SAMBA官方文档
make
make intall
ok!SAMBA的安装并不是本文的重点,如果遇到什么问题请大家自行参考相关文档,www.samba.org 上有详细的说明文档
B.SMB.CONF配置文件
配置SAMBA服务器的工作并不十分困难,我们只需要修/etc/samba/smb.conf这个配置文件便可以完成,当然如果你不习惯字符界面或者直接编辑配置文件,你可以使用SWAT,WEBMIN等图形化的界面去配置,文中我们也将提到SWAT.
现在让我们来看看实现PDC的smb.conf的配置文件的内容

/etc/samba/smb.conf/:

[global]                 #SAMBA的全局变量
workgroup = ec-base.com    # 此参数定义我们的DOMAIN NAME 为ec-base.com
netbios name = ec-baseDC   
#你可以指定你samba PDC的netbios名字,netbios相信大家都很耳熟了吧,没错了,客户端通过windows的网络邻居浏览时看到就是我们这里设置的名字.如果你没有设置这个参数,SAMBA将自动将此参数的值设置为你网络名称.  
dos charset = cp936       #设置客户端显示为简体中文,不然会乱码
unix charset= cp936               
server string= ec-base.com PDC #网上邻居中客户端所看到对此服务器的描述
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
# socket options选项设置调整 TCP/IP 性能。一般来说默认即可
os level = 64 # OS级别  比如windows95为1﹐98为16﹐2000为32,2003好像是64,这里我们的级别比局域网内其他OS的级别更高应该"更高",由于域内只有2000 ,我这里设置64
preferred master = yes #竞选首服务器,也就是说如果LAN内存在其他服务器,Samba为首选的一个
local master = yes  #指定samba为维护局域网机器列表的本地主浏览服务器
domain master = yes   #指定samba作为主域服务器
add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
##自动为进来的客户机建立它们的机器信任账号,否则需要手工加入,如我们新增加一台BECKS的机器到域中
useradd -n -g machines -c Machine -d /dev/null -s /bin/false BECKS$
passwd -l BECKS$ #锁定密码
smbpasswd -a -m BECKS #这里不需要输入$符号
#特别注意这里机器名后面的美元符号;这是必需的,LINUX系统将该项标识为信任帐户
security = user      #服务器适用的安全模式,这里我们选择user,让SAMBA对登陆者的身份进行认证和管理,不要被AD和DOMAIN参数迷惑
encrypt passwords = yes #对密码进行加密
unix password sync = yes #是否同步SAMBA与UNIX/LINUX 的密码
passwd program = /usr/bin/passwd %u #同步密码的程序和参数
passwd chat =   *New*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *Enter*new*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *passwd: *all*authentication*tokens*updated*successfully*
domain logons = yes  #管理域登陆
log file = /var/log/samba/log.%m #设置日志的路径以及文件名,%m表示日志文件名以客户端NetBios名来命名.
log level = 2 #日志级别
max log size = 50 #限制日志大小 防止挤暴/var
hosts allow = 127.0.0.1 192.168.1.0/255.255.255.0 #允许连接的网段.不设置为允许全部网段.
logon home = \\%L\%U #与[homes]成对应关系
logon drive = Z: #将用户的/home目录映射成 Z盘
logon script = logon.bat   #设置用户登陆时运行的脚本
logon path = \\%L\profiles\%U #设置用户的漫游文件的路径,下面必须设置[profiles]的共享项
##大家看到这或许有疑问,这个文件是怎么产生的?用户少的时候,我们还可以手工进行配置多的话,不是累死?
这里我提供一个完美的解决方案,对了不是我提供,应该说是SAMBA和伟大的LINUX!
我们可以通过preexec参数配置SAMBA,让此文件自动生成.
其参数的语法为:preexec = script-name
这里我们需要一个脚本来实现我们的需求:
#!/bin/sh
USER= $1
If [ ! –d /home/samba/profiles/$USER]
Then
     Mkdir –m 0700 /home/samba/profiles/$USER
Fi
然后保存为/home/samba/mkprofile 并设置为755,以便任何用户都可以执行,
接着我们将在[homes]中来配置preexec.
[homes]
comment = %U的Home目录 #出现在网上邻居的注释
browseable = no #设置为不能浏览,即只有用本用户帐号登陆后,才能在网上邻居看到该文件夹
writeable = yes   #设置可以写入
preexec =/home/samba/mkprofile %U #自动生成profile
create mask = 0700 #用户在此目录下创建的文件UMASK 0700 即本人对文件具
                 有读,写,执行的权限,同组或者其他用户无任何权限
directory mask = 0700 #从安全性出发,这里我们把此目录下的文件夹权限也设置成0700
[profiles]   #与上面的logon path对应
path = /home/samba/profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0700

[netlogon]
comment = 网络登陆脚本 #注释
path = /home/samba/netlogon #网络登陆脚本的路径
read only = yes   #设置为只读
write list= root  #只有ROOT才能写入
browseable = no #不出现在共享浏览列表,也就是其不会在网上邻居共享列表中列出



[Mis]
path = /home/mis   #共享文件的实际路径
create mask = 0770   # 这2个参数设置文件和目录的0770,这样在此共享下创建的文件或者目录创建者和创建者所在的主要组成员对文件具有读,写,执行的权限,而其他用户则无任何权限
#directory mask = 0770
valid users = @mis #有效用户,可以设置那些用户有权限读取该共享,@后面加组名,则设置那个组对此文件有权限.这里我们只允许mis组的用户登陆,这个对各个文件夹的权限控制 好重要
writable = yes         #可以写入
force group = mis #设置在此目录下创建的文件及文件夹都强制为mis组所有
##为什么要这样设置?原因很简单:用户的主要组不大可能和其他用户的主要组
一致,通过force group就能解决一个文件被修改后,同组但是不同主要的用户可
以读写,举个例子:becks 属于MIS 组,但是他的主要组是ecbase,如果没有
force group这个参数,那么根据我们前面设置的create mask = 0770 和
directory mask = 0770 ,虽然becks创建的文件demo.txt允许同组的人进行读
写,但是你只要 ls –al 就可以发现,该文件的组是ecbase而不是MIS,所以在
此目录下mis组的人员并没有权限去读写此文件,而force group = mis就帮我
们解决了这个问题

[HR]
path = /home/hr
create mask = 0770
directory mask = 0770

valid users = @hr #只允许hr组的用户登陆,这个对各个文件夹的权限控制,这个参数好重要,它能很好的帮助我们对文件权限进行控制
writable = yes
force group = hr





配置文件就说到这里,现在需要根据配置文件建立相应的文档
groupadd machines
mkdir -m 0775 /home/netlogon
mkdir /home/samba
mkdir  /home/samba/profiles
chmod 777 /home/samba/profiles
添加管理员帐号
首先添加的是root帐户,把root加入到smb帐号中
smbpasswd -a root
客户端加入域需要管理员的帐号加入域的权限,就像WINDOWS 2000 DOMAIN上的ADMINISTRATOR
添加普通用户
useradd becks
passwd becks
smbpasswd -a becks
重新启动SMB服务!这是使我们配置生效的重要步骤!
OK!Samba PDC 的配置以及帐号都建立了.
现在你唯一要做的是将客户机加入到域中。客户端的设置,这里就不在多说了,
但是由于XP加入SAMBA DOMAIN的时候需要修改注册表,先将步骤写出
c.配置Windows XP 客户端:

说明 :只有 Windows XP-Professional Edition 能加入域, WindowsXP-Home Edition 不适用.

步骤
1) 首先确认你的工作组与服务器一致,并配置好正确的IP和主机名
2)修改注册表,打开注册表编辑器,修改一下选项
注:一般只要修改a)项即可,如果不能加入,再试行修改b)和执行3)
a) RequireSignOrSeal Registry 修改
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\netlogon\parameters
"RequireSignOrSeal"=dword:00000000
b)使用注册表编辑器修改HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\CompatibleRUPSecurity 的 DWORD 值为 1
3) 使用组策略编辑器gpedit.msc
启用 电脑设置\管理模板\系统\用户配置\不检查Roaming Profile文件夹的用户的所有权
4) 修改前面3项后,剩下的就和2000加入DOMAIN的步骤一样了
5) 重启电脑让所有配置生效!   
2.如果你觉得手工配置太麻烦,可以直接使用/usr/share/doc/samba-3.0.0/docs/Registry/WinXP_SignOrSeal.reg
d.相关技巧:
1.为了使用户现有的配置文件可以得以使用,你可以将用户现在正在使用的配置文件COPY到服务器PROFILE下,这样他们又可以使用回自己熟悉的桌面等环境
2.如果希望用户可以自行安装软件或者修改客户端系统配置,可以将该SAMBA用户加入本机的管理员组中,方法与AD下相同
3.缺陷:在密码修改方面,笔者试过直接在WINDOWS提供修改密码的程序界面中修改,发现并不能成功修改,如果你发现有什么好的解决方法,请与我和大家分享!
4.如果你不习惯用字符来配置SAMBA服务的化,你可以通过一些图形界面的软件来帮助你简化配置的过程,这里我们来讲讲SWAT
 swat(samba web administration tool) ,顾名思义,它是一款帮助用户从WEB界面去管理SAMBA的软件.从而简化用户直接编辑SMB.CONF文档的过程.
  你可以从你的光盘中直接RPM安装,安装完毕后, swat默认是关闭的,你需要修改/etc/ xinetd./swat文件,下面我们来看看这个配置文件!
/etc/xinet.d/swat:

service swat

{

        port            = 901 #其服务的端口

        socket_type     = stream  套接类型

        wait            = no

        only_from       = 127.0.0.1 10.1.3.11#这里你可以设置你允许连接SWAT的IP

        user            = root  #这里是登陆管理的用户,默认是ROOT

        server          = /usr/sbin/swat  

        log_on_failure  += USERID

        disable         = no  #将系统默认的’yes’修改为no,开启SWAT服务

}


也许有读者会问,SWAT通过WEB页面登陆,那我不是还要配置apache服务器,这点你不用当心,由于swat有自己的内嵌的web服务器,启动swat不必启动apache服务器.修改配置文件并保存后,请重新启动你的xinetd文件
#service xinetd restart
这时候,你就可以通过你的浏览器来连接SWAT服务,输入http://10.1.3.210:901
(SAMBA服务器的IP,记得加入901端口),就会出现以下的登陆界面,因为我们在配置文件中设置user=root,这里我们使用root的帐号登陆SWAT,输入帐号密码
以下就是SWAT的配置界面
它有基础与高级2个配置界面,一般新手的话可以选择基础选项,如果你想对SAMBA的一些高级参数进行编辑,那么你可以选择高级选项.OK!具体的配置这里就不说了!自己琢磨一下吧!
但是由于swat不使用加密连接,安全起见笔者建议尽量不要远程使用swat工具.
更多文章,请访问weblog.ec-base.com
刺客微软 发表于 2004-8-20 12:26:24
发表于 2004-8-23 13:48:39 | 显示全部楼层
没看出来怎么个“完美”法 :-(
回复

使用道具 举报

 楼主| 发表于 2004-8-23 15:36:17 | 显示全部楼层
只是标题!不必在意!!此方法实现许多自动化!
回复

使用道具 举报

发表于 2004-8-25 01:10:08 | 显示全部楼层
最重要的功能没有了,roming profile。否则用户在不同机器上登录,会很麻烦的。
回复

使用道具 举报

 楼主| 发表于 2004-8-27 15:26:59 | 显示全部楼层
麻烦请认真阅读本文,呵呵!没有到以下内容?
不仅有远程配置文件,还自动生成文件夹!!!!
logon path = \\%L\profiles\%U #设置用户的漫游文件的路径,下面必须设置[profiles]的共享项
##大家看到这或许有疑问,这个文件是怎么产生的?用户少的时候,我们还可以手工进行配置多的话,不是累死?
这里我提供一个完美的解决方案,对了不是我提供,应该说是SAMBA和伟大的LINUX!
我们可以通过preexec参数配置SAMBA,让此文件自动生成.
其参数的语法为:preexec = script-name
这里我们需要一个脚本来实现我们的需求:
#!/bin/sh
USER= $1
If [ ! –d /home/samba/profiles/$USER]
Then
Mkdir –m 0700 /home/samba/profiles/$USER
Fi
然后保存为/home/samba/mkprofile 并设置为755,以便任何用户都可以执行,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 20:38 , Processed in 0.129242 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表