您的位置:首页 > 其它

Samba文件服务器用户权限模型设计与实现

2008-11-28 08:57 615 查看
[分享]Samba 文件服务器用户复杂权限模型设计和实现

在这个文件系统上,我们要让所有用户都有统一的路径入口;在Windows文件浏览器中,我们要通过\\IP或域名\共享目录名查看,而在Linux的Gnome文件浏览器中查看的方式是 smb://域名或ip地址/共享目录名。而我们让所有用户都通过唯一的地址进入共享文件系统。
/linuxsir (注:Samba文件系统中共享目录名)
|
|───/管理部 (管理部成员的家目录)
|                 |_______/sirmas01 (注:管理成员sirmas01的家目录sirmas01)
|                 |_______/sirmas02 (注:管理成员sirmas0202的家目录sirmas02)
|
|─── /software  (注:软件共享目录,只有管理部成员或更高权限的管理员能管理)
|
|─── /公共文档  (注:所有用户都能查看的文档,只有管理部用户sirmas01和sirmas02有写入权限,进行文档管理)
|─── /共享可写  (注:所有用户都能在此目录下写入文件,sir03或sir04用户可以进行管理,或文件服务器管理员权限用户进行管理)
|─── /成员     (注:公司员工的家目录存放地,每个成员在此目录下都有自己的家目录)
|────|_______/sir03  (注:sir03用户的家目录)
|────|_______/sir04 (注:sir04用户的家目录)

我们先看个图,以Windows下的文件系统管理器所看到的Samba文件系统为例;根据上面目录的规划,我们看到的应该是这样的目录结构;



3.2 文件示例的说明;

根据3.1 的文件系统结构的规则,我们来简单说一下,这个文件系统要实现什么功能;
1]所有用户的统一登录入口都是 linuxsir 目录;
2]管理部目录:管理部目录下设sirmas01和sirmas02目录。管理部成员sirmas01和sirmas02的私有目录设置在 管理部目录下的sirmas01和sirmas02的目录中,并且siradm01和siradm02这两个用户的目录是私有的,也就是说siradm01用户能查看但不能写入siradmin02所有的目录siradm02。相反同理;管理部成员sirmas01和sirmas02用户能管理 /software , /公共文档 , /共享可写, /成员 目录;
3]software 目录:这个目录是存放软件的仓库,sirmas01用户和sirmas02用户拥有管理权,对任何用户(包括匿名用户)都有读的权限;
4]公共文档 目录:这个目录是存放公司公用文件的地方,比如各种制度和文档模板之类的。sirmas01用户和sirmas02用户拥有管理权,对任何用户(包括匿名用户)都有读的权限;
5]成员 目录:成员目录下有sir03和sir04目录,sir03和sir04目录,归属于公司员工sir03和sir04所有,并可以写入。sir03的sir04用户无权查看或写入彼此的目录;
6]共享可写 目录:共享可写目录,是让所有成员都可写入,但管理权在管理部成员手中;
这样看来, 一个相对复杂的权限模型就构建起来了。而且条理也比较清晰。用户统一入口也确立了。这样在Samba配置文件也比较简单了;
4、 用户和权限说明;

siradm 总管理员,可以拥有Samba文件系统的共享目录linuxsir的所有权限,包括删除、写入等操作……
sirmas01 管理员权限,可以除了不能操作sir02的私有目录以外,其它都可操作,包括删除、写入、查看……
sirmas02 管理员权限,可以除了不能操作sir01的私有目录以外,其它都可操作,包括删除、写入、查看……
sir03 普通用户:除了能操作属于自己的的私有目录 [sir03] 目录以外,在・[共享可写]目录下拥有写入权,在 [software] , [公共文档]下仅有查看权。对[管理部]目录并没有查看和写入权;
sir04 普通用户: 和sir03用户类似;
5、 创建目录、用户、用户组及设置权限;

5.1 创建目录


root@SlackIBM:/home# mkdir -p /home/samba/管理部/sirmas01
root@SlackIBM:/home# mkdir -p /home/samba/管理部/sirmas02
root@SlackIBM:/home# mkdir /home/samba/software
root@SlackIBM:/home# mkdir /home/samba/共享可写
root@SlackIBM:/home# mkdir /home/samba/公共文档
root@SlackIBM:/home# mkdir -p /home/samba/成员/sir03
root@SlackIBM:/home# mkdir /home/samba/成员/sir04

5.2 创建用户和用户组;


root@SlackIBM:/home# groupadd siradm
root@SlackIBM:/home# groupadd sirmas
root@SlackIBM:/home# groupadd siruser
root@SlackIBM:/home# useradd -g siradm -G sirmas,siruser -d /home/samba -s /bin/false siradm
root@SlackIBM:/home# useradd -g sirmas -G sirmas,siruser -d /home/samba -s /bin/false sirmas01
root@SlackIBM:/home# useradd -g sirmas -G sirmas,siruser -d /home/samba -s /bin/false sirmas02
root@SlackIBM:/home# useradd -g siruser -d /home/samba -s /bin/false sir03
root@SlackIBM:/home# useradd -g siruser -d /home/samba -s /bin/false sir04

5.3 对相关目录归属和权限;


root@SlackIBM:/home# ls -l |grep samba
drwxr-xr-x 5 root root 128 2007-07-13 14:54 samba
root@SlackIBM:/home# ls -l |grep samba
drwxr-xr-x 5 siradm siradm 128 2007-07-13 14:54 samba
root@SlackIBM:/home# cd /home/samba/
root@SlackIBM:/home/samba# ls -lh
总计 0
drwxr-xr-x 2 root root 48 2007-07-13 14:53 software
drwxr-xr-x 2 root root 48 2007-07-13 15:35 公共文档
drwxr-xr-x 2 root root 48 2007-07-13 15:36 共享可写
drwxr-xr-x 4 root root 96 2007-07-13 15:37 成员
drwxr-xr-x 4 root root 96 2007-07-13 15:36 管理部
root@SlackIBM:/home/samba# chown -R siradm:sirmas software 公共文档 共享可写 管理部
root@SlackIBM:/home/samba# chown -R siradm:siruser 成员
root@SlackIBM:/home/samba#chmod 1777 共享可写
root@SlackIBM:/home/samba#chmod 775 software 公共文档
root@SlackIBM:/home/samba#chmod 770 管理部 成员
root@SlackIBM:/home/samba# ls -lh
总计 0
drwxrwxr-x 2 siradm sirmas 48 2007-07-13 14:53 software
drwxrwxr-x 2 siradm sirmas 48 2007-07-13 15:35 公共文档
drwxrwxrwt 2 siradm sirmas 48 2007-07-13 15:36 共享可写
drwxrwx--- 4 siradm siruser 96 2007-07-13 15:37 成员
drwxrwx--- 4 siradm sirmas 96 2007-07-13 15:36 管理部
root@SlackIBM:/home/samba# cd 成员
root@SlackIBM:/home/samba/成员# chown sir03:sirmas sir03
root@SlackIBM:/home/samba/成员# chown sir03:sirmas sir04
root@SlackIBM:/home/samba/成员# chmod 770 sir03 sir04
root@SlackIBM:/home/samba/成员# ls -lh
总计 0
drwxrwx--- 2 sir03 sirmas 48 2007-07-13 14:53 sir03
drwxrwx--- 2 sir04 sirmas 48 2007-07-13 14:53 sir04
root@SlackIBM:/home/samba/成员# cd ../管理部/
root@SlackIBM:/home/samba/管理部# ls
sirmas01 sirmas02
root@SlackIBM:/home/samba/管理部# ls -lh
总计 0
drwxr-xr-x 2 root root 48 2007-07-13 14:54 sirmas01
drwxr-xr-x 2 root root 48 2007-07-13 14:54 sirmas02
root@SlackIBM:/home/samba/管理部# chown sirmas01:sirmas sirmas01
root@SlackIBM:/home/samba/管理部# chown sirmas02:sirmas sirmas02
root@SlackIBM:/home/samba/管理部# ls -lh
总计 0
drwxr-xr-x 2 sirmas01 sirmas 48 2007-07-13 14:54 sirmas01
drwxr-xr-x 2 sirmas02 sirmas 48 2007-07-13 14:54 sirmas02

6、修改Samba的配置文件;


[global]
workgroup = sirgrp
netbios name = sirserver
server string = linuxsir File Server
hosts allow = 192.168.1. 192.168.2. 127. #注:允许192.168.1 和192.168.1.2及127网段的用户可以访问;可以改成自己的IP网段,
security = share
printcap name = cups
printcap name = cups
guest account = nobody
guest ok = yes
[linuxsir] #注:共享名
comment = linuxsir samba server
path = /home/samba #在Linux系统中,共享文件夹所在位置;
create mask = 0664 #注:用户创建文件时的以限;
directory mask = 0775 #注:创建目录时的权限;
writeable = yes #注:可写;
valid users = @siradm,@sirmas,@siruser,nobody #注:用效用户和用户组,用户和用户组之间以,号隔开,用户组前面要加@符号,nobody是匿名用户;
browseable = yes #注:是否可以浏览,是;
guest ok = yes #注:匿名用户是否可以访问,是;


说明:#注是说明性的内容,使用本配置文件时,请删除;

7、添加Samba 用户;


root@SlackIBM:/home/samba# smbpasswd -a siradm
New SMB password:000000 注:在这里输入000000做为密码;
Retype new SMB password:000000 注:确认密码;
Added user siradm


用同样的办法来添加sirmas01 、sirmas02 、sirmas03、sirmas04 用户;修改Samba用户的密码用下面的办法:

smbpasswd 用户名


注意:smbpasswd 是用来设置Samba用户的密码的,并不是设置系统用户密码的。原理是sambapasswd 先读取/etc/passwd 上的用户,然后把这个用户添加到Samba用户配置文件中,在Slackware,是写到/etc/samba/private/smbpasswd,Samba用户的密码也是写在 /etc/samba/private/smbpasswd 并加密到 /etc/samba/private/secrets.tdb 。而系统用户的密码是存在/etc/shadow 文件中。好象这块有点有晕,对吗?这种方式创建的用户,用的是系统帐号,Samba的用户也是系统用户,但密码是分开的。
简单的说,我们要设置Samba密码,一定要先添加系统帐号,然后再用 smbpasswd 来添加并创建密码。当我们要修改Samba密码,也是要通过smbpasswd。
如果我们想修改系统用户的密码呢?要用passwd 工具;
8、启动Samba 文件服务器;
root@SlackIBM:/home/samba# pkill smbd
root@SlackIBM:/home/samba# pkill nmbd
root@SlackIBM:/home/samba# /usr/sbin/smbd
root@SlackIBM:/home/samba#/usr/sbin/nmbd
[b]
9、挂载Samba文件系统,并测试文件系统的可靠性;

9.1 访问Samba文件系统;
[/b]

root@SlackIBM:/home/samba# pkill smbd
root@SlackIBM:/home/samba# pkill nmbd
root@SlackIBM:/home/samba# /usr/sbin/smbd
root@SlackIBM:/home/samba#/usr/sbin/nmbd

9、挂载Samba文件系统,并测试文件系统的可靠性;

9.1 访问Samba文件系统;

如果是匿名访问,并不喜欢登录名,也能向共享可写目录中写入文件;在Windows下匿名访问文件系统的办法是:

\\ip或域名\共享名


因为我们在这里设置的共享名是 linuxsir ,而我写本文时所用的机器的IP地址是 192.168.1.19 ,于是在Windows中匿名访问,应该IE浏览器的地址栏中输入

\\192.168.1.19\linuxsir


注:在Linux系统中,如果你用GNOME桌面环境,应该用nautilus-connect-server,在终端下打命令就能调出“连接服务器”,服务器类型选Windows共享,文件夹输入linuxsir,用户名处输入用户名,无论你输入什么样的用户,都不会提示密码验证,这是GNOME文件管理器的一个BUG。为了解决这个问题,就得把匿名用户访问屏掉,创建一个公共帐号,比如sirall用户,密码也是sirall。当然这样无论是在Windows还是在Linux下,都无法匿名访问了。如果没有分配给帐号的公司成员,只能用sirall用户来访问。在KDE下可能不存在这样的问题,试试再说,我没有KDE,这事也不敢说。
禁止匿名用户访问,要修改smb.conf ,一般位于/etc/samba/smb.conf ;在前面的配置文件中,有下面的一行;

valid users = @siradm,@sirmas,@siruser,nobody
改为
valid users = @siradm,@sirmas,@siruser
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: