1.安装FTP
$ yum -y install vsftpd
$ cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
#每个用户独立目录请创建多个用户(如ftp1,ftp2,ftp3,ftp4,用户根目录文件夹名称最好和用户名相同方便区分)组指定fpt
$ useradd -d 用户根目录 -m 用户名 -g ftp
$ passwd 用户名 #连输2次密码
检查/etc/pam.d/vsftpd 注释掉 auth required pam_shells.so
$ vim /etc/pam.d/vsftpd
#auth required pam_shells.so
2.配置(vim /etc/vsftpd/vsftpd.conf,以下为我用的配置,删除原内容,直接替换就好了,写该配置时版本vsftpd-3.0.2-27.el7.x86_64,使用rpm -qa | grep vsftpd查看版本)
anonymous_enable=NO
local_enable=YES
#local_root=/home/ftp #无该行则不同的用户名称进来路径在用户下的的根目录
write_enable=YES
download_enable=NO
local_umask=022
dirmessage_enable=YES
#所有用户不允许访问local_root的上级目录
chroot_list_enable=NO
chroot_local_user=YES
xferlog_enable=YES
xferlog_file=/home/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
#默认情况下,vsftpd以单例模式监听IPv4 socket端口。该命令不能和listen_ipv6同时使用
listen=YES
listen_ipv6=NO
#在vsftpd.user_list中的用户且不在ftpusers的用户允许访问
userlist_enable=YES
userlist_deny=NO
idle_session_timeout=300
pam_service_name=vsftpd
tcp_wrappers=YES
#设置每个与FTP服务器的连接,是否以不同的进程表现出来
setproctitle_enable=YES
allow_writeable_chroot=YES
#被动模式(无连接数量限制)
pasv_enable=YES
pasv_min_port=4000
pasv_max_port=5000
max_clients=0
max_per_ip=0
3.(vim /etc/vsftpd/user_list)可访问的用户列表,以下为举例:多用户多目录,注释掉local_root属性后才有多目录,注释掉所有其他用户,添加 用户名 并保存
ftp1
ftp2
ftp3
ftp4
4.相关命令(配置重启生效)
设置开机启动:systemctl enable vsftpd.service
启动ftp服务:service vsftpd start
查看ftp服务状态:service vsftpd status
重启ftp服务:service vsftpd restart
关闭ftp服务:service vsftpd stop
5.其他设置(一般不用设置,除非特殊权限设置)
其他权限可以通过特殊方式配置
首先执行
mkdir -p /etc/vsftpd/vsftpd_user_conf
然后执行
vim /etc/vsftpd/vsftpd_user_conf/ftpuser
(注意后面的 ftpuser )对应自己要限制权限的账户,我限制的 是 ftpuser 账户对应的命令就变成
vim /etc/vsftpd/vsftpd_user_conf/ftpuser
在里面 写入
cmds_denied=DELE
这句话的意思是 禁止使用 删除命令。
然后保存退出 即可 wq
重新打开配置文件
vim /etc/vsftpd/vsftpd.conf
在尾部 写一句
user_config_dir=/etc/vsftpd/vsftpd_user_conf
service vsftpd restart #重启
6,连接备注(Java下设置以下ftp连接属性,不然容易失败)
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode(); // 重要!重要!重要!每次上传文件前都要调用一下重新分配Ip,不然会导致运行不定时长后,上传文件假死问题
连接配置
host: IP地址
port: 21
user: 用户名
password: 密码(Linux创建用户后修改的那个)