上季我们介绍了samba服务器的安装,常用配置文件,还有匿名登陆的samba服务器
今天我们主要学习基于用户名的访问控制
其实samba的访问控制参数都不是很多,只要是你灵活运用,把samba自带的访问控制,防火墙,文件权限等等结合使用,就能搭建功能强大的samba服务器
上季已经说了share级别的安全,今天我们就讲user级别了,把我们下面的任务规划一下
1.一个公司要求一个公共的交换文件服务器,都可以访问并写入,但是不可以删除和修改其他用户的文件
2、技术部需要一个文件服务器,用于存放常用的软件工具,所有人都可以访问,但是只有技术部的人可以写入
主要就是上面两个功能来开展,我们来分析下
一个samba服务器,要实现上面两个功能
用我们以前学过的知识,你们觉得可以有哪些方案?
用samba服务器实现上面的功能,有两种规划方案
使用域和user级别都可以,但是测试域比较麻烦,还要活动目录,所以我们就使用user级别
有人可能会问为什么不可以使用share级别,如果全局使用share,局部需要用户登陆的话,登陆框是灰色的,不能输入用户名,这个是不是samba服务器设置的一个bug,我也说不清楚,反正我们就尽量不这样设计吧
如果使用user模式,应该需要两个目录,一个是交换目录,一个是技术部的目录,交换目录都可以写入,所以权限要777,但是都可以写入的话,就可以删除别人的文件,所以我们要加个冒险位,限制只有root和文件所有者才能删除,第一个题目完成了
第二个题目就更简单了,所有人可以访问,但是只有技术部的可以写,我们只需要在局部设置write list = @jishubu 就可以了,如果想要更安全的话,还可以设置目录权限是775,让目录属于技术部组
下面我们开始测试吧,建立两个目录,一个是exchange,一个是jishubu,都建立在/下吧,然后改变他们的权限
然后添加用户test1 和添加jishubu组,把test1加入到技术部组,最后把/jishubu的所属组改成技术部
我们还要建立一个公共的用户,提供所有用户登陆samba服务器使用
useradd smbtest
到这里,我们的工作就算完成了,下面我们就开始配置我们的服务器
请大家打开samba服务器的主配置文件
vim /etc/samba/smb.conf
第一步打开selinux,如果你没有打开的话
复制29行的语句,然后在终端里面执行
我们架设服务器的环境是,selinux强制
system-config-selinux修改bool值的
RHEL4的selinux只保护了40多个进程,RHEL5的selinux保护达到了200个进程吧,具体数值记不得了,selinux都是安装了的
setenforce 1,然后getenforce 查看
如果是enforcing 处于强制状态就算打开了
selinux有三种状态
ENFORCING,就是处于保护状态,selinux会禁止危险的动作并记录日志
permissive 是只记录日志
disabled 关闭
用setup设置吧
好了,我们继续,然后设置目录的上下文
复制39行的内容,修改要共享目录的上下文,只复制冒号后面的部分
chcon -t samba_share_t /exchange/
chcon -t samba_share_t /jishubu/
chcon -t samba_share_t /jishubu/
改变上下文都使用使用的chcon -t
设置selinux都是setsebool -P
selinux的相关知识,大家看看吧
RHCE考试,要求一般selinux是处于强制状态的
workgroup 设置工作组
server string 服务器描述
username map 用户名映射,默认没有,等会我们会讲
interfaces 如果服务器有多块网卡,可以设置你想开放的网卡,一般不管,默认都开放
hosts allow 设置可以访问服务器的网段,注释表示不限制
使用user安全模式security = user
其他的全局配置都不管了,直接跳到最后,开始定义共享目录
exchange的定义
[exchange] 共享目录名字
comment 目录描述
path 共享目录的路径
public 所有用户可以访问
writeable 所有用户可以写入
printable 不是打印机
write list 在这个位置是没有意义的
public和valid users 不能同时使用,这样public没效果
如果writables 和write list同时使用,应该是以writable 起作用,但是最好,避免歧义,我们删除write list字段哈~
这样第一个目录就OK了
下面写第二个目录的定义
在samba服务器里表示一个组可以使用@组名 也可以使用 +组名
一个简单samba服务器配置就算完成了,保存退出配置文件
下面我们建立samba用户
建立samba用户的前提是,/etc/passwd文件里要有这个用户名,我们才可以建立成samba用户
我们刚才建立了smbtest和test1两个用户
现在我们把他们建立成samba用户
建立用户的时候要使用 -a 参数,如果改samba用户的密码,就不用加-a参数了
下面我们重新启动服务器,开始测试
开始测试
我们先使用smbtest用户
三个目录都可以看见,smbtest是用户的家目录,这个是自己私有的空间
大家测试下可以进入jishubu和exchange,然后分别往这两个目录写入文件
测试成功,下面换test1用户,看能不能在技术部写入文件
删除刚才的用户登陆缓存
然后使用test1登陆
jishubu目录可以写入
然后我们去删除smbtest用户的文件试试
测试成功
用户写入的文件权限是744
################Michael分割线###################
我们再讲两个小的应用
1、控制用户写入的文件权限为750,也就只有用户自己可以RWX,用户的所有组可以读
2、使用虚拟用户名,提高samba服务器的安全性
分析第一个问题,大家觉得怎么实现?
第一个问题使用
directory mask = 750
create mask = 750
set GID
directory mask = 750
create mask = 750
set GID
组合就可以实现
第二个问题就是刚才你们看见的username map = /etc/samba/smbuser 参数
我们来实现
提示一下:
directory mask 和directory mode 功能都一样,当然 create 也是
directory mask 和directory mode 功能都一样,当然 create 也是
directory mask 是控制用户创建的目录权限
create mask 是控制用户创建的文件权限
这个参数只在用户是图形界面有效
刚才是1777 现在是3777 添加一个set gid
重启下服务
好了,我们测试下
发现了吗,这个文件的权限和刚才的不一样了,完全是按照我们要求来的
这样就只有自己和所有组可以读取了,其他用户没有任何权限
建立目录也一样
我们测试完成第二个功能
加入这样一行参数
username map = ,然后保存退出
vim /etc/samba/smbusers
左边是真正的用户名字,右边是虚拟的名字,你想怎么写,就怎么写,最好是系统里面没有的用户名字
好了,测试
密码是对应ID的密码
####################Michael分割线#######################
本文转自redking51CTO博客,原文链接:http://blog.51cto.com/redking/141325
,如需转载请自行联系原作者