Samba文件服务器用户权限模型设计与实现
2008-11-28 08:57
615 查看
[分享]Samba 文件服务器用户复杂权限模型设计和实现
在这个文件系统上,我们要让所有用户都有统一的路径入口;在Windows文件浏览器中,我们要通过\\IP或域名\共享目录名查看,而在Linux的Gnome文件浏览器中查看的方式是 smb://域名或ip地址/共享目录名。而我们让所有用户都通过唯一的地址进入共享文件系统。
我们先看个图,以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 创建目录
5.2 创建用户和用户组;
5.3 对相关目录归属和权限;
6、修改Samba的配置文件;
说明:#注是说明性的内容,使用本配置文件时,请删除;
7、添加Samba 用户;
用同样的办法来添加sirmas01 、sirmas02 、sirmas03、sirmas04 用户;修改Samba用户的密码用下面的办法:
注意: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 文件服务器;
9、挂载Samba文件系统,并测试文件系统的可靠性;
9.1 访问Samba文件系统;[/b]
9、挂载Samba文件系统,并测试文件系统的可靠性;
9.1 访问Samba文件系统;
如果是匿名访问,并不喜欢登录名,也能向共享可写目录中写入文件;在Windows下匿名访问文件系统的办法是:
因为我们在这里设置的共享名是 linuxsir ,而我写本文时所用的机器的IP地址是 192.168.1.19 ,于是在Windows中匿名访问,应该IE浏览器的地址栏中输入
注:在Linux系统中,如果你用GNOME桌面环境,应该用nautilus-connect-server,在终端下打命令就能调出“连接服务器”,服务器类型选Windows共享,文件夹输入linuxsir,用户名处输入用户名,无论你输入什么样的用户,都不会提示密码验证,这是GNOME文件管理器的一个BUG。为了解决这个问题,就得把匿名用户访问屏掉,创建一个公共帐号,比如sirall用户,密码也是sirall。当然这样无论是在Windows还是在Linux下,都无法匿名访问了。如果没有分配给帐号的公司成员,只能用sirall用户来访问。在KDE下可能不存在这样的问题,试试再说,我没有KDE,这事也不敢说。
禁止匿名用户访问,要修改smb.conf ,一般位于/etc/samba/smb.conf ;在前面的配置文件中,有下面的一行;
在这个文件系统上,我们要让所有用户都有统一的路径入口;在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
相关文章推荐
- Samba 文件服务器用户复杂权限模型设计和实现
- Samba 文件服务器用户复杂权限模型设计和实现
- Samba 文件服务器用户复杂权限模型设计和实现
- Samba 文件服务器用户复杂权限模型设计和实现 v0.1b
- Samba 文件服务器用户复杂权限模型设计和实现 v0.1b
- 看这篇文章,不需要别的了----Samba 文件服务器用户复杂权限模型设计和实现
- 文件服务器 之 Samba 文件服务器用户复杂权限模型设计和实现
- ASP.NET系统用户权限设计与实现
- 实现业务系统中的用户权限管理--设计篇
- J2EE中用户上传文件到服务器功能实现
- ASP.NET系统用户权限设计与实现
- 实现业务系统中的用户权限管理--设计篇
- ASP.NET系统用户权限设计与实现(转)
- samba使linux普通用户具有创建文件夹、读写文件的权限
- ASP.NET系统用户权限在.NET中的设计与实现
- Web用户的身份验证及WebApi权限验证流程的设计和实现
- 服务器上用户访问文件权限设置
- 实现业务系统中的用户权限管理--设计篇
- 服务器上用户访问文件权限设置
- ASP.NET系统用户权限设计与实现