一、原理简介

二、安装配置

三、三种用户的验证

一、简介

FTP即文件传输合同(FileTransferProtocol),完成各主机的文件共享功能,基于顾客端-服务器的合同,工作在应用层嵌入式linux 培训,tcp的21号端口。

ftp有两个联接

命令联接:控制联接,21/tcp。顾客端与服务端的tcp21端口构建联接linux软件,发送命令

数据联接:顾客端与服务端数据的传送。

数据联接又有两种模式

linux ftp 用户_linux下添加ftp用户_用户反馈

linux ftp 用户_用户反馈_linux下添加ftp用户

主动(Port)模式:顾客端从一个随机端口N(N>1024)联接服务端的命令端口21。之后顾客端打开端口N+1,并发送FTP命令”portN+1″到FTP服务器。接着服务器会从它自己的数据端口20联接到顾客端的端口(N+1)。简单的说也就是在数据联接的过程中服务器端主动连接客户端。

被动(Passive)模式:因为服务器端主动连接客户端的主动模式引起顾客端不安全性,所以出现被动模式。顾客端从一个随机端口N(N>1024)联接服务端的命令端口21,服务器端返回一个报文,其中富含须要顾客端来联接的数据端口信息,也就是服务器端打开的一个随机端口(此端口通常小于5000),之后顾客端会用端口(N+1)去联接服务端的随机端口。由于防火墙的联接追踪功能,致使这几个联接为相关联的联接,所以服务器端的防火墙对顾客端来联接的随机端口(小于5000)不会有影响。简单的说也就是在数据联接的过程中,是服务器端被动的让顾客端来联接,又由于防火墙的联接追踪机制促使其端口联接才能进行。

ftp有两种数据传输方法

ASCII:通常为文本,数据库等。

二补码:通常为mp3,jpeg等格式文件。

ftp有较多的服务器端程序和顾客端程序,以下:

服务器端程序:

wu-ftpd:WashingtonUniversity-ftpd

vsftpd:VerySecureftpDaemon

proftpd:

pureftpd

Filezilla

Serv-U:windows下的

顾客端程序:

CLI:

ftp

lftp

GUI:

gftpd

FlashFXP

Cuteftp

Filezilla

linux下添加ftp用户_linux ftp 用户_用户反馈

也因为vsftpd主打的是安全性、完全开源及免费、速率高、支持IPv6、虚拟用户功能等等其他FTP服务端软件不具备的功能。此处使用vsftpd来搭建ftp服务。

二、vsftpd安装配置(centos7)

用户反馈_linux下添加ftp用户_linux ftp 用户

服务器端和顾客端都为192.168.1.222

安装,可直接yum安装

yuminstallvsftpd–y

清空防火墙规则或关掉防火墙,关掉selinux。

安装完成后可以看见/etc/vsftpd下的几个文件,

用户严禁登录列表

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

主配置文件

/etc/vsftpd/vsftpd.conf

linux下添加ftp用户_linux ftp 用户_用户反馈

三、三种用户的验证(匿名用户、普通用户、虚拟用户)

1.匿名用户模式

在vsftpd.conf文件中,找到参数如下除去注释:

anonymous_enable=YES

容许匿名访问模式。(默认)

anon_umask=022

匿名用户上传文件的umask值。

anon_upload_enable=YES

容许匿名用户上传文件

anon_mkdir_write_enable=YES

容许匿名用户创建目录

anon_other_write_enable=YES

linux ftp 用户_linux下添加ftp用户_用户反馈

容许匿名用户更改目录名或删掉目录(此信息没有,需自动加)

可借助顾客端工具xftp或则ftp来检测是否有效linux ftp 用户,ftp命令用于使用FTP服务,格式为:”ftp[参数][FTP主机]”,yuminstallftp–y安装即可。

安装完以后,操作可如右图:

linux下添加ftp用户_linux ftp 用户_用户反馈

linux ftp 用户_用户反馈_linux下添加ftp用户

此处我在登陆ftp之前创建的anon目录,发觉匿名用户创建不了目录。因为此目录的用户与其属组都为root,所以没有权限,可使用setfacl给个匿名用户权限

linux下添加ftp用户_用户反馈_linux ftp 用户

再来登陆进去可见创建成功,重命名和文件的删掉、上传也没问题(此处没有截图。还有可在ftp模式下使用help来查看可使用的命令)。

用户反馈_linux ftp 用户_linux下添加ftp用户

2.本地用户的验证

首先关掉之前的匿名用户相关配置,添加下述参数,没有的自动添加即可,重启服务。

anonymous_enable=NO

严禁匿名访问模式。

local_enable=YES

容许本地用户模式。

write_enable=YES

设置可写入权限。

local_umask=022

本地用户模式创建文件的umask值。

userlist_deny=YES

参数值为YES即严禁名单中的用户(需自动添加)

userlist_enable=YES

容许”严禁登录名单”,名单文件为ftpusers与user_list。

因为本地用户可随便步入系统各个目录,所以需添加参数。

新建用户hot

useraddhot并设置密码

linux下添加ftp用户_用户反馈_linux ftp 用户

之后登入验证,可见到创建目录,重命名删掉等操作。

linux下添加ftp用户_linux ftp 用户_用户反馈

chroot_local_user=YES囚禁本地用户于其家目录中,这样用户只能在其家目录下。

添加此参数,登陆会出现500OOPS:vsftpd:refusingtorunwithwritablerootinsidechroot()

Loginfailed.的错误,问题是由于用户的根目录可写,而且使用了chroot限制,而这在近来的更新里是不被容许的。要修补这个错误,可以用命令chmoda-w/home/hot消除用户根目录的写权限即可。

并且有个问题设置此参数以后,本地用户难以上传文件及创建文件和删掉文件,(selinux和防火墙都关掉了)。最好使用下边参数!!

allow_writeable_chroot=YES

容许束缚的FTP根目录可写而不拒绝用户登录恳求。

至于userlist_enable和userlist_deny这两个参数理解其意便知如何用。里面配置文件图已给出说明。

3.虚拟用户的验证

虚拟用户模式的账号密码都不是真实系统中存在的linux ftp 用户,所以只要配置妥当虚拟用户模式会比本地用户模式愈发安全,而且Vsftpd服务配置虚拟用户模式的操作步骤相对复杂一些,具体流程如下:

第1步:构建虚拟FTP用户数据库文件。

第2步:创建FTP根目录及虚拟用户映射的系统用户。

第3步:构建支持虚拟用户的PAM认证文件。

第4步:在vsftpd.conf文件中添加支持配置。

第5步:为虚拟用户设置不同的权限。

第6步:重启vsftpd服务,验证实验疗效。

PAM(PluggableAuthenticationModules)是一种认证机制,通过一些动态链接库和统一的API将系统提供的服务与认证方法分开,可以依照需求灵活的调整服务程序的不同认证方法。可以毋须对应用程序做任何的更改,易用性很强,PAM采取了分层设计的思想——应用程序层、应用插口层、鉴别模块层,程序层调用插口层,插口调用模块层。

其目录/etc/pam.d:针对不同服务而定义好的pam配置文件。

比如vsftpd程序都会在其主配置文件(“/etc/vsftpd/vsftpd.conf”)中写入下边的参数:

pam_service_name=vsftpd

表示登录FTP服务器时是按照/etc/pam.d/vsftpd的文件内容进行安全认证的。

第1步:构建虚拟FTP用户数据库文件。

#cd/etc/vsftpd/

创建用于生成FTP用户数据库的原始账号和密码文件:

#vimvuser.list//双数行为账号,单数行为密码。帐号不是真实存在于系统中的,是依靠于寄主帐号nobody

用户反馈_linux下添加ftp用户_linux ftp 用户

使用db_load命令用HASH算法生成FTP用户数据库文件vuser.db:

#db_load-T-thash-fvuser.listvuser.db

查看数据库文件的类型:

#filevuser.db

FTP用户数据库内容很敏感,所以权限给小一些:

#chmod600vuser.db

删掉原始的账号和密码文件:

#rm-fvuser.list

第2步:创建FTP根目录及虚拟用户映射的系统用户。

创建用户virtual并设置为不容许登入系统并定义该用户的家目录:

#useradd-d/var/ftproot-s/sbin/nologinvirtualftp

为保证其他用户可以访问,给与rwxr-xr-x权限:

#chmod-Rf755/var/ftproot/

第3步:完善支持虚拟用户的PAM认证文件:

#vim/etc/pam.d/vsftpd.vu

//参数db用于指向刚才生成的vuser.db文件,但不要写后缀。

authrequiredpam_userdb.sodb=/etc/vsftpd/vuser

accountrequiredpam_userdb.sodb=/etc/vsftpd/vuser

linux下添加ftp用户_linux ftp 用户_用户反馈

第4步:在vsftpd.conf文件中添加支持配置。

可以关掉匿名用户模式

参数

作用

anonymous_enable=NO

严禁匿名开放模式。

local_enable=YES

容许本地用户模式。

guest_enable=YES

开启虚拟用户模式。

guest_username=virtualftp

指定虚拟用户账号。

pam_service_name=vsftpd.vu

指定pam文件。

allow_writeable_chroot=YES

容许束缚的FTP根目录可写而不拒绝用户登录恳求。

第5步:为虚拟用户设置不同的权限

权限默认是不能上传、创建、修改文件,可配置用户独立的用户权限。

指定用户独立的权限配置文件储存的目录:

#vim/etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir

创建用户独立的权限配置文件储存的目录:

#mkdir/etc/vsftpd/vusers_dir/

在该目录下创建空白的hdd的配置文件,指定hdd用户的具体权限:

linux下添加ftp用户_linux ftp 用户_用户反馈

第6步:重启vsftpd服务,验证实验疗效。

如右图可以见到创建目录删掉目录上传下载等功能都没有问题。也可以直接在windows下打开文件窗口输入ftp://IP操作其功能。

以上。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复