CentOS 8.x 安装 FTP

一、安装FTP

检查 Linux 上是否安装了 ftp

# rpm -qa |grep vsftpd

使用 yum 安装 ftp 服务

# yum install vsftpd

查看 ftp 服务状态

# service vsftpd status

默认情况下,刚安装是未启动的

操作命令(启动 / 停止 / 重启)

# service vsftpd start
# service vsftpd stop
# service vsftpd restart

查看当前开发的端口(默认 21)

# netstat -nlpt

二、FTP 管理

1、安装目录文件

默认安装路径:cd /etc/vsftpd/

文件列表:

  • ftpusers
  • user_list
  • vsftpd.conf
  • vsftpd_conf_migrate.sh

ftpusers –> 该文件配置的用户,都是不允许通过FTP登录的。

user_list –> vsftpd.conf 文件中的 userlist_deby 默认 YES,如果 vsftpd.conf 文件中的 userlist_deby = NO,则仅允许在 user_list 中的用户使用ftp 登陆,如果 userlist_deby = YES,则永远不允许在 user_list 中的用户,甚至都不能输入密码。

注意:默认情况下 vsftpd 还检查 ftpusers 文件里有哪些用户被拒绝。

vsftpd.conf –> 默认 ftp 配置文件,其中有很详细的注释来帮助我们理解配置的作用。

2、创建FTP用户并指定分组和主目录
# useradd -d /data/ftp -s /sbin/nologin -g ftp -G root ftpadmin

命令解析:

  • useradd 添加用户 ftpadmin
  • -d 指定用户根目录为 /data/ftp
  • -s 指定shell脚本为 /sbin/nologin,表示不允许 shell 登录
  • -g 创建分组 ftp
  • -G 指定 root 分组
3、创建有问题可以删除重新创建
# userdel -r ftpadmin
4、设定密码
# passwd ftpadmin
5、设置访问权限
# chown ftpadmin /data/ftp
6、配置 vsftpd
# vi /etc/vsftpd/vsftpd.conf

将如下

#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list

改为

chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
7、编辑文件 chroot_list
# vi /etc/vsftpd/chroot_list

内容为 ftp 用户名,每个用户占一行,如:

ftpadmin
otherUser >>> 可以忽略
8、超时设置(可以不设置使用默认的)

idle_session_timeout=2400 #空闲连接超时时间40分钟
data_connection_timeout=120 #数据传输超时时间2分钟

9、用户连接选项(可以不设置,使用默认的)

max_clients=100 #可接受的最大client数目
max_per_ip=10 #每个ip的最大client数目

10、重新启动vsftpd
# service vsftpd restart

PS:如果发现远程登录不了,建议使用手机热点连接再尝试连接,因为我就遇到这个情况,这可能是由于网络或路由器配置问题,具体解决方法自行 Baidu 吧。

11、修改 FTP 的根目录

根据需求修改

# usermod -d /updatefile ftpadmin
# chown ftpadmin /updatefile
# service vsftpd restart

三、错误处理

1、连接报 530 解决
# sudo setsebool -P ftp_home_dir on

或

# sudo setsebool -P tftp_home_dir on

PS:CentOS7 开始用 tftp_home_dir 来代替了 ftp_home_dir

但是如上的命令并不能解决我的 530,于是又是 Baidu ~

# ll /etc/pam.d/

检查该文件夹内是否存在 vsftpd 与 vsftpd.bak,如果只有 vsftpd 就查看该文件信息

# cat /etc/pam.d/vsftpd
  • %PAM-1.0
  • session optional pam_keyinit.so force revoke
  • auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers
  • onerr=succeed
  • auth required pam_shells.so
  • auth include password-auth
  • account include password-auth
  • session required pam_loginuid.so
  • session include password-auth

将 auth required pam_shells.so 修改成 auth required pam_nologin.so

# service vsftpd restart

重启后解决了我的 530 问题

2、连接报 500 解决
# vim /etc/vsftpd/vsftpd.conf

在配置文件最末端添加:allow_writeable_chroot=YES

# service vsftpd restart

重启后解决了我的 500 问题

  • 打赏
请选择打赏方式
  • 微信
  • 支付宝
滚动至顶部