经常需要把 window 下的文件传到 Linux 中, 搭建一个简单的 ftp 服务器, 简单使用,性价比高, 棒!
安装 vdftpd -----:
yum -y install vsftpd
新建登录 ftp 服务器的账号:
新建用户: useradd ftp1
修改用户密码: passwd 123
开启 vsftpd 服务: systemctl start vsftpd.service
关闭 vsftpd 服务: systemctl stop vsftpd.service
设置 SELinux ------
SELinux 设置:
getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
查询出上面的信息后执行以下的两个修改:
setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on
修改防火墙 ------
防火墙设置: (需要好好了解一下 firewall)
centos7 中 用firewall 替代了 iptables (吐槽一下感觉不同版本的 Linux 都会有或大或小的改变,对于刚入门的(例如 LZ)真的会栽跟头,很打击信心啊)
检查防火墙状态
firewall-cmd --stat
临时开放ftp服务
firewall-cmd --add-service=ftp
永久开放ftp服务
firewall-cmd --add-service=ftp --permanent
关闭ftp服务
firewall-cmd --remove-service=ftp --permanent
firewall 开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent #添加80端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent #添加3306端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent #添加3306端口
查询端口开放状态
firewall-cmd --query-port=80/tcp --zone=public #查询80端口是否开启
查看防火墙状态
systemctl status firewalld.service
启动防火墙
systemctl start firewalld.service
关闭防火墙
systemctl stop firewalld.service
chroot设置 -----:
登录 ftp 时出现错误: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
在 /etc/vsftpd/vsftpd.conf 文件中, 增加(取消注释)
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
修改用户主目录使其没有写权限 /home/ftp1 :
chmod a-w /home/ftp1
但是出现客户端不能上传文件的错误
修改用户主目录权限 :
chmod -R 755 /home/ftp1
在 /etc/vsftpd/vsftpd.conf 增加
allow_writeable_chroot=YES
本地测试 ftp 登录连接:
ftp localhost
或 ftp 192.168.191.3 (自己的 ip 地址)
--------------------》 FileZilla , ftp localhost 都连接成功