CentOS7配置FTP服务器加强版~(零基础学会FTP配置)

ps:原文不知出处,可是原文也不能正常启动,这里作了一些修改!若是能正常配置请在下方留言让更多的人看到,由于以前我本人照着网上的教程安装卸载了十屡次也没法正常使用,不但愿后面的兄弟继续浪费时间,若是不能使用,也请劳烦贴出相应的错误!
参考:
1、 防火墙设置( CentOS 7.0默认使用的是firewall做为防火墙,这里改成iptables防火墙)

1.  安装iptables防火墙mysql

# 先检查是否安装了iptables(若是提示iptables:unrecognized service 则表示系统还没有安装)linux

service iptables statusweb

# 安装iptablessql

yum install iptables数据库

# 升级iptablesvim

yum update iptables 浏览器

# 安装iptables-services安全

yum install iptables-services服务器

2. 关闭Firewallsession

# 中止firewall 服务

systemctl stop firewalld.service         

# 禁用firewall 服务   

systemctl mask firewalld.service         

# 禁止firewall服务开机启动 

systemctl disable firewalld.service      

# 查看firewall服务状态

firewall-cmd --state         

3. 查看Iptables所在目录与配置文件

#安装完成后,配置文件默认所在位置

# /etc/sysconfig/iptables

4. 设置现有规则

# 查看iptables现有规则  

iptables -L -n                  

# 先容许全部,否则有可能会杯具

iptables -P INPUT ACCEPT        

# 清空全部默认规则       

iptables -F      

# 清空全部自定义规则                                        

iptables -X         

# 全部计数器归0                                    

iptables -Z                                             

4.1 iptables 规则设置

# 容许来自于lo接口的数据包(本地访问)

iptables -A INPUT -i lo -j ACCEPT

# 容许本机对外访问

iptables -A OUTPUT -j ACCEPT

# 容许接受本机请求以后的返回数据 RELATED,是为FTP设置的

iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT

# 开放22端口(SSH)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 开放2一、20端口(FTP)

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

iptables -A INPUT -p tcp --dport 20 -j ACCEPT

# 开放80端口(HTTP)

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 开放443端口(HTTPS)

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 容许ping

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# 10060到10090是Vsftpd被动模式须要的端口,可自定义一段大于1024的tcp端口

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT

# 这两条的意思是在INPUT表和FORWARD表中拒绝全部其余不符合上述任何一条规则的数据包。

而且发送一条host prohibited的消息给被拒绝的主机。

iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

注:防火墙的规则是从上到下解析的

4.2 保存规则设定

 

# 保存上述规则

service iptables save

# 查看iptables现有规则

iptables -L -n   

4.3 开启iptables服务 

# 最后重启防火墙使配置生效

systemctl restart iptables.service

# 设置防火墙开机启动

systemctl enable iptables.service

# 查看状态

systemctl status iptables.service

# 肯定是否enabled

systemctl list-unit-files | grep iptables

 

2、 关闭SELINUX

vi /etc/selinux/config

#SELINUX=enforcing # 注释掉

#SELINUXTYPE=targeted # 注释掉

SELINUX=disabled # 增长

:wq! # 保存退出

 
setenforce 0 # 使配置当即生效
若是出现:setenforce: SELinux is disabled解决办法(不少是没有注意到这个细节致使最后ftp没法访问!)

若是在使用setenforce命令设置selinux状态的时候出现这个提示:setenforce: SELinux is disabled

那么说明selinux已经被完全的关闭了

若是须要从新开启selinux,请按下面步骤:

vi /etc/selinux/config

更改成:SELINUX=1

必须重启linux,不重启是没办法马上开启selinux的

重启完之后,使用getenforce,setenforce等命令就不会报“setenforce: SELinux is disabled”了
 
而后再重复:
 
SELINUX=disabled # 增长
 
保存退出
 
setenforce 0 # 使配置当即生效
 
若是没有出现setenforce: SELinux is disabled就继续下一步,不然请先将此问题解决!

 

3、 安装vsftpd 

# 安装vsftpd

yum install -y vsftpd 

yum -y install ftp vsftpd

# 安装vsftpd虚拟用户配置依赖包

yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI 

# 启动

systemctl start vsftpd.service

 

# 查看vsftpd服务的状态

systemctl status vsftpd.service

systemctl list-unit-files | grep vsftpd.service

# 设置vsftpd开机启动

systemctl enable vsftpd.service 

 

4、 配置

# 备份默认配置文件

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak 

# 执行如下命令进行设置
sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
 
sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'
 

#以后添加下列内容到vsftpd.conf末尾

vim /etc/vsftpd/vsftpd.conf

 

use_localtime=YES

listen_port=21

chroot_local_user=YES

idle_session_timeout=300

guest_enable=YES

guest_username=vsftpd

user_config_dir=/etc/vsftpd/vconf

data_connection_timeout=1

virtual_use_local_privs=YES

pasv_min_port=10060

pasv_max_port=10090

accept_timeout=5

connect_timeout=1

echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300 \

ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd \

nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES \

npasv_min_port=10060\npasv_max_port=10090 \

naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf

 

5、 创建虚拟用户名单文件

touch /etc/vsftpd/virtusers

# 编辑虚拟用户名单文件:(第一行帐号,第二行密码,注意:不能使用root作用户名,系统保留)

vi /etc/vsftpd/virtusers

web1

123456

web2

123456

web3

123456

 

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

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

#设定PAM验证文件,并指定对虚拟用户数据库文件进行读取

chmod 600 /etc/vsftpd/virtusers.db 

 

7、 在/etc/pam.d/vsftpd文件添加如下信息

# 修改前先备份 

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak

# 将auth及account的全部配置行均注释掉

vi /etc/pam.d/vsftpd

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

注:若是系统为32位,上面改成lib,不然配置失败

 

8、 新建系统用户vsftpd,用户目录为/home/vsftpd, 用户登陆终端设为/bin/false(即:使之不能登陆系统)

useradd vsftpd -d /home/vsftpd -s /bin/false

chown -R vsftpd:vsftpd /home/vsftpd


9、 创建虚拟用户我的Vsftp的配置文件

mkdir /etc/vsftpd/vconf

cd /etc/vsftpd/vconf

touch web1 web2 web3 # 这里建立三个虚拟用户配置文件

mkdir -p /home/vsftpd/web1/

vi web1 # 编辑用户web1配置文件,其余的跟这个配置文件相似

local_root=/home/vsftpd/web1/

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

 

10、 重启vsftpd服务器

systemctl restart vsftpd.service

# 查看vsftpd服务的状态

systemctl status vsftpd.service

systemctl list-unit-files | grep vsftpd

 
最后在浏览器或者个人电脑里输入 ftp://192.168.163.126(局域网)测试!
能够登陆可是没法上传下载,接下来:
 mkdir /home/vsftpd/web1/m/
web1目录的全部者为root,因此ftp账号web1不能进行下载

 

chown -R vsftpd:vsftpd /home/vsftpd/web1/m/
这样 /home/vsftpd/web1/m/  m这个目录的全部者为vdftpd即ftp账号本身,web1账号就能在m文件夹下进行上传下载删除!

 

  /*******************************************************************************************/
通常状况下,为了网站更安全,咱们须要给文件或文件夹设置权限,在采用FTP登陆的方式下,常常会用到755,766,777,644等设置。
具体这些数字都表明什么意思呢?
这三个数字分别表示:不一样用户或用户组的权限。
    第一个数字 表示文件全部者的权限
    第二个数字 表示与文件全部者同属一个用户组的其余用户的权限
    第三个数字 表示其它用户组的权限。
权限分为三种: 读(r=4),写(w=2),执行(x=1)。
综合起来还有可读可执行5(rx=5=4+1)、可读可写6(rw=6=4+2)、可读可写可执行7(rwx=7=4+2+1)。
因此,755 设置用户的权限为:
1.文件全部者可读可写可执行 2.与文件全部者同属一个用户组的其余用户可读可执行 3.其它用户组可读可执行
相关文章
相关标签/搜索