P.S.这段时间一直在忙,自己私下里学的一些东西没时间放到CSDN上,这次就一下子放上来吧。
目录
第二步:修改配置文件/etc/vsftpd/vsftpd.conf中的......
第四步:开放FTP对应的端口(关闭防火墙也是可以的,但我们一般都不这么做)
附录:本文最终的/etc/vsftpd/vsftpd.conf配置文件
环境说明:
1、CentOS7虚拟机
2、vsftpd版本:vsftpd-3.0.2-25.el7.x86_64
搭建FTP示例(匿名用户)
第一步:安装FTP服务端
可详见:https://blog.csdn.net/justry_deng/article/details/87966318。
第二步:修改配置文件/etc/vsftpd/vsftpd.conf中的anonymous_enable值
为YES(即允许匿名用户登录),并将被注释了的
anon_upload_enable=YES和anon_mkdir_write_enable=YES解
开注释,使其生效(这样匿名用户就可以下载上传文件),其余的配置
不变:
注:匿名用户如果想要通过FTP创建文件夹,除了anonymous_enble=YES和anon_mkdir_write_enable=YES外,还
需要匿名用户对上层目录有写的权利。如:匿名用户想在/var/ftp/anonymous_user_dir目录下创建文件夹,那么必
须保证匿名用户对/var/ftp/anonymous_user_dir目录有写的权利(属于权限块儿了),可根据实际情况设置,如果不
清楚的话,可以通过chmod指令将权利开放到777最大,如:
这样一来,匿名用户登录FTP时在/var/ftp/anonymous_user_dir目录下就能够创建文件夹了。
注:与创建目录类似,如果要下载文件,除了FTP的配置外,还需要在系统上配置匿名用户对文件至少有读的权利才行。
注:匿名用户的删略权限等配置,可详见配置大全章节。
第三步:启动FTP服务
相关指令有(简述):
指令 | 说明 |
/bin/systemctl status vsftpd.service | 查看FTP服务的状态 |
/bin/systemctl start vsftpd.service | 启动FTP |
/bin/systemctl enable vsftpd.service | 设置FTP开机自动启动 |
注:最好设置为开机自动启动。
注:更多指令、指令细节可详见https://blog.csdn.net/justry_deng/article/details/87966318。
第四步:开放FTP对应的端口(关闭防火墙也是可以的,但我们一般都不这么做)
相关指令有(简述):
指令 | 说明 |
firewall-cmd --zone=public --list-ports | 查看所有开放的端口 |
firewall-cmd --zone=public --add-port=xxx/tcp --permanent | 开放端口xxx |
firewall-cmd --reload | 重新加载防火墙 |
systemctl stop firewalld.service | 关闭firewall防火墙 |
systemctl disable firewalld.service | 禁止firewall防火墙开机启动 |
firewall-cmd --state | 查看默认防火墙状态(关闭后显示not running,开启后显示running) |
注:更多指令、指令细节可详见《程序员成长笔记(第一部)》。
第五步:修改selinux
使用getsebool -a | grep ftp指令查看selinux对ftp的权限管理:
发现最关键的ftpd_full_access项和tftp_home_dir项是关闭了的,这时我们需要使用setsebool -P allow_ftpd_full_access on指令和setsebool -P tftp_home_dir on指令来分别开启ftpd_full_access和tftp_home_dir,开启后再查看如图所示:
注:其它的选项可根据实际情况来进行设置。
注:上述指令是永久有效的(即:关机重启后仍然有效),如果只是想临时改一下(重启后会失效),那么只需要将上述
指令去掉-P参数即可,如:
提示:如果想关闭,只需要将指令中对应的on改为off即可。
与selinux的相关的指令还有:
指令 | 说明 |
getsebool -a | grep ftp | 查看selinux对ftp的权限管理 |
setsebool -P allow_ftpd_full_access on | 永久开启ftpd_full_access 注:重启后仍然有效 |
setsebool -P tftp_home_dir on | 永久开启tftp_home_dir 注:重启后仍然有效 |
setsebool allow_ftpd_full_access on | 临时开启ftpd_full_access 注:重启后失效 |
setsebool tftp_home_dir on | 临时开启tftp_home_dir 注:重启后失效 |
SELinux的打开与关闭 | |
getenforce | 查看SELinux的状态 注:Permissive说明SELinux是关闭了的,Enforcing说明SELinux是开启了的 |
setenforce 0 | 临时关闭SELinux 注:重启后失效 |
setenforce 1 | 临时打开SELinux 注:重启后失效 |
vim /etc/sysconfig/selinux,将SELINUX=enforcing改为SELINUX=disabled | 永久关闭SELinux 注:重启系统后生效(手动重启或使用reboot指令重启) |
vim /etc/sysconfig/selinux,将SELINUX=disabled改为SELINUX=enforcing | 永久开启SELinux 注:重启系统后生效(手动重启或使用reboot指令重启) |
第六步:启动(或重启)FTP服务
相关指令有(简述):
指令 | 说明 |
/bin/systemctl start vsftpd.service | 启动FTP |
/bin/systemctl restart vsftpd.service | 重启FTP |
/bin/systemctl status vsftpd.service | 查看FTP服务的状态 |
注:更多指令、指令细节可详见https://blog.csdn.net/justry_deng/article/details/87966318。
第七步:访问测试一下
本人的Linux下的/var/ftp目录是这样的:
浏览器访问ftp://192.168.2.103/就默认进入了/var/ftp目录下:
注:匿名用户连接登录FTP时,如果需要输入用户名,那么用户名使用ftp或anonymous,密码为空即可。
注:匿名用户登录FTP后,对应的即进入了Linux上的/var/ftp目录(可在FTP的主配置文件中通过如anon_root选
项来设置),且不能切换至上级目录(即:不能离开此根目录)。
注:匿名用户登录操作FTP时,需要有对应目录的权限才行,否者会报
500 OOPS: vsftpd: refusing to run with writable root inside chroot()等错误。
注:匿名用户属于【所有者】、【组】、【其他】中的【其他】,所以必有保证【其他】至少/var/ftp目录的可读(4)、
可执行(1)权限才行。 如:chmod -R 775 /var/ftp指令,设置775的权限。
附录:本文最终的/etc/vsftpd/vsftpd.conf配置文件:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
声明一:此文为学习笔记。
声明二:此笔记是本人2019年2月上中旬所记,期间参考了一些博客、资料、书籍,甚是遗憾记不住参考了哪些的了。
如若涉及侵权,请及时联系本人。