首页 > 服务器学习 > Linux > FTP简介和配置vsftpd的虚拟用户登录
2016
12-17

FTP简介和配置vsftpd的虚拟用户登录

FTP(File Transfer Protocol),中文称为“文件传输协议”,用户Internet上的控制文件的双向传输。

ftp连接的端口:

控制连接:TCP 21,用于发送FTP命令信息

数据连接:TCP 20(主动模式)或一个随机端口(被动模式),用于上传、下载数据。

主动模式:

服务器端主动向客户端发起连接,用户通过ftp输入用户名和密码通过服务器端的21端口验证登录以后,客户端接收到服务器端登录成功的信息以后会随机开放一个1024以上的端口,并向服务器端发送一个PORT命令,告诉服务器端客户端的接收端口(在此之前的交互都是通过21端口进行的),然后服务器会通过20端口主动连接客户端随机开放的端口进行数据传输。

ftp默认会采用主动模式进行连接,但是由于主动模式需要客户端开启一个随机端口,由于客户端的防火墙之类的配置各式各样,不能确定是否允许服务器端的主动访问,有可能会连接失败,所以显示使用中通常使用被动模式而不去使用主动模式。

被动模式

服务器端在指定范围内的某个随机端口被动等待客户端连接,用户通过ftp输入用户名和密码通过服务器端的21端口验证登录以后,客户端接收到服务器端登录成功的信息以后会向服务器端发送一个PASV命令,服务器端在接收到PASV命令(告诉服务器端将采用被动模式连接)以后会随机开放一个指定范围的端口并把该随机端口告诉客户端(在此之前的交互都是通过21端口进行的),客户端接收到该随机端口以后会主动通过该端口连接服务器端进行数据传输。

vsftp相关文件:

主配置文件:/etc/vsftpd/vsftpd.conf

用户控制列表文件:

/etc/vaftpd/ftpusers:黑名单,禁止登录的本地用户名,该文件在pam验证中生效,优先级高于user_list文件。

/etc/vaftpd/user_list:默认也是黑名单,但是可以通过修改配置文件使之变为白名单文件,即只有这个文件中的本地用户名可以登录。

vsftp相关用户:

匿名用户:用户名为anonymous或ftp,密码为空或者为一个任意的邮箱格式的字符串(服务器端只验证@符号)。登录目录为/var/ftp,不管有没有设置锁定用户家目录,匿名用户都是锁定在这个目录下的,就是说不允许返回上一级的目录。

本地用户:Linux系统的用户

虚拟用户:管理员自定义的模拟用户

配置虚拟用户登录的步骤

一、添加虚拟用户口令文件

在任意位置创建一个任意文件,文件内容是一行用户名一行密码的格式,如创建/etc/vsftpd/test,里面的内容为:

test

a123456

二、生成虚拟用户口令认证文件,把文本文档转变为认证的数据库文件

如果没有安装口令认证命令,需要安装该命令,yum -y install db4-utils

db_load -T -t hash -f /etc/vsftpd/test /etc/vsftpd/user.db

三、编辑vsftpd的PAM认证文件

编辑/etc/pam.d/vsftpd文件,注释掉其他的行(注释掉其他的行可以禁止本地用户登录,因为本地用户登录时的验证依赖这个文件的内容配置),加入下面的两行内容:

64位系统:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user

32位系统:

auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/user

account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/user

四、建立本地映射用户并设置宿主目录权限

useradd -d /wwwroot -s /sbin/nologin ftpuser

chmod 744 /wwwroot

五、修改配置文件

guest_enable=YES :开启虚拟用户

guest_username=ftpuser :ftp虚拟用户对应的本地映射用户

pam_service_name=vsftpd :指定PAM认证文件

此时,重启vsftpd服务就已经可以使用虚拟用户登录了,但是此时所有的虚拟用户主目录为local_root选项的值或者映射用户的家目录,不管chroot_local_user设置的YES或者NO,虚拟用户都不允许返回上级目录,权限使用的是匿名用户权限,不管anonymous_enable的值是YES或NO,匿名用户权限anon_upload_enable、anon_mkdir_write_enable、anon_other_write_enable、anon_umask对虚拟用户都生效。

六、调整虚拟用户权限,为每个虚拟用户建立自己的配置文件,单独定义各自的权限。

1、在主配置文件中添加:user_config_dir=/etc/vsftpd/ftp_user,指定保存虚拟用户配置文件的目录,这个目录需要手动创建。

2、在上面指定的目录中为每一个虚拟用户创建一个和用户名相同的配置文件。

vim /etc/vsftpd/ftp_user/test

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_root=/wwwroot/test :单独指定test虚拟用户的独立主目录

七、重启vsftpd服务

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。