RHEL6.3配置FTP服务器(3) 虚拟用户下载和上传

简介:

除了匿名用户和本地用户之外,我们还可以设置虚拟用户来访问FTP。所谓虚拟用户是指存放于独立数据库文件中的FTP用户账号,可以将他们映射到某个不能登录的系统用户账号上,以进一步增强FTP服务器的安全性。


(1)创建虚拟用户数据库文件
vsftpd服务的虚拟用户数据库是使用Berkeley DB格式的数据库文件,建立数据库文件需要用到db_load命令工具,db_load工具是由db4-utils软件包提供的,所以首先我们需要确认系统中已经安装好了db4-utils组件。
081137848.jpg

然后我们先建立一个文本格式的用户名/密码列表文件,用于存放虚拟用户账号。文件名可以随意,文件一般是保存在/etc/vsftpd目录中。
# vim /etc/vsftpd/logins.txt
081352743.jpg

文件中的奇数行表示用户名,偶数行为上一行用户所对用的密码。如上图就表示创建了2个虚拟用户:harry和natasha,密码都是123.
有了文本格式的用户名/密码列表文件以后,还要以此文件为数据源通过db_load工具创建出Berkeley DB格式的数据库文件。
081440936.jpg

上图中所执行的db_load命令是一种固定用法,其中的“-T”选项表示允许非Berkeley DB的应用程序使用从文本格式转换的DB数据库文件,“-t hash”选项指定读取数据文件的基本方法,“-f”选项用于指定数据的源文件。
最后为了提高虚拟用户账号的安全性,最好将这两个存放虚拟用户账号的文件的权限都设为600,即只有root用户具有读取和写入权限。

081531627.jpg


(2)创建虚拟用户的映射账号
vsftpd服务对虚拟用户其实是采用了映射的控制方式,把所有的虚拟用户账号都对应到了同一个系统用户账号上,并将这个系统用户的主目录作为所有虚拟用户登录后共用的FTP根目录。
所以我们还必须要创建一个系统用户账号,当然这个用户是无需设置密码并且不允许登录系统。
081629848.jpg

在useradd命令中,利用-d选项指定了用户的主目录,利用-s选项禁止用户登录。然后再修改目录权限,使得其他用户可以访问。


 

(3)创建PAM认证文件
对虚拟用户的身份认证是通过PAM机制来实现的,PAM是Linux系统中的一个独立API(应用程序接口),它提供了各种验证模块以供其它程序调用。当这些程序需要进行用户身份验证的操作时,就可以直接调用PAM的相应模块,而无需由自己来提供验证功能。所以PAM在Linux系统中提供了统一的身份验证机制。
PAM的认证文件都统一存放在/etc/pam.d/目录中,下面我们在这个目录中创建一个FTP虚拟用户的认证文件:
# vim /etc/pam.d/vsftpd.vu
081822602.jpg

在文件中,通过“db=/etc/vaftpd/logins”参数指定了要使用的虚拟用户数据库文件的位置,注意这里不需要写“.db”的扩展名。


 

(4)修改vsftpd配置,添加虚拟用户支持
在vsftpd.conf配置文件中需要添加相应配置项,以支持虚拟用户。
081945273.jpg

上图中上半部分的设置项是原有的设置,下半部分(红框部分)的设置项是我们这里所要添加的。

  •  guest_enable=YES ,表示启用虚拟用户映射功能;

  •  guest_username=virtual ,表示指定所映射的系统用户名称;

  •  pam_service_name=vsftpd.vu ,表示指定PAM认证文件。

  •  user_config_dir=/etc/vsftpd/vuser ,表示虚拟用户配置文件的存放目录。关于虚拟用户配置文件将在下面介绍。

另外,其它原有的一些设置项目也必须要正确设置:

  •  local_enable=YES ,由于需要映射本地用户,所以此项必须启用;

  •  anon_umask=022 ,在vsftpd服务中,虚拟用户被默认作为匿名用户进行处理以降低权限,因此对应的配置项通常以anon_开头。

  •  write_enable=YES ,表示允许写入。


     

(5)创建虚拟用户配置文件
经过前面的设置之后,将vsftpd服务重启,便可以使用虚拟用户访问FTP了,但此时所有的虚拟用户都只具有下载的权限而无法上传。当然,如果在vsftpd.conf配置文件中添加配置项“aono_upload_enable=YES”和“anon_mkdir_write_enable=YES”,便可以使虚拟用户具备上传权限,但这样一来,所有的虚拟用户又都可以上传了。所以,为了对虚拟用户进行精确控制,实现不同用户拥有不同的权限,我们还需要为每个虚拟用户建立独立的配置文件,在vsftpd.conf配置文件中我们已经指定了虚拟用户配置文件的存放位置/etc/vsftpd/vuser。
下面我们首先创建虚拟用户配置文件存放目录,然后为harry用户创建配置文件,文件名即是用户名:

082316906.jpg

然后设置允许harry用户上传,设置方法同匿名用户:

082402644.jpg

然后我们再为natasha也创建一个配置文件,如果natasha只允许下载,那么只需要有一个配置文件即可,文件内容保持空白。
root@localhost ~ ] # touch natasha
重启服务:
# service vsftpd restart
这样虚拟用户便全部设置好了,harry用户具有下载和上传的权限,而natasha只能下载不能上传。 

 最后需要注意的是,如果在vsftpd.conf配置文件中设置了“userlist_enable=YES   userlist_deny=NO”,即只允许userlist列表中的用户访问FTP,那么还需要将virtual用户加入到/etc/vsftpd/user_list列表中去。

 

 

 本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1219381

 



相关文章
|
2月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之dataworks连接FTP服务器失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
2月前
|
缓存 网络协议 数据可视化
WinSCP下载安装并实现远程SSH本地服务器上传文件
WinSCP下载安装并实现远程SSH本地服务器上传文件
|
2月前
File和FTP和HTTP软件配置
File和FTP和HTTP软件配置
|
3天前
|
数据安全/隐私保护 Windows
使用Serv-U FTP服务器共享文件,实现无公网IP环境下远程访问-2
使用Serv-U FTP服务器共享文件,实现无公网IP环境下远程访问
|
3天前
|
存储 网络协议 文件存储
使用Serv-U FTP服务器共享文件,实现无公网IP环境下远程访问-1
使用Serv-U FTP服务器共享文件,实现无公网IP环境下远程访问
|
4天前
|
弹性计算 关系型数据库 MySQL
|
4天前
|
Shell 数据安全/隐私保护 Docker
如何使用Docker安装FTP服务器?
【4月更文挑战第25天】
8 0
如何使用Docker安装FTP服务器?
|
9天前
|
安全 Linux 网络安全
记录_centos搭建ftp服务器
记录_centos搭建ftp服务器
9 0
|
28天前
|
Ubuntu 网络安全 数据安全/隐私保护
ubuntu篇-配置FTP服务,本机和docker安装
通过以上步骤,你可以在Ubuntu上配置FTP服务,无论是本机安装还是Docker内安装,都可以提供FTP文件传输服务。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
22 1
|
2月前
|
存储 网络协议 安全
如何搭建外网可访问的Serv-U FTP服务器,轻松远程共享文件!
如何搭建外网可访问的Serv-U FTP服务器,轻松远程共享文件!