Chinaunix首页 | 论坛 | 博客
  • 博客访问: 650048
  • 博文数量: 197
  • 博客积分: 4858
  • 博客等级: 上校
  • 技术积分: 2162
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-06 22:46
文章分类

全部博文(197)

文章存档

2011年(30)

2010年(21)

2009年(25)

2008年(80)

2007年(41)

分类: LINUX

2008-03-27 11:04:58

samb配置文件,“高级”参数

首先我们来看看这些参数:

  • [global]
    • netbios name:
      你可以指定你samba服务器的netbios名字。通过windows机器的网络邻居可以看到这个名字。如果你没有特别指定,Linux将会使用它自己的网络名作为netbios名。
    • invalid users:
      不允许访问samba的用户名列表。比如“root”不应该被允许访问samba。
    • interfaces:
      如果你的Linux服务器有一张以上的网卡,同时你希望限制只有一个网络可用。
    • security:
      可用的安全模式。如果使用security=user将会要求每个用户都在GNU/Linux服务器上拥有一个账号
      如果你不需要samba服务器管理用户,同时打算让所有人是用同样的共享资源,可以设为:security=share。
    • workgroup:
      你的linux服务器所在的工作组名字。
    • server string:
      你的Linux机器的简单描述(一些字符串)。
    • socket options:
      用来调节samba服务器,并且让他快些的选项列表。视情况而定。
    • encrypt passwords:
      必须使用加密口令么?必须了解到,(几乎)每个windows系统都会有不同的搞法!
    • wins support:
      你的Linux服务器需要以wins方式工作?
    • os level:
      OS级别指定哪个服务器将成为域控制器(domain master),局部控制器(local master),等等。
    • domain master:
      指定samba作为主域服务器
    • local master:
      指定samba作为local master server
    • preferred master:
      如果有其他服务器存在的话,Samba是否会是首选的一个?
    • domain logons:
      Samba可以管理整个域的连接控制么?
    • logon script:
      当此用户开始一次会话时运行哪个脚本?
    • logon path:
      启动脚本文件在什么地方?
    • logon home:
      在何处存放用户profile?
    • name resolve order:
      以怎样的顺序使用资源顺序以查询网络内机器名字?
    • dns proxy:
      Samba服务器是否同时也被用作DNS代理服务器?
    • preserve case:
      保持文件名的大小写情况。
    • short preserve case:
      保持文件名的大小写情况。
    • unix password sync:
      是否需要同步Unix和windows的口令?
    • passwd program:
      用哪个程序更动口令。
    • passwd chat:
      用什么“协议”更动口令。
    • max log size:
      log文件的最大尺寸。
  • Section [netlogon]
    指定netlogon在哪里。
  • Section [profiles]
    用户profile文件部分。
  • Section [homes]
    用户Home目录。

Samba 变量

变量 说明
客户端变量
%a 客户端体系:
比如: Win95, WfWg, WinNT, Samba ...
%I 客户端IP地址
%m 客户端NetBios名
%M 客户端DNS名
用户变量
%g 用户%u 主要组
%H 用户%u home 目录
%u Unix 当前用户名
共享变量
%P 当前共享的根目录
%S 当前的共享名
服务器变量
%h Samba服务器的DNS名字
%L Samba服务器的Netbios名字
%v Samba版本
其他变量
%T 当前日期和时间

使用这些变量的例子:如果你的网络内有一些机器分别运行windows 3.11和windows98,你可以创建两个配置文件,为每种系统使用一个,那么可以使用%a变量。

结果: 我们的配置文件



[global]
printing = bsd
printcap name = /etc/printcap
load printers = yes
guest account = nobody
invalid users = root

; 改掉它的netbios名
netbios name = pantoufle
; 它监听的网络
; (你不需要他在另外一个网络上面也进行服务,因为那个是因特网联接)

interfaces = 192.168.0.1/255.255.255.0

; security user表示每个用户都必须在这个server上面拥有一个Unix账号
security = user

; 这个机器属于哪个工作组
workgroup = rycks
; 服务器的简单说明,当察看细节的时候可以看到
; %h 是服务器的DNS名字,%v samba的版本号
server string = %h server (Samba %v)

; 我们使用samba自己的log文件,不仅仅使用syslog
syslog only = no

; 至少重要的信息应当写到syslog去,
; 其他信息会写到 /var/log/smb(nmb)/
syslog = 0;

; 嗯,调整一下性能!
socket options = IPTOS_LOWDELAY TCP_NODELAY \
SO_SNDBUF=4096 SO_RCVBUF=4096

; 使用加密过的口令哦,注意了,
; 每个W95客户端都要打上 MS SMB 安全补丁。
; NT4 必须打上 SP3 或者更高补丁
; 我不记得W3.11的情况了:很有可能它并不支持加密口令 :(
encrypt passwords = yes

; 这个server同时也是WINS 服务器。
; WINS 允许两个网络使用不同的ip段
; (比如 192.168.0.0/255.255.255.0 和 192.168.0.1/255.255.255.0)
; 互相察看"另外" 网络的共享资源,一旦网关gateway激活。
wins support = yes

; OS 级别。比如我们的server是域控制器,本地登录,诸如此类
; 如果网络里面有一个NT服务器的话,我们的级别应该"更高" 。
os level = 34

; 域管理
domain master = yes
local master = yes
preferred master = yes

; 域连接管理
domain logons = yes

; 当有用户登录时,运行什么脚本?
; %g 指向用户所在的主要组
logon script = %g.bat
; 在什么地方可以找到我们的脚本?
; %L 是samba服务器的netbios名
logon path=\\%L\netlogon
; 在什么地方存放用户的profile?
; %U 用户的登录名
logon home=\\%L\%U\winprofile

; 以何种方式检查资源以查找该机器名字?In which order check the resources to find
; the name of a machine?
; 注意,不象windows在正常的基础上就发送广播,我们的广播是最后进行。
name resolve order = lmhosts host wins bcast

; 是否Samba必须用DNS proxy的方式运作?
dns proxy = no

; 保留其文件名和大小写
preserve case = yes
short preserve case = yes

; 我们必须同步windows和Linux的口令么?
unix password sync = yes

; 如何同步口令
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* \
%n\n *Retype\snew\sUNIX\spassword:* %n\n .

; Log文件的最大尺寸,
; 防止/var 目录爆掉 :p
max log size = 1000

; 我们是时间服务器:用来同步各个机器的时间
; 通过登录用.bat文件来使用这一特性。
time server = yes

; 指定netlogon所在位置。
; 这只会在登录时使用到
; 因此我们不必让它公开。
[netlogon]
path = /home/netlogon/%g
public = no
writeable = no
browseable = no

; 每个用户的Home目录
[homes]
comment = Home Directories
browseable = no

; 他可以写入了,对吧。
read only = no

; 默认的Unix umask.
create mask = 0700

; 基于安全目的,该目录被设定为700
directory mask = 0700


; 共享FTP,这样可以不用特别的客户端就能在
; 网络邻居里面使用了
[ftp]
path = /home/ftp/pub
public = yes
printable = no
guest ok = yes

; 临时目录
[tmp]
path = /tmp
public = yes
printable = no
guest ok = yes
writable = yes

; 另外的一个临时目录
; 提供给特定的需要特别多空间的用户
[bigtemp]
path = /home/bigtemp
public = yes
printable = no
guest ok = yes
valid users = erics
writable = yes


现在,我们在服务器上有些啥

简单看看,我们在服务器上应该有什么:

  • 每个用户一个账号
  • smb.conf 文件
  • 一个目录 /home/netlogon (就像我例子里头的那个)
  • 在这个目录里头应该对应每个用户组有一个 .bat 文件(例子马上就来)
  • 一个CONFIG.POL 文件提供系统安全策略(也在这个目录里头)
  • config.pol文件,去windows CD里面找出poledit.exe来造。



net use P: \\pantoufle\homes
net use T: \\pantoufle\tmp
net time \\pantoufle /SET /YES



net use P: \\pantoufle\homes
net use T: \\pantoufle\tmp
net time \\pantoufle /SET /YES
regedit /s \\pantoufle\netlogon\teachers.reg



net use P: \\pantoufle\homes
net use T: \\pantoufle\tmp
net time \\pantoufle /SET /YES
regedit /s \\pantoufle\netlogon\pupils.reg



[HKEY_CURRENT_USER\Software\Microsoft\Windows
\CurrentVersion\Explorer\User Shell Folders]
"Personal"="P:\\"



[HKEY_CURRENT_USER\Software\Microsoft\Windows
\CurrentVersion\Explorer\User Shell Folders]
"Personal"="P:\\"


这个文件允许自动挂接用户个人目录到P: 而临时目录被挂接到T: 。同时系统时间也跟samba服务器作同步。

提示: .bat 文件的格式必须是“DOS模式”。最好就是在notepad里面生成这个文件,然后再放到服务器上。

制定系统安全策略(C) (TM) (R)

使用域控制器可以让windows安全些

就是这个标题!当然,我从MS关于他们系统安全策略工具的文档里面借来的。

因此,为了创建一个windows系统策略,比如防止某些用户(所有的?)运行regedit或者dos程序等等,你不得不使用Windows98 CD上面的POLEDIT。

运行PolEdit,查看它的帮助,写下相关的信息……本文并不打算教你怎么使用私有软件。

一旦你准备好了.POL文件, 把它复制到samba服务器上,那个在[netlogon]中指定的路径里面。

注意: 对于W9x 客户机,系统策略文件必须是CONFIG.POL……至于WindowsNT,应该是另外一个名字,因为我没有NT没办法告诉你 :'(
哈,不用送给我一个NT让我测试。总之很感谢,你的良心大大的好 :o)

提示: PolEdit 允许创建用户组和用户,不过我们还没有成功过。只有默认用户被放到账号里面去。

比如,如果我用PolEdit创建一个“admin”组,当用户以“erics”身份连接的时候,允许运行regedit(他的主要组是“admin”),我没有办法运行regedit :(

不过,用poledit创建一个“erics”用户倒是工作得很好。

因为觉得像用poledit建立1056个用户这类工作很没劲,而且全局用户管理看上去更有意思一点儿,我们“建议”下面这样一些技巧:

为了这件事儿,我们已经解决了几个问题:造出来三个config.pol文件给默认用户,因此,在Linux服务器这边,我们还有:
/home/netlogon/teachers/CONFIG.POL
/home/netlogon/teachers/teachers.bat
/home/netlogon/pupils/CONFIG.POL
/home/netlogon/pupils/pupils.bat
/home/netlogon/admin/CONFIG.POL
/home/netlogon/admin/admin.bat
此外我们已经修改smb.conf文件把这个东西放进去:


[netlogon]
; 我们用%g变量指定netlogon对于不同的用户组给出不同的用户目录
; 以让用户能够正确对应到符合他的config.pol文件。
path = /home/netlogon/%g
public = no
writeable = no
browseable = no

 
 
 
阅读(1319) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~