Vsftpd服务搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vsftpd服务搭建相关的知识,希望对你有一定的参考价值。

Vsftpd服务搭建
本实验采用yum安装vsfptd指令如下
yum install vsftpd* -y
匿名用户创建、上传、下载、删除、重命名,在匿名用户下添加如下三句配置,然后重启vsftpd服务,再给予pub目录757权限,属主改成ftp即可
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
技术分享图片
技术分享图片

系统用户登录ftp实现创建、上传、下载、删除、重命名等操作
创建jfedu01密码123456,登录界面如下
技术分享图片

虚拟用户登录ftp实现创建、上传、下载、删除、重命名等操作
1、 安装Vsftpd虚拟用户需用到的软件及认证模块yum install pam libdb -y
2、创建虚拟用户列表ftpusers.txt,奇数行为用户名,偶数行为密码
技术分享图片

3、 生成虚拟用户数据库认证文件,设置权限700
db_load -T -t hash -f ftpusers.txt vsftpd_login.db
chmod 700 vsftpd_login.db
4、 配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
5、 创建系统用户,该用户不需要登录和密码,用于映射虚拟用户
useradd -s /sbin/nologin ftpuser
6、 修改vsftpd.conf主配文件末尾增加以下几行
#config virtual user FTP
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
7、 创建虚拟用户目录及用户及配置文件
mkdir vsftpd_user_conf目录及虚拟用户jf01、jf02、jf03
技术分享图片

8、 创建虚拟用户各自虚拟目录,并修改属主
mkdir -p /home/ftpuser/jf{01,02} ; chown -R ftpuser.ftpuser /home/ftpuser/

9、 重启vsftpd服务然后用虚拟用户登录
技术分享图片

把虚拟用户限制在各自家目录下
修改vsftpd.conf配置文件锁定家目录,并增加allow_writeable_chroot=YES否则连接会500错误
技术分享图片

一部分用户限制家目录一部分用户可以自由穿梭

修改vsftpd.conf配置文件并创建chroot_list把jfedu01添加进去然后ftp登陆会发现jfedu02被限制在家目录下jfedu01可以自由穿梭
技术分享图片
技术分享图片

注释
很多情况下,我们希望限制ftp用户只能在其主目录下(root dir)下活动,不允许他们跳出主目录之外浏览服务器上的其他目录,这时候我就需要使用到chroot_local_user,chroot_list_enable,chroot_list_file这三个选项了。以下是对三个配置项的解释: 本文原文出处: http://blog.csdn.net/bluishglc/article/details/42398811 严禁任何形式的转载,否则将委托CSDN官方维护权益!
chroot_local_user #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
chroot_list_enable #是否启动限制用户的名单 YES为启用 NO禁用(包括注释掉也为禁用)
chroot_list_file=/etc/vsftpd/chroot_list #是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!
对于chroot_local_user与chroot_list_enable的组合效果,可以参考下表:
chroot_local_user=YES chroot_local_user=NO
chroot_list_enable=YES 1.所有用户都被限制在其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制 1.所有用户都不被限制其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制
chroot_list_enable=NO 1.所有用户都被限制在其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 1.所有用户都不被限制其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户
让我们举个例子:
假设有ftp1, ftp2两个ftp用户, 计划让ftp1用户锁定在主目录下,不允许切换到其他目录, 但是允许ftp2用户自由切换目录,则可以分如下两种方式实现:
方式一:
令:
chroot_local_user=YES
chroot_list_enable=YES
/etc/vsftpd/chroot_list名单列表为:
ftp2
解释:chroot_local_user=YES将所有用户限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=YES,即全体用户都被“限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“不会被限制在主目录下”的用户。
方式二:
令:
chroot_local_user=NO
chroot_list_enable=YES
/etc/vsftpd/chroot_list名单列表为:
ftp1
解释:chroot_local_user=NO则所有用户不被限定在主目录内,chroot_list_enable=YES表示要启用chroot_list_file, 因为chroot_local_user=NO,即全体用户都“不被限定在主目录内”,所以总是作为“例外列表”的chroot_list_file这时列出的是那些“会被限制在主目录下”的用户。
其他情况:
对于chroot_local_user和chroot_list_enable的组合还有这样两种情况:
chroot_local_user=YES
chroot_list_enable=NO

chroot_local_user=NO
chroot_list_enable=NO
当chroot_list_enable=NO时,就不再启用chroot_list_file,此时就是单纯的把全部用户限定或不限定在主目录下了!
补充:
关于chroot_local_user的设置,通常我们倾向于:全局禁止跳出主目录,使用chroot_list添加例外!即:使用Case 1的设置!
匿名用户默认的root是/var/ftp

以上是关于Vsftpd服务搭建的主要内容,如果未能解决你的问题,请参考以下文章

39 openEuler搭建FTP服务器-安装管理vsftpd服务

Vsftpd服务搭建

搭建 FTP 文件服务vsftpd

Vsftpd服务搭建

CentOS 7.x 搭建vsftpd服务

CentOS搭建Vsftpd服务器