0
点赞
收藏
分享

微信扫一扫

vsftp配置

本文使用vsftp来部署ftp服务,要求如下:

1、使用ftp用户登录指定的家目录,该ftp用户禁止本地登录,禁止访问非家目录外其他目录;

2、不同用户登录不同家目录;

具体操作配置如下:

1、安装vsftp的rpm包

# yum install vsftpd.x86_64

2、创建ftp用户

允许登录ftp服务、禁止登录本地、指定家目录

mkdir -p /home/ftp ##先有ftp目录

###创建ftpuser1、指定家目录为/home/ftp/ftpuser1,禁止登录本地;
useradd -d /home/ftp/ftpuser1 -s /sbin/nologin ftpuser1
echo ftpuser1 | passwd --stdin ftpuser1

###创建smbuser1、指定家目录为/home/ftp/smbuser1,禁止登录本地;
useradd -d /home/ftp/smbuser1 -s /sbin/nologin smbuser1
echo smbuser1 | passwd --stdin smbuser1

vsftp配置_家目录

3、修改配置

首先查看默认配置文件的有效行,然后有针对性的修改;

#grep -Ev '^$|#' /etc/vsftpd/vsftpd.conf 

vsftp配置_家目录_02

#####目标vsftp配置文件: grep -Ev '^$|#' /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=10923
pasv_max_port=10958
use_localtime=YES

需要调整的操作

##禁止匿名用户登录
anonymous_enable=NO    ##把原来的YES改为NO

##打开注释
chroot_list_enable=YES  #打开注释
chroot_list_file=/etc/vsftpd/chroot_list   ##可指定

##打开ipv4监听
listen=YES         ##打开监听

##删除或注释掉无用的配置项
connect_from_port_20=YES  ##删除或注释
listen_ipv6=YES   ##删除或注释

##增加其他附加功能,可不用加 !!!
pasv_enable=YES
pasv_min_port=10923
pasv_max_port=10958
use_localtime=YES

前后比对:

vsftp配置_vsftpd_03

 动作       原配置                       目标配置
#修改 anonymous_enable=YES          anonymous_enable=NO
#原样 local_enable=YES              local_enable=YES
#原样 write_enable=YES              write_enable=YES
#原样 local_umask=022               local_umask=022
#原样 dirmessage_enable=YES         dirmessage_enable=YES
#原样 xferlog_enable=YES            xferlog_enable=YES
#原样 xferlog_std_format=YES        xferlog_std_format=YES
#新增                               chroot_list_enable=YES
#新增                               chroot_list_file=/etc/vsftpd/chroot_list
#修改 listen=YES                    listen=NO
#原样 pam_service_name=vsftpd       pam_service_name=vsftpd
#原样 userlist_enable=YES           userlist_enable=YES
#原样 tcp_wrappers=YES              tcp_wrappers=YES
#删除 listen_ipv6=YES
#删除 connect_from_port_20=YES
#新增                               pasv_enable=YES
#新增                               pasv_min_port=10923
#新增                               pasv_max_port=10958
#新增                               use_localtime=YES

4、ftp用户设置

添加用户到配置中指定的文件,允许以下用户登录ftp。
#cat /etc/vsftpd/chroot_list
ftpuser1
smbuser1

5、保存配置并重启服务

/bin/systemctl restart vsftpd.service
systemctl status vsftpd.service

vsftp配置_家目录_04

6、验证

使用浏览器登录

vsftp配置_vsftpd_05

vsftp配置_vsftp配置_06

命令行下ftp客户端测试

vsftp配置_vsftpd_07

5、继续配置,解决无法登录问题

问题现象描述:

##添加FTP新用户解释器为/sbin/nologin,无法登陆FTP服务,提示:
530 Login incorrect.
Login failed.

vsftp配置_vsftp配置_08

原因:vsftpd默认会检查用户的shell,如果用户的shell在/etc/shells没有记录,则无法登陆ftp

vsftp配置_vsftpd_09

解决办法:在/etc/shells文件里面添加用户的shell(解释器)

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
/sbin/nologin   ###添加

补充:/etc/shells文件的作用

1.系统某些服务在运行过程中,回去检查用户使用的shells,而这些shell查询就是借助/etc/shells这个文件。

2.修改该文件不会影响用户登陆服务器主机的权限,该文件提供给解释器给系统的某些服务判断一个用户是否是有效用户,例如创建的ftpuser1用户解释器为/sbin/nologin,本地系统的/etc/shells文件里面没有添加/sbin/nologin,所以我创建的ftpuser1用户登陆不了ftp服务,后面将/sbin/nologin添加进/etc/shells文件,则问题解决。

vsftp配置_vsftpd_10

6、继续配置,解决权限问题

登录提示:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

vsftp配置_vsftpd_11

vsftp配置_vsftpd_12



举报

相关推荐

0 条评论