您所在的位置:读书频道 > 操作系统 > Linux > 20.5.1 让SAMBA管理网段用户

20.5.1 让SAMBA管理网段用户

2007-12-07 10:57 鸟哥 机械工业出版社华章公司 字号:T | T
一键收藏,随时查看,分享好友!

《鸟哥的Linux私房菜——服务器架设篇》(第二版)第20章的主要介绍的是在不同的平台上利用同样的协议进行文件传输的操作。本文说的是让SAMBA管理网段用户。

AD:

20.5  服务器进阶管理

除了前面提到的几个信息外,在这里也来谈谈如何让您的SAMBA做更多的事情,甚至包括将Windows用户的默认目录放到SAMBA上来。

20.5.1  让SAMBA管理网段用户

前面介绍的内容都是属于Peer/Peer的联机状况,也就是SAMBA服务器与Windows客户端是平等地位的。所以Windows客户端需要知道SAMBA服务器内的账号和密码数据后,才能够顺利的使用SAMBA的资源。不过,这样的方式在较大型的局域网环境下可能会有些困扰,例如学校的环境。

如果一个计算机教室里有50台Windows XP Pro的个人计算机,由于计算机教室大家都会使用,因此这50台个人计算机将使用还原精灵,也就是每次计算机重新开机后整个操作系统会还原成原本的样子。但用户总是需要有个人默认目录的,不希望这次的工作在重新开机后就失去,所以我们可以利用一台主机来让他们储存数据,即Primary Domain Controller(PDC)主机。

其实SAMBA PDC的作用很简单,就是让SAMBA PDC成为整个局域网的领域管理员(Domain Controller),然后让Windows主机加入这个领域,以后用户利用Windows登录时,Windows会前往PDC服务器取得该用户的账号和密码,同时PDC还会传送用户的重要数据到那台Windows个人计算机上,而Windows计算机上的用户在注销时,该用户修改过的数据也会回传给PDC,如此一来不管这个用户在哪一台个人计算机上登录,它都能够取得正确的个人数据。
PDC是个很复杂的环境,它可以实现的功能很多,而且密码的验证也不必在同一台PDC主机上。不过这里我们不介绍那么复杂,只是做一个简单的练习,因此下面的这台PDC使用自己的密码来进行验证,并且也管理自己所共享的资源。整个基本的设置流程如下:

· 设置好PDC主机的TCP/IP与Windows主机的网络。

· 设置PDC的角色定位,因为PDC管理自己的密码,所以security=user。

· PDC最好拥有整个网段的名称解析权力,即成为主要的名称解析器。

· 需有netlogon资源共享,在Windows 2000/XP Pro客户端的登录时使用。

· 由于Windows需读入个人设置文件,默认目录为profile,因此Linux系统需预先设置此目录。

· 增加PDC上的用户账号以及机器代码(Machine Account)等。

· 在Windows 2000/XP Pro个人计算机上设置为PDC的客户端。

下面就来依序处理。

1. 设置lmhosts或/etc/hosts对应的Netbios与IP

由于SAMBA即将成为整个网段的名称解析者,因此最好将整个网段的NetBIOS Name与IP的对应写入到此文件中。当然,如果网段IP的获取为DHCP,那这个文件就不用写了。以上述案例来说,这个文件的内容应该是:

[root@linux ~]# vi /etc/samba/lmhosts
127.0.0.1 localhost
192.168.1.254 vbirdServer
192.168.1.21 vbirdcpu2
192.168.1.11 vbirdcpu1

2. 设置smb.conf成为具有PDC的能力

假设要让PDC客户端登录时可以取得它自己的默认目录,那么需要这样处理:

[root@linux ~]# vi /etc/samba/smb.conf
[global]
     workgroup=vbirdhouse
     netbios name=vbirdServer
     Server string=This is vbird's samba Server
     unix charset=utf8
     display charset=utf8
     dos charset=cp950
     log file=/var/log/samba/%m.log
     max log size=50
     socket options=TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
     dns proxy=no
     template shell=/bin/false
     winbind use default domain=no
     security=user
     encrypt passwords=yes
     smb passwd file=/etc/samba/smbpasswd
     printcap name=cups
     load printers=yes
     printing=cups
     # 与PDC有关的设置值
     # 下面几个设置值处理成为本局域网内的主要名称解析器
     preferred Master=yes
     domain Master=yes
     local Master=yes
     wins support=yes
     # 操作系统 (OS) 等级越高才能成为主网段的控制者,一般NT为32
     # Windows 2000为64 ,所以这里设置高一点,但不可超过255
     os level=200
     # 下面则是设置能否利用PDC登录,且登录需要进行哪些操作
     domain logons=yes
     logon drive=K                <==登录后默认目录挂载成 Windows 哪个盘
     logon script=startup.bat  <==每个用户登录后会自动执行的程序
     time Server=yes             <==自动调整 Windows时间与samba同步
     admin users=root          <==默认的管理员账号。默认为 root 
# 因为鸟哥不喜欢在samba中使用root ,所以这里您也可以指定成其他账号

# 在指定登录者能够进行的工作,里面主要是具有许多执行程序
[netlogon]             <==与前面的logon script有关,该程序放置在这里
    comment=Network Logon Service
    path=/home/samba/netlogon  <==需要主动建立此目录
    writable=no
    write list=root
    follow symlinks=yes
    guest ok=yes

[homes]
    comment=Home directories
    browseable=no
    writable=yes
    valid users=%S
    create mode=0664
    directory mode=0775
[temp]
    comment=Temporary file space
    path=/tmp
    read only=no
    public=yes
[root@linux ~]# testparm
[root@linux ~]# /etc/init.d/smb restart

上面的设置有几个地方比较有趣。

· time Server:要使SAMBA与Windows主机的时间同步,需使用这个项目。

· logon script:当用户通过Windows客户端登录后,SAMBA可以让用户去设置他们自己的目录配置。整个配置的内容记录在startup.bat中。您要注意的是,startup.bat的文件名可以随意更改,不过它需要放置到“[netlogon]”所指定的目录内。

· logon drive:在Windows下面大多以C、D等作为磁盘的代号,这里可以指定一下默认目录要放置在哪个磁盘中。

· admin users:指定这个SAMBA PDC的管理员身份。

· [netlogon]:指定利用网络登录时首先去查询的目录资源。

3. 建立所需要的目录与文件

先来建立“[netlogon]”所需要的数据,它实际上就是一个目录:

[root@linux ~]# mkdir -p /home/samba/netlogon

接下来还要建立允许用户执行的文件,只有startup.bat可以。这里假设用户默认目录为K槽,而SAMBA额外分享的temp则为L槽,那您可以这样做:

[root@linux ~]# vi /home/samba/netlogon/startup.bat
net time 
birdServer /set /yes
net use K: /home
net use L: 
birdServer emp
# 这个文件的格式为:net use [device:] [directory]

# 再将该文件转成 DOS 的断行格式才行。因为是提供给 Windows系统的
[root@linux ~]# unix2dos /home/samba/netlogon/startup.bat
[root@linux ~]# cat -A /home/samba/netlogon/startup.bat
net time 
birdServer /set /yes_M$
net use K: /home_M$
net use L: 
birdServer emp_M$
#M符号就是Windows断行字符

4. 建立用户

在SAMBA里面建立用户是通过smbpasswd这个指令来完成的,我们已经建立过,所以这里不再说明。但是我们需要root这个账号来管理PDC与Windows客户端之间联机建立所需要的权限,因此需要建立起这个用户才行。建立的方法很简单:

 [root@linux ~]# smbpasswd -a root

另外,我们都知道Windows XP Pro的用户配置文件会被放置到“C:\Documents and Settings\用户账号”目录中,在该目录下面会有类似桌面、我的最爱、应用程序设置、启动、我的文档等,这些东西会放置到SAMBA PDC的哪里去备份呢?其实是放置到“/home/用户账号/profile/”目录下的,该目录默认会被主动的建立起来,不过偶而会有一些权限错误的问题,所以您可以预先处理该目录,通过chmod或chown改变成该用户可以存取的权限。另外,为了避免这个问题,对于新增的用户而言,您可以这样做:

[root@linux ~]# mkdir /etc/skel/profile

以后新增的用户都可以存放来自Windows的特殊设置文件目录,比较好管理。使用useradd新增用户后,记得也要使用“smbpasswd-a username”来让该用户可以使用SAMBA。

5. 建立机器码账号
由于PDC会针对Windows客户端的主机名称(NetBIOS Name)进行主机账号检查,所以我们也要为客户端的主机名称进行账号的设置。应该注意的是,一般用户账号是英文或数字,主机账号则在该账号最后面加上一个“$”即可。例如,vbirdcpu2这台主机可设置的账号名称为vbirdcpu2$。
而我们知道要使用smbpasswd增加的用户需要在/etc/passwd中,因此要建立这个账号时,可进行如下操作:

[root@linux ~]# useradd -M -s /sbin/nologin -d /dev/null vbirdcpu2$
[root@linux ~]# useradd -M -s /sbin/nologin -d /dev/null vbirdcpu1$

会增加-M-s-d等参数的原因是因为不想要让这个账号具有可以登录的权限,因此将这个主机账号设置的比较复杂一些。接下来让SAMBA知道这个账号是主机账号,所以您应该要这样做:

[root@linux ~]# smbpasswd -a -m vbirdcpu1$
[root@linux ~]# smbpasswd -a -m vbirdcpu2$

这样便可加入主机账号。而我们的SAMBA PDC也可通过“主机账号”来判断Windows客户端能否连接,若连接上PDC与Windows客户端后,接下来就可通过用户账号在Windows客户端登录了。

6. Windows XP Pro客户端的联机与登录

请注意,下面的方法仅是用于Windows 2000、Windows XP专业版(Pro),一般的Windows XP Home版本是不支持的。如果客户端的主机是随机版的Windows XP,通常是Windows XP Home,下面的方法可能就无法适用了。连接SAMBA PDC的过程如下。

(1)确认Windows客户端的网段与主机名称

首先需要确认Windows客户端的工作组以及主机名称与SAMBA PDC是否相同,确认的方法在局域网里面已经提过,这里再强调一次:右击“我的电脑”,在弹出的快捷菜单中选择“属性”命令,打开“计算机名”选项卡,会出现如图20-15所示对话框。

图20-15 “计算机名”选项卡

如图20-15所示,您要先确认主机名称与工作组,在这个案例中,工作组为vbirdhouse,这台Windows主机的NetBIOS名称则为vbirdcpu2。如果不正确的话,则单击“更改”按钮进行设置,并且重新开机。重新开机后再单击图20-15中的“网络ID”按钮。

(2)设置主机名称与网段名称

接下来要将这台Windows XP Pro连接到局域网上的PDC里,即处理主机账号以及SAMBA PDC负责的网段(domain)。在图20-15中单击“网络ID”按钮后,分别在弹出的对话框中进行以下操作:

· 单击“下一步”按钮。
· 选中“本机是商业网络的一部分,用它连接到其他工作着的计算机”单选按钮,单击“下一步”按钮。
· 选中“公司使用带有域的网络”单选按钮,单击“下一步”按钮。
· 单击“下一步”按钮

然后就会出现如图20-16所示对话框。

图20-16 “用户账号和域信息”设置

请依序填写SAMBA主机上管理员的账号与密码,需要注意的是,这个密码是记录于 /etc/samba/smbpasswd中的,而不是/etc/shadow。这是SAMBA主机的设置。输入之后单击“下一步”按钮,弹出如图20-17所示对话框。

图20-17 “计算机域”设置

鸟哥觉得很奇怪,总是提示找不到计算机的账户。不过没有关系,这里我们依旧再填写一次主机的NetBIOS Name以及群组名称,输入正确的管理员账号与密码,注意最后面的网段就是工作组名称。最终将弹出如图20-18所示对话框。
图20-18 Windows客户端连上PDC的方式

此时就表示已经连接上SAMBA PDC了,我们希望所有的用户都直接由SAMBA PDC控管,所以这里选择“现在不新增使用者”单选按钮,单击“下一步”按钮。

(3)如果发生错误的情况

如果总是提示“用的账户是计算机账户。请使用您的通用用户账户或本机用户账户来存取这台服务器”的错误信息时,可以进行以下操作:

· 先查看一下/var/log/samba的日志文件,尤其是vbirdcpu2.log中关于这台主机的信息。

· 如果还是无法解决,可以在lmhosts中增加vbirdcpu2的IP与主机名称的对应,然后将SAMBA关掉“/etc/init.d/smb stop”,等待一段时间,从而让NetBIOS的名称解析时间超时,再重新启动SAMBA“/etc/init.d/smb start”,再输入一次root的密码。

在鸟哥尝试过的案例中,尽管上面第二个步骤很有效,但还是要查看/var/log/samba里面的登录信息。

(4)重新开机并以新的网段名称登录

在图20-18之后重新开机的对话框如图20-19所示。

图20-19 “登入Windows”对话框

此时输入您在SAMBA PDC上的账号与密码后,这台Windows主机便可使用它自己的账号登录了,也可以通过SAMBA主机来登录。

(5)观察用户的默认目录与设置文件

登录之后,打开“资源管理器”,可看到如图20-20所示窗口。

图20-20 资源管理器

连接建立后就可以在自己的默认目录中添加数据了。当注销之后,在Windows桌面上所进行的各项个人化设置将全部被移动到/home/dmtsai/profile中,可以到SAMBA主机上确认一下。

(6)一些使用上的技巧

虽然PDC很好用,不过值得注意的是,每次使用PDC上的账号登录Windows客户端主机时,Windows主机会由/home/username/profile/中加载所需要的数据,并暂时启动一个文件夹(C:\Documents and Settings\username),如果默认目录下的profile数据太多,传输就会花去很多时间。

所以,建议将一些文件数据放置到默认目录下,尽量不要使用Windows默认的“我的文档”,因为“我的文档”会将数据移动到 /home/username/profile/My Documents目录下,同样,储存到桌面的数据会被放置到 /home/username/profile/桌面目录中,因此在登录与注销时会花去很多时间。

事实上,鸟哥觉得在一个网段中,如果有多台Windows NT主机,例如Windows 2000/XP Pro等比较稳定的个人桌面版本时,使用PDC就很有用了。因为Windows 2000/XP Pro也是一个多用户的操作系统。所以,当使用Windows 2000/XP Pro而无法登录PDC时,您是无法使用Windows 2000/XP Pro上的任何信息的。但是,在Windows 98等单用户操作系统上,若无法正常的登录,您仍然具有该计算机的主控权。

另外,在设置Windows客户端之前,需先确认Windows的版本,而上述操作对于Windows XP Home是没有作用的。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

分享到:

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

软件工程:实践者的研究方法
20多年以来,《软件工程:实践者的研究方法》一书是最受学生和行业专业人员欢迎的软件工程指南。它在全面而系统、概括而清晰地介

最新热帖

更多>>

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院