Centos 7 install vsftpd

安装

1
yum install -y vsftpd

配置

1
vim /etc/vsftpd/vsftpd.conf

修改配置项

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 是否允许匿名访问 
anonymous_enable=NO 
# 是否限制所有用户不能切换ftp主目录
chroot_local_user=YES
# 使用限制列表
chroot_list_enable=YES 
# 在centos7默认没有chroot_list文件,新建一个即可
chroot_list_file=/etc/vsftpd/chroot_list 

allow_writeable_chroot=YES

注意事项

1
2
3
4
5
6
7
8
#
chroot_local_user=YES
# 下面两个是同时使用的
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list
# 限制列表位置,这个文件在centos7默认没有的,新建一个空文件

# 如果 chroot_local_user=YES ,则chroot_list文件中填写的就是允许切换目录的用户

启动 ftp

1
systemctl start vsftpd

开机自启动: chkconfig vsftpd on(报错就再执行一遍)

关闭防火墙或者开启防火墙端口

1
iptables -I INPUT -p tcp --dport 21 -j ACCEPT	// 防火墙 开启21端口

可选配置,修改默认21端口号,修改以下2处配置

  1. vi /etc/vsftpd/vsftpd.conf 在末尾加上下面的:
1
2
3
4
5
6
7
# 这个就是修改后的端口号
listen_port=1021
pasv_enable=YES
#这2个是开启主动模式协议端口范围,记得华为云安全组也要加上
pasv_min_port=40000
pasv_max_port=40003
pasv_promiscuous=YES
  1. vi /etc/services 找到下面2处,把21修改即可
1
2
ftp          21/tcp
ftp          21/tcp

新建ftp账号

1
2
3
4
5
6
7
# -d 是ftp指定目录, 
# -s 后面是不允许此用户登录服务器,只能在ftp模式下访问 
# dev 是用户名
useradd -d /home/ftp/dev -s /sbin/nologin dev

# 设置用户密码
passwd dev

(userdel ilee) // 删除 用户命令

赋权

1
2
3
4
# 修改目录所属用户组
chown -R dev.dev /home/ftp/dev
# 修改用户权限 可读可写可执行
chmod 777 /home/ftp/dev

设置ftp允许上传权限

1
2
3
4
# 
setsebool -P tftp_home_dir on

setsebool allow_ftpd_full_access on

重启下vsftpd

1
systemctl restart vsftpd

相关命令

1
2
3
yum install -y vsftpd	// 安装 vsftpd
cd /etc/vsftpd 		// 切换到 vsftpd 配置目录
vim vsftpd.config    // 打开配置文件 
1
2
3
4
5
6
7
anonymous_enable=NO

chroot_local_user=YES
#chroot_list_enable=YES 
#chroot_list_file=/etc/vsftpd/chroot_list(这个文件在centos7默认没有的,新建一个)

allow_writeable_chroot=YES
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
systemctl start vsftpd	// 重启ftp
chkconfig vsftpd on		// 开机自启动

iptables -I INPUT -p tcp --dport 21 -j ACCEPT	// 防火墙 开启21端口

useradd -d /home/www/dev.rangolee.top -s /sbin/nologin ilee	// 创建用户 ilee 并制定 home 目录 并且 不允许登录服务器

passwd ilee	// 设置密码

chown -R ilee.ilee /home/www/dev.rangolee.top	// 改归属

chmod 777 /home/www/dev.rangolee.top		// 改权限

setsebool -P tftp_home_dir on
setsebool allow_ftpd_full_access on

systemctl restart vsftpd

ps -ef | grep ftp

cat  /etc/passwd
cat  /etc/passwd-

vim /etc/vsftpd/vsftpd.conf
cd /etc/vsftpd/
mkdir userconfig
cd userconfig/
vi ilee


systemctl stop vsftpd
systemctl restart vsftpd

vim /etc/selinux/config 

selinux=1

reboot		// 需要重启才能

systemctl restart vsftpd

setsebool allow_ftpd_full_access on
setsebool -P tftp_home_dir on

setenforce 0
sestatus -v

systemctl restart vsftpd
vim /etc/vsftpd/vsftpd.conf

systemctl restart vsftpd

getsebool -a | grep ftp

问题&答案

1
2
3
FTP 550 Failed to change directory 

Entering Passive mode  // 不使用 Passive mode 登录 ftp 可解决