转载

linux搭建ftp,java完成静态资源服务器的ftp传输

--- vsftpd.service  可以是其他服务哦 

启动服务:systemctl start vsftpd.service

关闭服务:systemctl stop vsftpd.service

重启服务:systemctl restart vsftpd.service

显示服务的状态:systemctl status vsftpd.service

在开机时启用服务:systemctl enable vsftpd.service

在开机时禁用服务:systemctl disable vsftpd.service

查看服务是否开机启动:systemctl is-enabled vsftpd.service

查看已启动的服务列表:systemctl list-unit-files|grep enabled

查看启动失败的服务列表:systemctl --failed
复制代码

centOS7.2防火墙常用配置

firewall-cmd --state #查看默认防火墙状态(关闭后显示not running,开启后显示running)

systemctl stop firewalld.service #停止firewall
systemctl start firewalld.service #开启防火墙

systemctl disable firewalld.service #禁止firewall开机启动
systemctl enable firewalld.service #开机开启防火墙

firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效) #开启80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent #删除80端口

firewall-cmd --list-ports #查看已开放的端口(默认不开放任何端口)

#当我们修改了某些配置之后(尤其是配置文件的修改),firewall并不会立即生效。可以通过两种方式来激活最新配置:

systemctl restart firewalld  # 重启firewalld服务
firewall-cmd --reload # “重载配置文件” - 建议使用 - 重载配置文件之后不会断掉正在连接的tcp会话,而重启服务则会断开tcp会话

复制代码

Centos7 下firewall的学习及使用:

- FireWall 域的概念,较详细,看此文章
- 向域添加服务、
- 为域打开端口 上面80端口例子
- 编写手动服务:服务仅仅是具有相关名称和描述的端口集合。使用服务比端口更容易管理。**重要了解**
    在/usr/lib/firewalld/services,随便拷贝一个xml文件到一个新名字,比如myservice.xml,把里面的

    <?xml version="1.0" encoding="utf-8"?>
    <service>
    <short>Transmission-client</short>
    <description>Transmission is a lightweight GTK+ BitTorrent client.</description>
    <port protocol="tcp" port="51413"/>
    </service>

short改为想要名字(这个名字只是为了人来阅读,没有实际影响。)
重要的是修改 protocol和port。
修改完保存。我的经验是这是要重启firewalld服务,否则可能提示找不到刚才新建的service。
然后把新建的service添加到firewalld
firewall-cmd --permanent --add-service=myservice

- 创建自己的域
- 实现伪装IP 和 端口转发 **重要了解**
    端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。
    转发的目的如果不指定 ip 的话就默认为本机,如果指定了 ip 却没指定端口,则默认使用来源端口。
    
    如果配置好端口转发之后不能用,可以检查下面两个问题:
    比如我将 80 端口转发至 8080 端口,首先检查本地的 80 端口和目标的 8080 端口是否开放监听了
    其次检查是否允许伪装 IP,没允许的话要开启伪装 IP
    firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080
    firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
    firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 
    # 将80端口的流量转发至192.168.0.1的8080端口
    
    
    当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,
    然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。
    
    端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。
复制代码

CentOS7添加/删除用户和用户组

简单了解使用

CentOS7添加/删除用户和用户组

Linux命令: useradd/adduser 新增用户

ftp一些概念了解

  • 1、安装 yum -y install vsftpd

  • 2、FTP主动模式与FTP被动模式

  • 3、防火墙开启21端口

    iptables
    centos7.2
    
    永久开启ftp服务,ftp服务默认端口为21
    firewall-cmd --add-service=ftp --permanent 
    firewall-cmd --reload
    复制代码
  • 4.1、匿名登录(了解)

  • 4.2、本地用户登录(了解)

  • 4.3、虚拟用户登录(了解)

  • 5、修改selinux

    • 当安装并配置好ftp后可能登录不上,返回500等错误。根据文中修改设置
    • 一文彻底明白linux中的selinux到底是什么
  • 6、设置开机启动 vsftpd 服务

    systemctl enable vsftpd.service
    复制代码

/etc/vsftpd目录下配置文件讲解

ftp服务安装完后
以下是一些文件的位置约定: 
/usr/sbin/vsftpd ---- VSFTPD的主程序 
/etc/rc.d/init.d/vsftpd ---- 启动脚本 
/etc/vsftpd/vsftpd.conf ---- 主配置文件 
/etc/pam.d/vsftpd ---- PAM认证文件 
/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件 
/etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件 
/var/ftp ---- 匿名用户主目录 
/var/ftp/pub ---- 匿名用户的下载目录
复制代码

/etc/vsftpd目录下配置文件讲解

1、ftpusers

#这里设置黑名单 加入这里的用户都无法访问
复制代码

2、user_list

#控制配置,这个既可以是黑名单,也可以是白名单
当vsftpd.conf中 userlist_enable=YES 时,为黑名单,加入这里的用户无法访问
当vsftpd.conf中 userlist_enable=NO 时,为白名单,加入这里的用户才能访问
复制代码

3、vsftpd.conf 配置文件

重要,太多了,自己搜
复制代码

vsftpd 配置:chroot_local_user与chroot_list_enable详解

了解
复制代码

4、chroot_list

为VSFTP用户指定登录后的目录

重要,下面步骤用到
复制代码

FTP常见命令详解

可在window cmd下了解学习使用
另外在下面的步骤中,当搭建完vsftpd服务后,要进行用户登录访问ftp测试。
如果有错误,使用cmd命令可以返回详细错误信息
(如我遇到的错误提示[vsftpd:500 OOPS: vsftpd: ...](https://www.cnblogs.com/zuikeol/p/9647048.html))
用网页、文件夹登录根本不给相关信息
复制代码

Linux搭建vsftpd服务步骤

需求

静态资源服务器的资源上传:前端上传图片给后台服务器A,A需要将图片传给图片服务器B

分析

根据了解,目前解决方案有三种:

java上传文件到ftp服务器(这个方案需要在静态资源服务器安装ftp服务)

java使用HttpURLConnection上传文件到远程服务器

java使用HttpClient通过Post上传文件

后两种可能应该需要在图片服务器B上编写发布相关后台服务来接收资源(待考证),目前B服务器没有计划发布服务。 故使用第一种方案。

可以搜索这些方案进行了解

搭建

在服务器B搭建ftp服务,并开通用户 uploadexample ,并配置只能操作指定文件夹/home/uploadexample,进行上传资源操作。

1、yum安装好ftp服务

此时匿名用户登录等应该都能登录
复制代码

2、/etc/vsftpd目录下修改vsftpd.conf 配置文件

anonymous_enable=NO #关闭匿名登录

#打开注释
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list

#添加下面
#https://www.cnblogs.com/zuikeol/p/9647048.html
allow_writeable_chroot=YES
#添加读取用户配置目录(注:本行配置默认没有需要手动输入)
user_config_dir=/etc/vsftpd/userconf

#开启被动模式及设置端口段
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
复制代码

3、添加用户、 添加用户ftp相关权限设置

新建用户。如果现存用户不用新建,另外要确定不在黑名单ftpusers(user_list-yes)中
# adduser uploadexample //新建用户 
# passwd uploadexample //给用户设置密码

添加上用户uploadexample,一行一个用户,保存
# vi /etc/vsftpd/chroot_list 

建立用户配置目录
# mkdir /etc/vsftpd/userconf

建立用户登陆后的目录,也就是允许用户操作的目录 若存在不用创建
# mkdir /home/uploadexample

添加用户配置文件
注:有很多用户时,需要建每个用户相对应的文件
# vi /etc/vsftpd/userconf/uploadexample
 添加内容FTP用户登陆后指定的目录:
 local_root=/home/uploadexample 

复制代码

4、配置成功 重启ftp服务,并测试。

原文  https://juejin.im/post/5d7891065188254c20605a7f
正文到此结束
Loading...