之前在公司搭建了一个静态资源服务器,现在来记录一下
我们是通过搭建vsftp服务,然后结合apache。访问方式为http的方式
一:VSFTPD环境安装
首先我们就是要查看一下vsftpd是否有安装过(检测)
我这里是没有安装的
所以我这里就通过YUM的方式给他装上(安装)
安装完成之后我们可以通过下面的命令启动、停止ftp
启动命令#service vsftpd start
停止命令#service vsftpd stop
重启命令#service vsftpd restart
二:VSFTPD环境配置
ftp的配置文件主要有三个,位于/etc/vsftpd/目录下,分别是:
ftpusers 该文件用来指定那些用户不能访问ftp服务器。
user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp.vsftpd.conf vsftpd的主配置文件.ftpusers和user_list 用来控制登录用户。
ftpusers文件中的内容不受任何配制项的影响,总是有效,是一个黑名单!
该文件存放的是一个禁止访问FTP的用户列表,通常为了安全考虑,管理员不希望一些拥有过大权限的帐号(比如root)登入FTP,以免通过该帐号从FTP上传或下载一些危险位置上的文件从而对系统造成损坏。
而user_list文件则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单。
userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。
当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP
当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
当
userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准
许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一
行:anonymous
而最常用的配置文件是vsftpd.conf,在配置完成后要运行#service vsftpd restart重启FTP服务。
三:VSFTPD配置文件的修改
在修改之前我们可以吧源配置文件给备份一下
然后我们就开始来修改配置文件了
这是我在生产上的配置
anonymous_enable=NO
port_enable=YES
pasv_enable=YES
pasv_min_port=9010
pasv_max_port=9060
local_enable=YES
write_enable=YES
download_enable=YES
local_umask=022
chroot_local_user=YES
ascii_upload_enable=YES
ascii_download_enable=YES
pam_service_name=vsftpd------------------》确保开启
guest_enable=YES----------------------------》开启虚拟用户
guest_username=virtual—————————》虚拟用户所映射的本地用户
user_config_dir=/etc/vsftpd/user_config_dir
dirmessage_enable=YES
connect_from_port_20=YES
listen=YES
listen_port=21
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/vsftplog
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES-------这个看你的vsftpd版本是多少,要是在2.3.5以后,就给他加上
我这里设置的是被动模式:
我现在设置一个虚拟用户的专有目录/etc/vsftpd/user_config_dir
然后这个下面放的是虚拟用户的专有配置文件
write_enable=YES
local_root=/ftproot/app
download_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
四:给FTP添加用户和主目录
这个时候我们可以创建用户了,
useradd -d /ftproot/ -s /sbin/nologin virtual
passwd virtual 设置密码
我们这里就指定用户的家目录为ftp的上传下载主目录
设置权限
chmod -R 755 /ftproot
chown virtual:virtual /ftproot -R
四:设置使用虚拟用户能够上传、下载、建立文件
首先这里我们要建立一个虚拟用户口令的文本文件,格式是:
奇数行为用户名
偶数行是密码
下面是我生产的例子:
app-----------------------------》虚拟用户的名字
bbqqaakkdl--------------------》用户的口令
这里我们可以设置不同的虚拟用户专属不同的文件目录,同时你也可以设置不同的用户角色权限
比说说我们现在再创建一个虚拟用户
app-----------------------------》虚拟用户的名字
bbqqaakkdl--------------------》用户的口令
IAM
1234asdf
local_root=/home/IAM
local_umask=022
anon_umask=022
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=1048576
#download
#anon_world_readable_only=NO
#upload
#anon_world_readable_only=NO
#write_enable=YES
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
#admin
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
保存之后我们要用db_host来生成用户口令库文件
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db #为了安全设为只读。
然后我们重启一下vsftpd的服务(我们可以用nginx来代理一下)
然后我们输入服务器的IP地址,这样我们不同的用户读取到的内容是不一样的,IAM用户读取到的内容是/home/IAM 下面的文件内容
现在修改/etc/pam.d/vsftpd
把文件中的所有行给注释掉,然后加上下面两行
需要注意的是,上面那个db所指的vuser这个文件不需要加".db"不然会登录不了的。
我这个在启动的时候报了一个错
我想起来了,这是因为我当时在centos 7装vsftpd的时候我yum安装的是3.0版本的,因为当时要是不加上这个
allow_writeable_chroot的话会报错
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
网上找到的解释是:
但是我当前的版本是2.2.2的。所以这里我就把这个参数去掉就好了
然后我们就可以访问测试一下
我发现创建和删除文件都是没有问题的
这里vsftpd的安装配置工作就完成了,接下来要做的就是给他装上一个apache,方便我们的后台程序使用http的方式来调用
yum -y install httpd
cd /etc/httpd/conf.d
vim ftp.conf
<VirtualHost *:8001>
DocumentRoot /ftproot/app
ServerName 192.168.220.116
ErrorLog logs/ftpsvr.error.log
CustomLog logs/ftpsvr.access.log common
<Directory "/ftproot/app">
Options -Indexes
AllowOverride All
Require all granted
</Directory>---------------------->这一部分是当时是因为什么原因加上的不记得了
</VirtualHost>
vim /etc/httpd/conf/httpd.conf
添加一行
Listen 8001
然后重启httpd
把上面的红色内容给去掉,重启http访问成功
- Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)
转载:http://www.cnblogs.com/EasonJim/p/6295372.html Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践) 前提: 这一篇是继上一 ...
- Java使用comms-net jar包完成ftp文件上传进度的检测功能
本文章只讲述大致的思路与本次功能对应的一些开发环境,具体实现请结合自己的开发情况,仅供参考,如果有不对的地方,欢迎大家指出! 准备环境:JDK1.7 OR 1.8.eclipse.ftp服务器(可自行 ...
- FTP 文件传输服务
昨晚心血来潮,尝试用python写了一个ftp文件传输服务,可以接收指令,从远程ftp服务器同步指定目录数据,最后没用上,开源出来. https://github.com/jadepeng/ftp_t ...
- Java实现FTP文件与文件夹的上传和下载
Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...
- informatica读取FTP文件
以下为一个完整的informatica读取ftp文件,并导入到系统中. 第一步: 通过shell脚本下载压缩包文件 /server/infa_shared/crm_prod/shell/ftpFrom ...
- SQL Server Reporting Services:无法检索应用程序文件。部署中的文件已损坏
如果在客户端计算机上启动Microsoft SQL Server 2012的 ClickOnce 版本的 Microsoft SQL Server 报表生成器时出现"无法检索应用程序文件.部 ...
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- b/s 读取多个FTP文件(图片,视频)压缩到服务器 下载到客户端
其实需求是这样, 要做一键导出, 有图片,有照片,youhtml,存在不同的文件夹,每次下载都必须下载最新数据,因为FTP是随时更新的. 1.这要是一直下载下载,浏览器一直跳窗口,蛋疼的我都看不下去. ...
- 解决IIS7.0服务和用户上传的文件分别部署在不同的电脑上时,解决权限的问题
为解决IIS服务和用户上传的文件分别部署在不同的电脑上时,解决权限的问题. 定义: A:iis服务器 B:文件服务器 步骤: 1.在B上创建一个用户[uploaduser](并设置密码) 2.给B上的 ...
随机推荐
- JQuery Datatables Columns API 参数详细说明
---恢复内容开始--- Data Tables: http://datatables.NET/ Version: 1.10.0 Columns说明 虽然我们可以通过DOM直接获取DataTables ...
- [C1] C1FlexGrid 排除非绑定列的验证效果
一.前言 前提是 C1FlexGrid 中存在数据绑定列和自定义列(非数据绑定列),此时如果该行编辑后出现排他错误,自定义列也会出现验证结果的红色边框: 但是自定义列如果只是一些按钮操作,提示说明什么 ...
- Linq在Array,List,Dictionary中的应用
Linq在Array,List,Dictionary中的应用 今天在实际工作中需要对array,list,dictionary进行排序,试一试linq,发现非常好用,代码如下: using Syste ...
- java抽象、接口 和final
抽象 一.抽象类:不知道是具体什么东西的类. abstract class 类名 1.抽象类不能直接new出来. 2.抽象类可以没有抽象方法. public abstract class USB { ...
- boost.python笔记
boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...
- 关于linux下crontab的使用
minute hour day month dayofweek command minute - 从0到59的整数 hour - 从0到23的整数 day - 从1到31的 ...
- 无脑简单 命令升级git Centos
yum remove git yum install zlib (系统默认已经装上) yum install zlib-devel ># wget https://github.com/git/ ...
- jdk源码分析PriorityQueue
一.结构 PriorityQueue是一个堆,任意节点都是以它为根节点的子树中的最小节点 堆的逻辑结构是完全二叉树状的,存储结构是用数组去存储的,随机访问性好.最小堆的根元素是最小的,最大堆的根元素是 ...
- SVG坐标系统
SVG的画布.画布视区(viewBox).浏览器视窗的概念 画布 画布是绘制SVG内容的一块区域,理论上在所有维度上都是无限的.(也有人称为"SVG世界",但我觉得叫画布比较合适) ...
- css_03之文本、浮动
1.字体属性:①字体格式:font-family:取值:“microsoft yahei”/Arial……:②字体大小:font-size:取值:pt/px:③字体加粗:font-weight:取值: ...