sbit粘滞位权限在Samba服务器中的应用分析

2014-12-02 04:25曲广平
山东电力高等专科学校学报 2014年5期
关键词:密码客户端服务器

李 鹏 曲广平

1.烟台职业学院电子工程系 山东 烟台 264670

2.烟台职业学院信息工程系 山东 烟台 264670

文件共享是局域网中经常用到的一项功能,如何设置并使用文件共享在技术上并不复杂,其中的问题主要集中在权限设置方面。比如教师要设置一个共享文件夹以便于学生上交作业,但又不希望学生能够随便去改动甚至删除其他同学的作业,即需要每个学生只可以改动或删除自己上传的文件,但不能去改动或删除别人的文件。这个权限要求看似简单,但在利用Windows系统搭建的文件服务器中很难实现,因为无论是共享权限还是NTFS安全权限都没有提供这种权限功能。在Linux系统中则有一种称为粘滞位(sticky bit,简称sbit)的特殊权限,结合Samba服务器就可以实现上面这个要求。

本文以上述要求为例,分析了如何在Samba服务器中应用sbit粘滞位权限,系统环境采用RedHat Enterprise Linux 6(以下简称 RHEL6)系统。

1 sbit粘滞位权限介绍

1.1 关于sbit粘滞位权限

Linux系统中的基本权限只有读、写、执行三种,分别用权限字符r、w、x表示,结合着文件所有者、文件所属组和其他用户来为文件或目录分配权限,如图1所示。

图1 Linux系统中的权限结构

例如,查看目录/home/test的权限:

[root@localhost~]# ll-d/home/test

drwxrwxrwx.2 root root 4096 12 月 3 16:56/home/test

可以看到所有用户都对/home/test目录具有“读、写、执行(rwx)”权限。

Linux系统规定,用户只要对某个目录具备“写入(w)”权限,那么便可以修改或删除该目录中的任何文件,而不论这个文件的权限是什么。

例如,查看/home/test目录中file1文件的权限:

[root@localhost~]# ll/home/test/file1

-rw-r--r--.1 root root 0 12 月 3 17:01/home/test/file1

这个文件看似只有root用户才具有 “写入(w)”权限,但因为所有用户都从/home/test目录获得了“写入(w)”权限,因而其实所有人都可以来修改或删除file1文件。

在这种情况下就可以为/home/test目录设置sbit粘滞位权限。当目录被设置了sbit权限之后,即便用户对目录有“写入(w)”权限,也不能删除该目录中其他用户的文件数据,而是只有该文件的所有者和root用户才有权将其删除。设置了sbit权限之后,正好可以保持一种动态的平衡:允许各用户在目录中任意写入、删除数据,但是禁止随意删除其他用户的数据。

1.2 设置sbit粘滞位权限

sbit作为一种特殊权限,只能针对目录设置,对于文件无效。

sbit权限的权限字符是 “t”,而且它只能针对“其他用户(other)”设置,使用chmod命令设置目录权限时,“o+t”、“o-t”权限模式可分别用于添加、移除sbit权限。

例如,为/home/test目录设置sbit权限:

[root@localhost~]# chmod o+t/home/test

[root@localhost~]# ll-d/home/test

drwxrwxrwt.2 root root 4096 12 月 3 17:01/home/test

可以看到,在设置了sbit权限之后,“其他用户(other)”的“执行(x)”权限位被“sbit(t)”给占据了。至于原先的执行权限标记“x”,Linux系统是这样规定的:如果本来在该位上有“x”执行权限,则sbit权限显示为小写字母“t”;否则,显示为大写字母“T”。

sbit权限对应的八进制数字为1,也可以通过数字的方式来添加或去除sbit权限:

[root@localhost~]# chmod 1777/home/test #添加sbit权限

[root@localhost~]# chmod 0777/home/test #去除sbit权限

这样,在设置了sbit权限之后,在/home/test目录中除了所有者和root用户之外,其他用户就不能再随意改动或删除别人的文件了。

2 在Samba服务器中设置sbit粘滞位权限

Samba是Linux系统中提供的文件服务器,它既可以支持Linux客户端也可以支持Windows客户端访问,而且Samba服务是免费的,其安全性、易用性和稳定性等各方面都能够得到保证,因而是Linux系统中应用最为广泛的服务之一。

下面通过Samba服务将/share目录设成共享,同时结合sbit粘滞位权限以满足本文开头所提出的案例要求。

2.1 配置Samba服务

(1)安装并启动Samba服务

RHEL6系统默认并没有安装Samba服务,但在RHEL6的系统光盘中提供了Samba服务的安装包,下面将RHEL6系统光盘设置为yum源,并采用yum方式安装Samba。如果需要安装最新版本的Samba,也可以从网上下载相应的源码安装包进行安装。

挂载RHEL6系统光盘,并设置为yum源:

[root@localhost ~]# mkdir /mnt/cdrom#创建挂载点目录

[root@localhost ~]#mount/dev/cdrom /mnt/cdrom #挂载光盘

[root@localhost~]# vim/etc/yum.repos.d/dvd.repo #生成yum源定义文件

[dvd]

name=rhel6 dvd

baseurl=file:///mnt/cdrom/

enabled=1

gpgcheck=0

yum源定义好之后,接下来利用yum方式安装Samba服务:

[root@localhost~]# yum install samba

Samba对应的进程服务名为smb,下面启动smb并将之设为永久启动:

[root@localhost~]# service smb start

[root@localhost~]# chkconfig smb on

(2)配置 Samba服务

Samba服务的主配置文件为“/etc/samba/smb.conf”,利用vi编辑器打开该文件之后,首先在【global】全局项中设置:

security=user

“security”项用于设置安全级别,设为“user”表示禁止匿名访问,这样当客户端在访问Samba服务器时,要由本地服务器对其进行身份验证。

smb.conf文件中默认还有【homes】项和【printers】项,分别用于共享用户的家目录和打印机,如果不需要这些默认的共享,可以在相关设置行前加上“#”将它们注释掉。

(3)将/share 目录设为共享

在smb.conf文件中添加如下内容,将/share目录设为共享:

对设置项目的说明:

·[share]:共享名。

·commnet:对共享的描述信息。

·path:共享目录的路径,必须为绝对路径。

·public:是否允许所有用户访问。

·writable:是否允许写入。

用户在访问Samba共享目录时的最终权限,是共享目录的系统权限与Samba权限的最小交集。这里设置“writable=yes”,即将Samba权限完全开放,如此只需设置系统权限便是用户访问共享时的最终权限。

设置完成后,将文件保存退出。

(4)添加 Samba用户

Samba用户即客户端在访问Samba服务器时所要输入的用户名和密码,Samba用户必须依赖于系统用户,要创建一个Samba用户,首先必须保证要有相应的系统用户存在,但是Samba用户的密码可以与系统用户的密码不相同。

下面先分别创建两个名为zhangsan和lisi的系统用户:

[root@localhost~]# useradd zhangsan

[root@localhost~]# useradd lisi

然后再将他们设置为Samba用户:

[root@localhost~]# smbpasswd-a zhangsan

[root@localhost~]# smbpasswd-a lisi

在设置Samba用户时,需要为用户设置Samba密码,这里强烈建议不要再用passwd命令为用户设置系统用户密码,以防止利用该用户登录系统。也就是说,这些用户只能用来访问Samba共享,而无法登录系统,这样以增强系统的安全性。

至此,Samba服务便配置好了,最后重启smb服务,使配置生效:

[root@localhost~]# service smb restart

为了使客户端能够顺利访问Samba服务器,还需要将服务器中的防火墙以及SELinux安全机制全部关闭:

[root@localhost~]# service iptables stop # 关闭防火墙

[root@localhost~]#setenforce 0#关闭SELinux

2.2设置权限

首先创建共享目录/share:

[root@localhost~]# mkdir/share

然后设置所有人都对/share目录具有“读、写、执行(rwx)”权限:

[root@localhost~]# chmod 777/share

[root@localhost~]# ll-d/share

drwxrwxrwx.2 root root 4096 12 月 3 18:37/share

最后为/share目录设置sbit粘滞位权限:

[root@localhost~]# chmod o+t/share

[root@localhost~]# ll-d/share

drwxrwxrwt.2rootroot409612 月 318:37/share

3 测试及总结

下面在一台Windows客户端上进行访问测试。

在客户端可以通过UNC路径的形式访问Samba服务器,本实验环境中的Samba服务器IP地址为192.168.137.10,因而在客户端的【开始运行】中输入“\192.168.137.10share”,在随后出现的身份验证对话框中输入用户名“zhangsan”以及相应的密码,可以成功打开share共享目录,并在目录中创建测试文件zhangsan.txt。

在客户端将打开的share共享目录关闭,并执行“net use*/del”命令删除以 zhangsan用户的身份与Samab服务器之间建立好的共享连接。然后再次输入UNC路径,并以用户“lisi”的身份访问共享。lisi同样可以在共享目录中上传文件,但却无法删除zhangsan之前上传的文件zhangsan.txt。

测试成功。

在生产环境中,sbit粘滞位权限主要是针对权限比较开放的公共目录设置,其用途就是防止随意删除他人的文档,当需要为用户提供一个开放目录而又不希望造成管理混乱时,通过为目录设置sbit权限便可以解决问题,像Linux系统中的“/tmp”和“/var/tmp”目录默认便都设置了sbit权限。熟练掌握并灵活运用sbit权限,可以为网络运维与管理工作带来很大的便利。

[1]余洪春.构建高可用 Linux服务器[M].北京:机械工业出版社,2011.

[2]董良,宁方明.Linux系统管理[M].北京:人民邮电出版社,2012.

猜你喜欢
密码客户端服务器
密码里的爱
通信控制服务器(CCS)维护终端的设计与实现
如何看待传统媒体新闻客户端的“断舍离”?
密码抗倭立奇功
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
中国服务器市场份额出炉
得形忘意的服务器标准
密码藏在何处
计算机网络安全服务器入侵与防御