linux 下vsftpd安装使用

开通端口 21,40000-40004
一、安装vsftp
#离线安装
1.官网下载rpm包
https://almalinux.pkgs.org/8/almalinux-appstream-x86_64/vsftpd-3.0.3-34.el8.x86_64.rpm.html
2.发送到目标服务器
3.执行语句:rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm

#在线安装
yum install -y vsftpd

上面方式选择其中一种:
#设置开机启动
systemctl enable vsftpd.service
#启动
systemctl start vsftpd.service
#停止
systemctl stop vsftpd.service
#查看状态
systemctl status vsftpd.service

二、配置vsftp
#打开配置文件
vim /etc/vsftpd/vsftpd.conf
#修改配置 12 行
anonymous_enable=NO
#修改配置 33 行
anon_mkdir_write_enable=YES
#修改配置48行
chown_uploads=YES
#修改配置72行
async_abor_enable=YES
#修改配置82行
ascii_upload_enable=YES
#修改配置83行
ascii_download_enable=YES
#修改配置86行
ftpd_banner=Welcome to blah FTP service.
#修改配置100行
chroot_local_user=YES
#添加下列内容到vsftpd.conf末尾
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=120
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES

三、建立用户文件
#创建编辑用户文件
vim /etc/vsftpd/virtusers
#第一行为用户名,第二行为密码,都是自定义的。不能使用root作为用户名
ftp
ftp

四、生成用户数据文件
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
#设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
chmod 600 /etc/vsftpd/virtusers.db

五、修改 /etc/pam.d/vsftpd 文件
# 修改前先备份
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vim /etc/pam.d/vsftpd
#先将配置文件中原有的 auth 及 account 的所有配置行均注释掉
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers


六、新建系统用户vsftpd,用户目录为/home/vsftpd
#用户登录终端设为/bin/false(即:使之不能登录系统)
useradd vsftpd -d /home/vsftpd -s /bin/false
chown -R vsftpd:vsftpd /home/vsftpd

#如果这个ftp用户vsftpd是用来管理网站目录的,执行以下(意思是加入到apache组),否则不执行这一条!(补充于20181111)
usermod -a -G apache vsftpd

七、建立虚拟用户个人配置文件
mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf
#这里建立虚拟用户username配置文件
touch ftp
#编辑username用户配置文件
vim ftp
#内容如下,其他用户类似
local_root=/ychyc/ftp #ftp上传文件存放位置
anon_root=/ychyc/ftp
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#建立username用户的根目录,如果根目录是自己设置的已有的文件夹,就不用创建了
mkdir -p /ychyc/ftp
#增加用户username的根目录所有者为之前创建的vsftpd
chown -R vsftpd:vsftpd /ychyc/ftp
#提升该文件夹的权限
chmod -R 777 /ychyc/ftp

八、防火墙设置
现在centos7 都是默认安装的firewall ,IPTable要另外安装,所以下面的IPtables设置方式请忽略。
IPtables 的设置方式:
vi /etc/sysconfig/iptables
#编辑iptables文件,添加如下内容,开启21端口
-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 40000:40010 -j ACCEPT
firewall 的设置方式:
firewall-cmd –zone=public –add-service=ftp –permanent
firewall-cmd –zone=public –add-port=21/tcp –permanent
firewall-cmd –zone=public –add-port=40000-40010/tcp –permanent
禁用firewall也可以,更彻底:
systemctl disable firewalld
@其他关于防火墙的命令
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld

九、关闭selinux,不关闭ftp工具应该可以连接,但是传输文件的时候,会发现文件上传和下载都会出现500、503 、200等报错
方式一:通过配置文件修改禁用
#打开SELINUX配置文件
#修改配置参数
#注释
SELINUX=enforcing
#增加
SELINUX=disabled
方式二:通过命令行禁用
setsebool -P ftpd_disable_trans 1
方式三:SELINUX不对vsftp不做任何限制
setsebool -P ftpd_connect_all_unreserved 1

十、重启vsftpd服务器
systemctl restart vsftpd.service


 

原理补充:
1、如果要增加用户数,那么在第三步中再增加一个用户,并且接着执行第四步,这个时候新增加的用户是能登录ftp的,
只不过这个时候还没有经过第七步虚拟用户的配置,根目录为第六步创建的/home/vsftpd文件夹。
2、第七步中虚拟用户个人配置文件中的local_root的文件夹可以换成别的,这个是这个用户的根目录。
但是要换的文件夹必须执行以下“chmod -R 775 新的文件夹路径”。


************配置文件**********************************
[root@ecs_208 html]# grep -v '^#' /etc/vsftpd/vsftpd.conf |cat
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=120
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES
-----------------------------------------------------------------------------
[root@ecs_208 html]# cat /etc/vsftpd/virtusers
ftp
ftp
---------------------------------------------------------------------------
[root@ecs_208 html]# cat /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
-----------------------------------------------------------------------------
[root@ecs_208 html]# cat /etc/vsftpd/vconf/ftp
local_root=/ychyc/ftp
anon_root=/ychyc/ftp
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

*************************************sftp部署******************************
创建sftp登录用户
[root@lnmp ~]# groupadd sftp
[root@lnmp ~]# useradd -g sftp -s /sbin/nologin -M sftp
[root@lnmp ~]# echo "sftplnmp" | passwd --stdin sftp //创建用户密码或者下面这种方法
[root@lnmp ~]# passwd sftp
Changing password for user sftp.
New password: sftplnmp
BAD PASSWORD: The password contains the user name in some form
Retype new password:
passwd: all authentication tokens updated successfully.
创建sftp上传路径及授权
[root@lnmp ~]# mkdir /sftp
[root@lnmp ~]# chown root.sftp /sftp
[root@lnmp ~]# chmod 777 /sftp
修改ssh配置文件更改sftp上传位置
[root@lnmp sftp]# grep -v '^#' /etc/ssh/sshd_config | cat
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp internal-sftp
Match User sftp
ChrootDirectory /sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

重启ssh服务
[root@lnmp sftp]# systemctl restart sshd

端口:22
账号:sftp
密码:sftplnmp

 

posted @   不再犯错  阅读(1887)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
历史上的今天:
2017-01-18 JS手风琴特效
2017-01-18 SEO优化
点击右上角即可分享
微信分享提示