开场白:

 
#***/ 在写这篇文章之前,我曾经想控制本地FTP用户帐户实现一下功能:

 

 

 
但是经过的长期思考和查找(几乎百度和谷歌相关的内容都没有放过)始终没有一个完整介绍如何让本地用户实现以上功能,包括西单图书大厦和百万庄图书大厦。大部分的文章只对本地用户的配置做了极为简单的介绍和配置,无法满足我以上的想法。但是在大量的实验中我只实现了以上的2、3条,1和4至今无法实现。也求助了网友,但大部分网友(不包括少数)都是两种想法,一种是无法完全实现,二是没有必要这样做。
       其实我的这个想法是在写了《 RHEL4- FTP服务(三)配置匿名用户访问VSFTP服务器 》产生的,因为匿名用户可以灵活的控制文件的上传、下载、删除、重命名等,如果说这个理由还不充足,也许大家听说或者使用过server-u,他不但可以同时拥有上面的功能,而且还能单独和分别灵活的配置上面的功能。所以给了我探索实现上面四个功能的动力,但至今未果。所以下面我要写的配置vsftpd本地用户只能实现以上四条中的2、3两条,至于其他两条不知道vsftpd无法实现这种功能还是我没有发现这个功能,如果广大的技术朋友能完全实现以上的四个功能或者能实现像server-u一样的灵活功能,还请赐教于我,在此感激涕零!
QQ及邮箱:306718122@qq.com   
/***

 

 

 
正文:

 
在上一篇《 RHEL4- FTP服务(三)配置匿名用户访问VSFTP服务器 》中讲述了如何控制匿名用户访问VSFTP服务。这一篇着重讲一讲如何使用本地用户对vsftp服务的访问控制。

在企业局域网当中经常用到FTP服务用于共享存储一些资料信息,匿名用户访问很方便的同时也把一些重要的公司文件公之于众。这样对公司的发展很不利!所以我们如果能实现具有权限的用户可以访问FTP服务,不具有权限的用户就不能访问FTP服务,更进一步说公司的每个员工只能访问存储属于自己的FTP资料,不能同时访问下载其他员工的FTP资料。下面我们就来探讨一下如何才能实现公司员工个性化的FTP服务。

在实现这个功能之前先让我们安装vsftp服务,具体的安装方法参见

 
然后先建立两个本地帐户,如下图所示:
 
然后为这两个用户建立登陆密码,如下图所示:
 

 

 

 
这样我们就可以有两个用于对比的用户,下面我们就来设置他们的ftp功能。

 

一、 允许本地用户使用vsftp服务:

 
首先我们先来说一说如何配置基本的本地用户登陆。在上一篇 《 RHEL4- FTP服务(三)配置匿名用户访问VSFTP服务器 》文章中我列出了默认安装vsftp服务后的默认配置文件,在这里我就不在重复列出,如果不知道的地方可以参考上一篇 《 RHEL4- FTP服务(三)配置匿名用户访问VSFTP服务器 》。在这个默认的配置文件中有一个配置语句‘ local_enable=YES ’不知道你注意到了没有,他和‘ anonymous_enable=YES ’的功能是类似的,只不过‘ anonymous_enable=YES ’是允许匿名帐户访问FTP服务器。而‘ local_enable=YES ’是允许本地帐户访问FTP服务器,如果你把这一项改为‘ local_enable=no ’那么本地用户就无法登陆使用FTP服务了。所以若是让本地用户使用FTP服务,最基本也要保证这一项为允许登陆也就是‘ local_enable=YES ’。最后在给你提个醒儿,启用这一项的同时最好把‘ anonymous_enable=YES ’改为‘ anonymous_enable=no ’,也就是不允许匿名用户登陆,如下图所示:

 
 
这样做也就是为了安全,不然怎么对得起‘vsftp(最安全的ftp服务)’这个名字。

 
二、禁止VSFTP用户在服务器端本地登陆:

 
既然是本地用户,那么他在使用vsftp的ftp功能的时候,一定可以在vsftp服务器本地登陆喽,那么如果我只想让他在使用ftp功能的时候可以登陆,而不能在本地服务器上登陆那该怎么办呢?有一个办法可以解决,那就是在创建本地用户的时候,制定一个参数。例如我要创建一个用户ftpuser1,且不能让他在本地服务器登陆。

 

  [root@localhost~]#useradd ftpuser1 -s /sbin/nologin

 

‘-s /sbin/nologin’的功能是禁止用户的登陆shell。

这样用户只能使用FTP服务,而不能在服务器本地登陆进入系统了。又增加了一层安全性。

 

三、 锁定vsftp用户的个人ftp目录:

 
好了既然本地用户可以FTP到vsftp服务器并可以使用vsftp服务,那么我们是不是到此就可以高枕无忧了呢!还不行,因为之启用这一项,虽然已经可以让本地用户使用FTP服务,但是本地用户登陆的FTP服务的同时还可以浏览vsftp服务器的其他文件和文件夹,包括系统文件。我想只要有一点系统使用经验的朋友肯定会想到这样是非常的不安全的。那么下面我就来实现一个功能来避免这种情况的发生,那就是让用户登陆到一个固定的目录文件夹中,不能浏览除了这个文件夹以外的其他文件夹。这一功能的实现只要在vsftp配置文件vsftpd.Conf中添加一个语句即可实现,如下图所示:

 
 
这样就可以把每个本地用户锁定到自家的目录中,就不会浏览到其他的文件夹了。

 

四、 禁止本地用户登陆FTP后删除和修改文件:

 
默认情况下用户登陆到FTP目录后可以做任何操作,如果你想要求用户登陆后不能上传、删除和修改文件,只能下载文件(这种功能在企业当中一般应用为发布通知文件和共享一些资料软件等等)只要你把vsftp配置文件vsftpd.Conf中的‘ wirte_enable=YES ’修改成‘ wirte_enable=no ’即可。如下图所示:
 
 
这样用户登陆ftp目录中就只能使用下载功能了,其他的都不能操作。

 

以上的四项都是为全局配置,即配置了vsftp服务的配置文件vsftpd.conf以后所有的用户功能和权限都是一样的。那么在企业当中不一定会让每个员工使用的权限和功能都是一样的,比如员工1只能有下载的权限,员工2只有上传和修改、删除的权限,老板既有上传又有下载、删除和修改的权限。这样全局设置显然有点速手无策,无法实现个性化。

我们来假设一下,如果要实现每个人的权限功能不一样,是不是可以给每个人设立一个属于自己的配置文件,这样就可以灵活实现不同用户不同权限的一个初衷。
====================================================
**************************************************************
====================================================
 
好,下面我就和大家来探讨一下如何实现给每个人单独建立一个属于自己的配置文件,用以实现不同用户不同权限的一个功能。

 
第一步:修改vsftpd.Conf配置文件——》

 
要实现给用户设置单独的权限、配置单独的配置文件,那就要指定存放用户个性配置文件的目录,‘user_config_dir’语句实现了这个功能,此语句的格式为:user_config_dir=存放配置文件的目录(这个目录需要自己指定现有的或者自己创建一个文件夹然后再指定)。下图是我在配置文件最后一行添加的语句(其实在配置文件的任何一个地方都可以添加但是一定要单独一行添加)

 
 
其中/etc/vsftpd/userconfig的意思是我在‘userconfig’这个文件夹中存放每个用户的单独配置文件。

 
第二步:创建存放用户配置文件的目录也可以叫文件夹——》

 
上一步既然我们指定了文件夹,但是实际系统中没有这个文件夹,这时候就需要我自己来创建,一般这个文件夹要建立在和vsftpd配置文件同一个目录下,以方便管理,如下图所示:

 
 
我们可以看到在/etc/vsftpd目录中已经创建了一个名字为‘userconfig’的文件夹。

 
其中userconfig是我自己命名的文件夹,感觉这个名字比较形象好记,如果你喜欢其他的名字可以自己起名字。

 
第三步:创建用于存放每个用户上传文件的目录——》

 
我们可把系统中任何一个文件夹作为用户的ftp登陆目录,但这样做一是不安全二是有点难以维护。也可以自己创建文件夹,但一定要记住他们的位置,因为在为用户建立个性配置文件的时候要使用配置语句指定这个目录。但是我建议你使用用户主目录(也就是创建用户以后自动在/home下以用户名字名命名的目录),默认位置是/home。

 
第四步:为每个用户创建自己的配置文件——》

 
然我们进入刚刚建立的用户存放用户配置文件的文件目录里,如下图所示:
 
第五步:为每个用户添加用以控制ftp的个性配置文件:

 
在这一步中,我们要分别为ftp1用户和ftp2用户实现不同的ftp功能权限,ftp1用户 只能下载。不能上传、删除、重命名。ftp2用户只能上传、删除、重命名。不能下载。

 
1、 打开ftp1用户的配置文件ftp1.conf,如下图所示:

 
 
然后在配置文件中添加这样两行语句,如下图:
 
 
其中第一行的意思是,指定ftp1用户的ftp登陆目录,也就是存放ftp1上传文件的地方,在第三步中已经建立好了。

 
第二行的意思是,限制ftp1用户的上传、删除、重命名权限。这样他就只能下载文件。

 
写完这两个语句保存文件并退出。

 
2、配置了ftp1用户的配置文件,然后我们再来配置ftp2用户的配置文件,用同样的方法打开ftp2.conf文件,在里面添加这样两个语句,如下图所示:

 
 
其中第一句我就不在重复的说了,和ftp1用户配置文件中的意义是一样的。第二句的意思是限制用户的下载权限,如果等号后面为yes,那就等同于同意这个用户下载。然后保存文件并退出。

 
第六步:以上五个骤已经配置完了ftp1和ftp2的个性配置文件,但是要让这些配置文件起作用,还要重启vsftp服务。如下图所示:
 
 
当显示为确定的时候说明已经重启成功,这时候你分别使用ftp1用户和ftp2用户登陆ftp服务,会有两种不同的效果,自己去试一试吧!

 
下一篇将为大家讲解 vsftp的高级应用—— 如何建立和配置vsftp使用虚拟用户,敬请期待!
 

—————————————————————————————————

特别声明:--

一、本文为原创,著作权及使用权为(作者笔名:闪电cto)本人所有。 ­

二、本文首发于51cto个人博客(http://xudeqiang.blog.51cto.com)。  ­

三、本文只供互联网上的读者分享,不供共享范畴,希知。 ­

四、未经许可严禁对本文作修改、节选、断章性质的处理。 ­

五、可转载,但必须注明原文章首发的出处网址,及文章作者,严禁复制。 ­

六、如若转摘用于杂志网络媒体新闻,必须通知作者得到允许后方可,需收稿费。­

七、作者联系信息:QQ:306718122   邮箱levinboy@foxmail.com

——————————————————————————————