免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1423 | 回复: 0
打印 上一主题 下一主题

samba实例 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-09 19:36 |只看该作者 |倒序浏览
Samba
实现的功能:
1.      用Samba实现主域控制器(PDC)。并且客户端在登录到域后,可以修改密码,可以在共享文件的安全属性中可以添加组和用户;(已测试)
2.      用一个Samba服务器虚拟多个Samba服务器;每个Samba分别以不同的安全级别(Security)运行;(已测试)
3.      客户端可以使用Windows AD中的帐号登录Samba服务器;
4.      实现对Samba用户进行磁盘配额。(已测试)
附录:
1:samba中定义的一些宏变量;
2:如何解决Windows访问Samba服务器时文件夹及文件名乱码问题;
3:一个完整的用Samba实现PDC的smb.conf配置文件样本;
4:参考文章列表。
一:用Samba实现主域控制器(PDC)
Step 1 :修改 smb.conf 文件;
配置Samba,将其设置为以PDC模式工作:
[global]
    # 指定工作组或域的名称,需要和系统的hostname一致
workgroup = smbdomain
# 设置Samba服务器的netbios名称
netbios name =  sambapdc
# 对该Samba服务器的一些描述
server string = Samba Server
# 设置客户端与服务器端进行通信时采用加密密码
encrypt passwords = yes
# 指定Samba密码文件的位置
smb passwd file = /etc/samba/smbpasswd
# 允许哪些客户端访问
# 0.0.0.0表示无限制;192.168.0. 表示允许整个网段访问
;hosts allow = 0.0.0.0
# 信任来自哪个网卡的连接
;interfaces = eth0
# 指定日志文件的位置,也可以使用Samba的宏来定义日志文件。比如:
# log.%U,为每个访问的用户都创建一个日志。
log file = /var/log/samba/smbd.log
# 指定日志文件的大小,以K字节为单位
max log size = 50
    # 设置套接字选项,在与客户端对话时使用这个选项
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    # 以下选项设置PDC
# PDC 必须工作在user安全级别
security = user
# 设置Samba为本地主浏览器
local master = yes
# 设置为65,nmbd将打败任何NT服务器而在本地广播范围内成为工作组的
# 本地主浏览器
os level = 64
# 设置为域主浏览器
domain master = yes
# 设置为首选主浏览器
preferred master = yes
# 允许客户端登录到域
domain logons = yes
# 客户端登录到域后执行的脚本
# 将logon path设置成%U.bat(%U指登录的用户名),这样可以针对每个用户
# 做更具体的设置
logon script = logon.bat
# 设置Windows客户端登录到域后的主目录位置
logon home = \\%L\%U\.profile
# 设置Windows客户端登录域后漫游文件(Roaming profiles)存放的目录
logon path = \\%L\profiles\%U
# 设置Windows客户端登录到域后,主目录将要被连接到哪个本地驱动器;
# 这里指定的是H:。
logon drive = H:
# 指定Samba的管理员。用户名之间以空格隔开
admin users = root bibby
Step 2:为domain logon选项添加netlogon字段,为logon path添加profiles字段。并分别将他们设置正确的权限。
[netlogon]
    path = /home/sambapdc/netlogon
    writeable = no
    browseable = no
    guest ok = no
[profiles]
    path = /home/sambapdc/profiles
    writeable = yes
    browseable = yes
    guest ok = no
为这两个文件夹设置正确的权限:
Shell > chmod –R 755 /home/sambapdc/netlogon
Shell > chmod –R 777 /home/sambapdc/profiles
最后还需要为logon script添加logon.bat文件。该文件放在netlogon字段指定的目录下(本例为/home/sambapdc/netlogon/logon.bat):
    net use H: \\%L\%U
logon.bat文件必须是Dos格式的,所以还需要用unix2dos这个工具来转换一下格式:
    shell > unix2dos logon.bat
这样Samba服务器端的设置就完成了。
Step 3 :为PDC添加管理员;
“root”是Samba缺省的管理员。
shell  > smbpasswd –a root
       > New SMB password: PASSWORD
        > Retype new SMB password: PASSWORD
或者直接:
shell > smbpasswd –a root PASSWORD
还可以在smb.conf的”admin users =”中加上某个用户的名字,使其成为管理员。比如:
[global]
    admin users = root ntclient
这样就把登录名为ntclient的客户机器也设置为管理员了。
Step 4:为PDC添加客户端;
为了便于管理,可以先添加一个用户组:
shell > groupadd smbtest
然后为把客户端的机器添加到这个组中(在Novell Suse Enterprisee 9中的操作),做为可信任用户:
1)
# 先将Windows客户端的netbios名称添加到Unix系统中
    # 用户名(ntclient$)加$符号表示这是一个客户端机器的netbios名称,而不是
    # 实际Unix系统上的用户
    shell > useradd –g smbtest –s /sbin/nologin ntclient$
    注意:在RedHat系统中无法添加ntclient$(带$符号的用户)用户,所以你需要先添加一个ntclient用户,然后用vipw工具编辑/etc/passwd,将它修改成ntclient$用户。
2)
# 为这个客户端的机器在Unix系统中添加一个对应的管理用户
    # 为了方便管理,使用和客户端netbios名称相同的用户名
    shell > useradd –g smbtest –s /sbin/nologin ntclient
3)
    # 把客户端机器加入到Samba中
    # 这里的ntclient是客户端机器的netbios名称,添加的时候不加$符号
    # smbpasswd命令的 –m 参数表示添加的是一个可信任的客户端机器
    shell > smbpasswd –a –m ntclient
4)
    # 为客户端机器在Samba中添加一个管理员
   # 这里的ntclient是第2)步中添加的用户名,添加时需要输入密码
    # 这个用户名和密码就是客户端登陆时所使用的帐号
    shell > smbpasswd –a ntclient
OK,重新启动samba服务。
注:在RedHat中无法直接添加带”$”符号的用户。一种可行的方法是:
    1:先添加一个普通用户ntclient(useradd);
    2:使用vipw –p修改/etc/passwd,将ntclient改成ntclient$;
    3:同第一步一样,添加一个普通用户ntclient。
    这样就可以了。
Step 5:从Windows客户端登录域;
    将系统注销,然后在登录框中选择要登录的域,输入已经在Samba服务器中添加的用户名和密码,OK,登录了。
Step 6:客户端如何修改登录密码:
    登录域后,按Ctrl+Alt+Delete键,然后在“更改密码”中,选定域,再输入登录域的用户名和旧密码新密码。
    OK,密码修改成功。
Step 7:将Unix系统上的用户和组映射到Windows域用户组中,使用户在登录域后可以为共享的文件夹添加管理用户;
要实现此功能,Samba必须被配置为PDC,并且需要在 smb.conf 文件中添加以下选项:
[global]
    nt acl support = yes
1):创建NT已有用户组到Unix系统用户组的映射;
常见的NT域的用户组有:
Power Users
Domain Admins
Print Operators
Domain Guests
Administrators
Account Operators
Backup Operators
Users
Domain Users
下面将创建NT域中”Domain Admins”组到Unix系统中winadmin的映射:
1:创建用户组winadmin(也可以使用 yast à security à create user来创建)
    shell > groupadd winadmin
2:在该用户组里添加域管理员用户,比如root,adminitrator之类的。
可以使用yast,也可以直接直接编辑/etc/group文件。
3:创建”Domain Admins”到winadmin的映射:
    shell > net groupmap set “Domain Admins” winadmin
4:使用 net groupmap list 来查看是否映射成功。
5:重新启动smbd和nmbd。
2):创建自定义用户组smbtest到本地用户组smbtest的映射(组的名称必须相同才能做映射);
:在Unix系统下创建一个用户组smbtest;
    Shell > groupadd smbtest
2:将一些用户添加到smbtest组中。
   可以用yast,也可以直接编辑/etc/group文件。
3:创建映射:
   Net groupmap set smbtest smbtest
4:使用 net groupmap list 来查看是否映射成功。
5:重新启动smbd和nmbd。
在客户端登录到域后,在文件夹的属性页上选择“安全”标签,点击“添加”,就可以看到已经做好映射的组了。
二:用一个Samba服务器虚拟多个Samba服务器;
要用Samba服务器虚拟出多个Samba服务器是件很简单的事,只需要在[global]中加入以下几个选项:
[global]
   netbios name = sambaserver1
    # 虚拟另一个Samba服务器,netbios名为sambaserver2
    netbios aliases = sambaserver2  
    # include选项指定虚拟的Samba服务器使用的配置文件
    # %L宏,代表netbios name。smb.conf.%L就表示sambaserver1将使用
    # smb.conf.sambaserver1这个配置文件。
    include = /etc/samba/smb.conf.%L
然后让sambaserver1和sambaserver2共享一部分的smb.conf文件,再配置分别配置好smb.conf.%L文件就可以了。
以下是一个简单的例子,用一台Samba服务器,虚拟出两个Samba服务器,netbios name 分别为a和b。
其中a被配置为PDC(关于如何将Samba配置为PDC,请参考第一部分),b被配置为文件服务器,提供一些共享文件。
============ File : /etc/samba/smb.conf ================
[global]
workgroup = sambatest
server string = samba server %L
    # “a”为系统的hostname
netbios name = a
netbios aliases = b
encrypt password = yes
include = /etc/samba/smb.conf.%L
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
password level = 8
    username level = 8
    log file = /var/log/samba/log.%L%M
    max log size = 50
============ File : /etc/samba/smb.conf.a ===========
   security = user
    os level = 64
    domain master = yes
    local master = yes
    domain logons = yes
    logon script = logon.bat
    preferred master = yes
[netlogon]
comment = "netlogon dir"
path = /home/samba/netlogon
writeable = no
browseable = yes
public = no
[profiles]
    path = /home/samba/profiles
    writeable = yes
    browseable = yes
    guest ok = no
============= File : /etc/samba/smb.conf.b ===============
security = share
[share]
    path = /tmp
    browseable = yes
    writeable = no
    guest ok = yes

照如何将Samba配置为一个PDC的方法,添加和设置好相关文件和目录,然后就可以重新启动smbd和nmbd了。这时候就可以在Windows的“网
上邻居”中看到配置好的Samba服务器了(或者直接在浏览器的地址栏中输入file://a/或者file://b/来测试,能访问即表示配置成功)。
三:配置Samba,使客户端可以使用Windows AD中的帐号登录Samba服务器;
这时候Samba必须运行在security=server或domain级别上。并且添加以下几个选项:
[global]
    security = server
    # 指定Windows AD服务器,从它上面获取帐号信息,供客户端登录
    # 可以是IP地址,也可以是netbios名称
    # 多个AD服务器以空格分开
password server = 192.168.0.1 192.168.0.2
    # 指定username map的映射文件
   username map = /etc/samba/user.map
/etc/samba/user.map文件的格式为:
root=admin administrator
bibby=@administrators
第1行:符号“=” 左边是单独的Unix系统账号,右边是要映射的Windows AD系统上的账号列表。服务器逐行分析映射文件,如果提供的账号和某行有右侧列表中的账号匹配,就把它替换为等号左边的账号。
第2行:符号“=” 左边是单独的Unix系统账号,右边是要映射的Windows AD系统上的用户组。如果提供的帐号和用户组administrators中的一个用户名匹配,就被映射成用户bibby。
四:为Samba用户设置磁盘限额;几个概念:
Grace Period : 用户可被容许超过soft limit 的时间。
假设Grace Period设定为3天,超过soft limit的user在三天内未处理超过limit的档案的话,user将无法再使用任何磁盘空间(这会造成该user无法登录系统)。
设置Grace Period可以使用命令“edquota –t”。
oft Limit : 用户能使用的硬盘空间的大小。
但如果Grace Period不是设为0的话,则Soft Limit只是一个警戒线,使用者如果使用的磁盘空间超过这个警戒线,就会开始收到系统所给的警告。
Hard Limit : Hard Limit代表的是用户对磁盘空间使用的绝对上限。使用者使用的磁
   盘空间绝对无法超越此上限。
   只有当Grace Period不是设为0时,Hard Limit的设定才会生效。
inode :每个文件和目录都需要使用一个inode。所以可以用来限制用户的文件数目。
block limits是对磁盘空间使用的限制,以字节为单位,1024 blocks大概就是1M。

个客户端机器登录Samba
PDC时都需要一个Samba帐号,而这个帐号也对应一个Unix系统帐号,而为了方便管理,这两个帐号的用户名通常都和客户端机器的Netbios
Name一致。所以,当客户端机器登录到Samba域的时候,就等于是同名的Unix系统用户登录上系统,而Quota开始起作用了。
1:设置quota(这里以/home为例);
    编辑/etc/fstab文件,在options区域加上usrquota或者grpquota。也可以同时设置用户quota和组quota。加上后的文件看起来就象这样:
    LABEL=/home   /home  ext3   defaults,usrquota,grpquota      1   2
然后重新启动系统(也可以不重启系统,而使用mount的remount参数:
Shell > mount –o remount /home
)。
第一次使用quota,需要先运行一次quotacheck命令。该命令会自动创建对用户和组进行quota时使用的两个文件:
    Shell > quotacheck –avug
然后会在被quota的目录(这里是/home)下生成两个文件:
    Shell > ls /home/*quota*
        /home/aquota.group  /home/aquota.user
接下来可以使用quota提供的工具来配置和监视quota:
1):edquota;
    edquota –u USER      # 为用户“USER” 配置quota
    edquota –g GROUP     # 为组“GROUP”配置quota
    shell > edquota –u ntclient
   Disk quotas for user ntclient (uid 509):
Filesystem blocks soft   hard   inodes soft   hard
/dev/sda2     28     1024   2048       7      0      0
    这个例子为ntclient用户设置了quota:当总大小达到1024K(1M)的时候,会向用户发出警告,但是还可以继续添加文件(因为还未超过Hard Limit设置的值)。当总大小达到2048K(2M)时,系统将提示用,磁盘已满,无法添加文件。
    这里blocks和inodes都不能更改,因为它们表示的是现在已经使用的数目。
第一个soft是指对文件总大小的Soft Limit,第二个soft是对inode的Soft Limit。一个inode对应一个文件或者一个文件夹。
    这里只配置了对文件总大小的Soft Limit。你可以两个同时使用,既可以限制文件总大小,也可以限制文件和文件夹的数目。
edquota的一些常见用法:
    # 将为ntclient用户设置的quota复制给用户bibby和king
    # 则他们的quota都是一样的
    shell > edquota –p ntclient bibby king
2):repquota,报告分区的quota情况;
    使用方法:
       repquota /quota/path
    例如:
    Shell > repquota /home
*** Report for user quotas on device /dev/sda2
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   36804       0       0             12     0     0
ntclient  --      28    1024    2048              7     0     0
bibby$    --       4       0       0              1     0     0
bibby     --      20    1024    2048              5     0     0
#502      --      24       0       0              6     0     0
#504      --       4       0       0              1     0     0
#505      --      20       0       0              5     0     0
#506      --       4       0       0              1     0     0
#507      --      20       0       0              5     0     0
这就是repquota的输出,象你汇报quota的配置情况。
另外还有quotaoff和quotaon命令,都比较简单,这里就不说了。
3):查看为某个用户设置的quota(以用户ntclient为例):
    shell > quota –u ntclient
    你将会看到和“edquota –u ntclient”一样的结果。
4):查看为某个用户组设置的quota(以组ntclient为例):
   Shell > quota –g ntclient
    看到的结果和edquota –g ntclient一样。
2:设置User Quota(以ntclient用户为例):
    Shell > edquota –u ntclient
Disk quotas for user ntclient (uid 509):
Filesystem blocks     soft   hard   inodes     soft   hard
/dev/sda2     556        1024   2048   85         0      0

  运行以后,将会启动编辑器(看看你的编辑器设置的是什么:echo $EDITOR)进行编辑。这里我为ntclient用户设置的Block
Soft Limit是1024K(1M),Block Soft Limit是2048K(2M)。而对于inode的soft/hard
limit都没有设置。
    设置好后,执行命令(本例设置Quota的FileSystem是/home(/dev/sda2)):
    Shell > quotaoff /home
    Shell > quotacheck –avug
    Shell > quotaon /home
3:测试User Quota:

  从一台客户端的Windows 2000系统上登录到Samba域中,复制一些文件到映射的驱动器中,当超过设置的Block soft
limit时,系统不会出现提示,仍然可以继续添加文件。当文件总大小超过Block hard
limit时,就不能再添加文件了,会提示一个类似于“磁盘空间不足”的警告信息。
这表明Quota正常工作。
4:设置Group Quota(以用户组ntclient为例,该组中有两个用户:ntclient,bibby);
   Shell > edquota –g ntclient
Disk quotas for group ntclient (gid 505):
Filesystem blocks     soft   hard   inodes soft   hard
/dev/sda2     580        1024   3000   91     0      0
    这里为组ntclient设置的Block Soft Limit为1024K(1M),Block Hard Limit为3000K(接近3M);对inode不进行限制。
5:测试Group Quota:

  刚才已经为用户ntclient设置了2048K的Block Hard Limit,这里再让另一台netbios
name为bibby的Windows客户端登录Samba域,并在映射的驱动器中添加文件,看看两个用户(ntclient和bibby)的总文件大小
能否超过为组ntclient设置的Block Hard Limit。
注意:如果在smb.conf中设置了“admin users = ”选项,并且添加了某个用户,则这个用户从客户端登录到Samba PDC中时,对文件的操作将是以root权限进行的,所以也不受quota设置的磁盘容量限制。
    比如,如果在smb.conf中有如下选项:
    admin users = root ntclient
    则这里所做的Quota测试将出现错误(即ntclient用户不受Quota设置的磁盘限额的限制)。
2:Windows访问Samba服务器时文件夹及文件名乱码问题:
在 smb.conf 文件中添加以下选项:
[global]
# dos客户端连接到Samba服务器时,Samba告诉客户端显示的字符集
dos charset = cp936
# Samba服务器使用的字符集
unix charset = cp936
3:一个完整的用Samba实现PDC的smb.conf配置文件样本:
[global]
workgroup = samba
netbios name = sambabibby
server string = Samba PDC running %v
unix password sync = yes
passwd program = /usr/bin/passwd %u
nt acl support = yes
security = user
os level = 64
preferred master = yes
local master = yes
domain master = yes
encrypt passwords = yes
domain logons = yes
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
logon home = \\%L\%U\.profile
logon path = \\%L\profiles\%G\%U
logon drive = H:
logon script = logon.bat
admin users = root
[homes]
browseable = no
writeable = yes
[profiles]
path = /home/sambapdc/profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0770
[netlogon]
comment = Network Logon Service
path = /home/sambapdc/netlogon
read only = yes
参考文章:
   Samba官方文档:http://us2.samba.org/samba/docs
    Quota Tutorial on Linux:
Http://souptonuts.sourceforge.net/quota_tutorial.html
    Quota:User硬碟管理:
http://souptonuts.sourceforge.net/quota_tutorial.html
    磁碟空間管理(Disk Quota):
              
http://nmc.nchu.edu.tw/linux/quota.htm
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/43296/showart_397396.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP