一、安装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 问题
- 打赏
- 微信
- 支付宝