Centos7 搭建FTP服务详细过程


转载: https://blog.csdn.net/sinat_30802291/article/details/81706152

号外:系统安装好后,可以直接使用sftp链接设备,传输文件等,不用安装vsftp。

说明

  1. 默认安装的centos系统,安装了vsftp服务,但是没有配置vsftp服务,这里就是配置
  2. 默认安装centos的时候,不要最小化安装,最小化没有安装ftp,需要选择ftp
  3. 安装下面步骤是可以正常使用ftp服务的

1. 第一步:(检查是否)安装vsftpd和添加防火墙

1.为了方便后续操作,现将用户切换到root用户 su -

1.1 查看是否已经安装vsftpd

2.查看是否已经安装vsftpd

  1. 方法一:
    [root@localhost ~]# rpm -q vsftpd
    vsftpd-3.0.2-22.el7.x86_64

  2. 方法二:
    [root@localhost ~]# vsftpd -v
    vsftpd: version 3.0.2

3.没有就yum安装vsftpd
[root@localhost ~]# yum -y install vsftpd

4.安装完成后,查看位置
[root@localhost ~]# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz

1.2 启动VSFTP服务

5.直接启动VSFTP服务

systemctl start vsftpd.service

[root@localhost ~]# systemctl start vsftpd.service
[root@localhost ~]#

1.3 查看是否启动成功

[root@localhost ~]# netstat -npal|grep vsftpd
tcp6 0 0 :::21 ::😗 LISTEN 13332/vsftpd

可以看到服务已经启动,端口为21,pid为13332

1.4 关闭SELinux限制,添加防火墙白名单

6.设置关闭SELinux对ftp的限制

getsebool -a | grep ftp
setsebool -P ftpd_full_access on
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload

[root@localhost ~]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off

[root@localhost ~]# setsebool -P ftpd_full_access on

7.将ftp加入防火墙白名单

firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload

查看防火墙状态:firewall-cmd --list-all

2. 第二步:配置修改

2.1 修改配置文件

cd /etc/vsftpd/
vim vsftpd.conf

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vsftpd.conf

2.1.1 修改vsftpd.conf

anonymous_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

不允许匿名访问(不登录默认访问某目录/var/ftp)
anonymous_enable=NO

允许ascii文件上传和下载
ascii_upload_enable=YES
ascii_download_enable=YES

将用户限制在为其配置的主目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

2.1.2 末尾添加如下配置

guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vuser_conf
allow_writeable_chroot=YES

#设置启用虚拟用户功能
guest_enable=YES

#制定宿主用户名(我们后续需要为我们的系统增加该用户)
guest_username=ftpuser

#制定虚拟用户配置文件放置文件夹(需要我们自己建立)
user_config_dir=/etc/vsftpd/vuser_conf

#允许写
allow_writeable_chroot=YES

3. 第三步:创建宿主用户

3.1. 创建宿主主文件夹

cd /home
mkdir vsftpd
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
passwd ftpuser

chown -R ftpuser.root /home/vsftpd

1.创建用户 ftpuser 指定 /home/vsftpd 目录
cd /home
mkdir vsftpd

useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser

注释: -s /sbin/nologin ftpuser 表示不允许该用户通过命令行方式登录

2.设置用户 ftpuser 的密码
passwd ftpuser
尽量简单的密码,如123456

3.把 /home/vsftpd 的所有权给ftpuser.root
chown -R ftpuser.root /home/vsftpd

3.2 创建虚拟用户信息文件

cd /etc/vsftpd/
touch vuser_passwd
vim vuser_passwd

vsftp目录下
cd /etc/vsftpd/

4.创建用户信息文件
touch vuser_passwd
vim vuser_passwd

5.编辑如下内容,创建虚拟账户信息,奇数行为用户名,偶数行为密码

ftp-user1
123456
ftp-user2
123456

6.生成虚拟用户数据文件

db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db

在当前文件夹下生成一个vuser_passwd.db文件

7.编辑pam认证文件

vim /etc/pam.d/vsftpd

将其他都注释掉,添加下面两行;

注:db=/etc/vsftpd/vuser_passwd 中的vuser_passwd 是你生成的虚拟用户的db文件,这里不要加扩展名。

系统为32位:

auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account
required pam_userdb.so db=/etc/vsftpd/vuser_passwd

系统为64位:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

查看系统位数

getconf LONG_BIT

8.为虚拟账户创建访问根目录,要在宿主用户下创建目录

cd /home/vsftpd/
mkdir ftp-user1
mkdir ftp-user2
chmod 777 ftp-user1
chmod 777 ftp-user2
cd /etc/vsftpd/
mkdir vuser_conf
cd vuser_conf
touch ftp-user1 ftp-user2

cd /home/vsftpd/
mkdir ftp-user1
mkdir ftp-user2

下面是目录结构

/home/vsftpd

    ├──ftp-user1

    │         └── files

    └──ftp-user2

                └──files

修改权限

chmod 777 ftp-user1
chmod 777 ftp-user2

9.创建虚拟用户配置目录

cd /etc/vsftpd/

#创建上述配置文件中配置的虚拟用户文件夹,一定要对应

mkdir vuser_conf
cd vuser_conf

#创建虚拟用户配置文件,文件名称要与虚拟用户名称相同

#这里我们配置两个虚拟用户就创建两个配置文件

touch ftp-user1 ftp-user2

#编辑两个文件,加入以下信息(注意加粗部分要替换为你虚拟账户要访问的根目录名称)

local_root=/home/vsftpd/ftp-user1
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

10.创建chroot_list

cd /etc/vsftpd

#创建使当前配置的虚拟用户允许访问

[root@localhost vsftpd]# touch chroot_list

[root@localhost vsftpd]# vim chroot_list

#写入虚拟用户名

ftp-user1
ftp-user2

4. 第四步:重启VSFTP服务并ftp验证

   systemctl restart vsftpd.service

可以在windows中访问测试,或者使用FileZilla连接

5. 错误问题汇总:

1、解决报错 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

添加配置

allow_writeable_chroot=YES # 如果启用了限定用户在其主目录下需要添加这个配置。

2、登录报错530,日志显示

pam_unix(vsftpd:auth): check pass; user unknown

检查一下/etc/pam.d/vsftpd文件配置,一般是pam认证文件配置错误。

3、开始ftp可用,后来不可用,别急 等会又能用 ……不知道什么鬼
报错
ftp> get x.txt
200 PORT command successful. Consider using PASV.
425 Failed to establish connection.
ftp>
重启等会再尝试即可

6. 安装完成后,将其加入自启动项

systemctl enable vsftpd.service

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值