Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10805671
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:08:22

我们今天要实现的环境是,假如公司有财务,技术,领导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
阅读(929) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~