samba实例
时间:2009-03-23 来源:sjhf
我们今天要实现的环境是,假如公司有财务,技术,领导3个部门,我们分别为3个部门建立3个用户组为caiwu,network,lingdao; 三个部门里各有2个用户,我们建用户分别为caiwu01,caiwu02,network01,network02,lingdao01,lingdao02 然后我们分别就公司的具体情况建立相应的目录及访问权限,通过以下的例子,希望大家能在平时的工作中灵活的应用samba的安全权限来设置你们的samba文件服务器。 1。首先服务器采用用户验证的方式,每个用户可以访问自己的宿主目录,并且只有该用户能访问宿主目录,并具有完全的权限,而其他人不能看到你的宿主目录。 2。建立一个caiwu的文件夹,希望caiwu组和lingdao组的人能看到,network02也可以访问,但只有caiwu01有写的权限。 3。建立一个lindao的目录,只有领导组的人可以访问并读写,还有network02也可以访问,但外人看不到那个目录 4。建议一个文件交换目录exchange,所有人都能读写,包括guest用户,但每个人不能删除别人的文件。 5。建议一个公共的只读文件夹public,所有人只读这个文件夹的内容。 好,我们先来前期的工作 #groupadd caiwu #groupadd network #groupadd lingdao #useradd caiwu01 -g caiwu #useradd caiwu02 -g caiwu #useradd network01 -g network #useradd network02 -g network #useradd lingdao01 -g lingdao #useradd lingdao02 -g lingdao 然后我们使用smbpasswd -a caiwu01的命令为6个帐户分别添加到samba用户中 #mkdir /home/samba #mkdir /home/samba/caiwu #mkdir /home/samba/lingdao #mkdir /home/samba/exchange #mkdir /home/samba/public 我们为了避免麻烦可以在这里把上面所有的文件夹的权限都设置成777,我们通过samba灵活的权限管理来设置上面的5点要求。 以下是我的smb.conf的配置文件 [global] workgroup = bmit #我的网络工作组 server string = Frank's Samba File Server #我的服务器名描述 security = user #使用用户验证机制 encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd #使用加密密码机制,在win95和winnt使用的是明文 其他的基本上可以按照默认的来。 [homes] comment = Home Directories browseable = no writable = yes valid users = %S create mode = 0664 directory mode = 0775 #homes段满足第1条件 [caiwu] comment = caiwu path = /home/samba/caiwu public = no valid users = @caiwu,@lingdao,network02 write list = caiwu01 printable = no #caiwu段满足我们的第2要求 [lingdao] comment = lingdao path = /home/samba/lingdao public = no browseable = no valid users = @lingdao,network02 printable = no #lingdao段能满足我们的第3要求 [exchage] comment = Exchange File Directory path = /home/samba/exchange public = yes writable = yes #exchange段基本能满足我们的第4要求,但不能满足每个人不能删除别人的文件这个条件,即使里设置了mask也是没用,其实这个条件只要unix设置一个粘着位就行 chmod -R 1777 /home/samba/exchange 注意这里权限是1777,类似的系统目录/tmp也具有相同的权限,这个权限能实现每个人能自由写文件,但不能删除别人的文件这个要求 [public] comment = Read Only Public path = /home/samba/public public = yes read only = yes #这个public段能满足我们的第5要求。 到此为止我们的设置已经能实现我们的共享文件要求,记得重启服务哦 #/etc/rc.d/init.d/smb restart 如果大家没有winodws,不妨先用samba的cilent端命令来测试一下 命令的用法我在这里只举几个例子,具体的大家去试验 smbclient -L 服务器ip -N guest帐户查询你的服务器的samba共享情况,你可以检验一下是否lingdao目录时候能被guest帐户看到,应该是看不到的,当然你也可以以某个用户的名义查看 smbclient -L 服务器ip -U caiwu01 系统会提示密码,只要输入smb密码就行。 smbclient //服务器ip/caiwu -U caiwu01 #以caiwu01用户的名义登录caiwu目录 smbmount //服务器ip/caiwu /mnt/caiwu -o username=caiwu01 #把服务器的财务目录映射到本地的/mnt/caiwu目录 [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 |
相关阅读 更多 +