php unicode与中文互转

PHPllslx520 发表了文章 • 0 个评论 • 58 次浏览 • 2017-05-05 23:15 • 来自相关话题

一、使用json_encode和json_decode函数:1、使用json_decode()函数将unicode编码转换为中文汉字:<?php
$str = "\u597d\u597d\u5b66\u4e60\u5929\u5929\u5411\u4e0a";
# echo json_decode($str); # 错误
echo json_decode(sprintf('"%s"', $str)); #正确输出:好好学习天天向上注意:需要在要转换成中文的unicode字符串两边添加双引号后,才能使用json_decode()正确的转换成中文。 
 2、使用json_encode()函数将中文转换为unicode编码:<?php
$str = "爱E族:aiezu.com";
echo json_encode($str);输出:"\u7231E\u65cf\uff1aaiezu.com"注意:使用json_encode()函数将中文转换成unicode编码后,首尾会多出两个双引号,需要自行去掉。 查看全部

一、使用json_encodejson_decode函数:

1、使用json_decode()函数将unicode编码转换为中文汉字:

<?php
$str = "\u597d\u597d\u5b66\u4e60\u5929\u5929\u5411\u4e0a";
# echo json_decode($str); # 错误
echo json_decode(sprintf('"%s"', $str)); #正确
输出:
好好学习天天向上
注意:需要在要转换成中文的unicode字符串两边添加双引号后,才能使用json_decode()正确的转换成中文。 
 

2、使用json_encode()函数将中文转换为unicode编码:

<?php
$str = "爱E族:aiezu.com";
echo json_encode($str);
输出:
"\u7231E\u65cf\uff1aaiezu.com"
注意:使用json_encode()函数将中文转换成unicode编码后,首尾会多出两个双引号,需要自行去掉。

Linux Vim代码格式化/美化插件vim-autoformat安装

Linuxllslx520 发表了文章 • 0 个评论 • 178 次浏览 • 2017-04-25 21:05 • 来自相关话题

  vim-autoformat是Vim的一款代码自动化格式插件,vim-autoformat会根据文件的后缀,自动调用相应的相应命令进行代码格式化。所以,安装vim-autoformat的同时,还需要安装相应代码语言的格式化工具,才能保证vim-autoformat的正常运行。
 一、安装vim插件管理器:  为了方便插件安装,我们需要先安装vim插件管理器。这里我们使用"Vundle"作为vim的 插件管理器,安装 方法这里不再做介绍,请参考:Linux Vim插件管理器Vundle安装和使用
 二、安装vim-autoformat插件:1、安装vim-autoformat:  安装好Vundle插件管理器后,我们就能非常方便的安装插件了。在~/.vimrc文件"call vundle#begin()" 到 "call vundle#end()"件的范围内,添加一行"Plugin 'Chiel92/vim-autoformat'",如下所示:call vundle#begin()

" Vundle 本身就是一个插件
Plugin 'gmarik/Vundle.vim'
Plugin 'Chiel92/vim-autoformat'

"所有插件都应该在这一行之前
call vundle#end()添加好并保存后,重新运行vim命令,在vim中运行:PluginInstall命令即可完成vim-autoformat插件的安装。
 2、配置vim-autoformat插件:  在~/.vimrc文件末尾添加下面内容,将F3键设置为代码格式话键。"F5自动格式化代码
noremap <F3> :Autoformat<CR>
let g:autoformat_verbosemode=1也可以通过下面方式,设置保存时自动对指定格式代码进行格式化,或对所有格式进行格式化。"保存时自动格式化代码,针对所有支持的文件
au BufWrite * :Autoformat
"保存时自动格式化PHP代码
"au BufWrite *.php :Autoformat 
还可以对指定后缀的文件名,使用指定的格式化话工具。如下为html文件指定格式化工具和参数:let g:formatdef_my_html = '"html-beautify -s"'
let g:formatters_html = ['my_html'] 三、安装各语言格式化支持工具:1、html、Javascript/JSON、css:  htm、js、css 格式化命令分别为html-beautify、js-beautify、css-beautify:yum -y install npm
npm install html-beautify
npm install js-beautify
npm install css-beautify 2、ruby语言:#rbeautify for Ruby. It is shipped with ruby-beautify
yum -y install gem
gem install ruby-beautify 3、 C, C++, Objective-C:  C, C++, Objective-C等语言进行格式化,可以使用 clang-format​,而clang-format包含在clang包中:      #clang-format for C, C++, Objective-C
yum -y install clang 4、Java和C#, C++, C 等:# astyle for C#, C++, C and Java:
wget https://sourceforge.net/projects/astyle/files/astyle/astyle%203.0/astyle_3.0_linux.tar.gz/download -O astyle_3.0_linux.tar.gz
tar -zxvf astyle_3.0_linux.tar.gz
cd astyle/build/gcc
yum install gcc-c++
make && make install 5、更多语言:  请参考:https://github.com/Chiel92/vim-autoformat
 四、vim-autoformat插件的使用:  按上面配置好,并安装相应语言的格式化工具后,使用vim编辑相应代码文件,按F3命令vim即会对代码自动进行格式化。 查看全部
  vim-autoformat是Vim的一款代码自动化格式插件,vim-autoformat会根据文件的后缀,自动调用相应的相应命令进行代码格式化。所以,安装vim-autoformat的同时,还需要安装相应代码语言的格式化工具,才能保证vim-autoformat的正常运行。
 

一、安装vim插件管理器:

  为了方便插件安装,我们需要先安装vim插件管理器。这里我们使用"Vundle"作为vim的 插件管理器,安装 方法这里不再做介绍,请参考:Linux Vim插件管理器Vundle安装和使用
 

二、安装vim-autoformat插件:

1、安装vim-autoformat:

  安装好Vundle插件管理器后,我们就能非常方便的安装插件了。在~/.vimrc文件"call vundle#begin()" 到 "call vundle#end()"件的范围内,添加一行"Plugin 'Chiel92/vim-autoformat'",如下所示:
call vundle#begin()

" Vundle 本身就是一个插件
Plugin 'gmarik/Vundle.vim'
Plugin 'Chiel92/vim-autoformat'

"所有插件都应该在这一行之前
call vundle#end()
添加好并保存后,重新运行vim命令,在vim中运行:PluginInstall命令即可完成vim-autoformat插件的安装。
 

2、配置vim-autoformat插件:

  在~/.vimrc文件末尾添加下面内容,将F3键设置为代码格式话键。
"F5自动格式化代码
noremap <F3> :Autoformat<CR>
let g:autoformat_verbosemode=1
也可以通过下面方式,设置保存时自动对指定格式代码进行格式化,或对所有格式进行格式化。
"保存时自动格式化代码,针对所有支持的文件
au BufWrite * :Autoformat
"保存时自动格式化PHP代码
"au BufWrite *.php :Autoformat
 
还可以对指定后缀的文件名,使用指定的格式化话工具。如下为html文件指定格式化工具和参数:
let g:formatdef_my_html = '"html-beautify -s"'
let g:formatters_html = ['my_html']
 

三、安装各语言格式化支持工具:

1、html、Javascript/JSON、css:

  htm、js、css 格式化命令分别为html-beautify、js-beautify、css-beautify:
yum -y install npm
npm install html-beautify
npm install js-beautify
npm install css-beautify
 

2、ruby语言:

#rbeautify for Ruby. It is shipped with ruby-beautify
yum -y install gem
gem install ruby-beautify
 

3、 C, C++, Objective-C:

  C, C++, Objective-C等语言进行格式化,可以使用 clang-format​,而clang-format包含在clang包中:      
#clang-format for C, C++, Objective-C 
yum -y install clang
 

4、Java和C#, C++, C 等:

# astyle for C#, C++, C and Java:
wget https://sourceforge.net/projects/astyle/files/astyle/astyle%203.0/astyle_3.0_linux.tar.gz/download -O astyle_3.0_linux.tar.gz
tar -zxvf astyle_3.0_linux.tar.gz
cd astyle/build/gcc
yum install gcc-c++
make && make install
 

5、更多语言:

  请参考:https://github.com/Chiel92/vim-autoformat
 

四、vim-autoformat插件的使用:

  按上面配置好,并安装相应语言的格式化工具后,使用vim编辑相应代码文件,按F3命令vim即会对代码自动进行格式化。

Linux Vim插件管理器Vundle安装和使用

Linuxllslx520 发表了文章 • 0 个评论 • 95 次浏览 • 2017-04-25 20:08 • 来自相关话题

  Vundle是vim的一个插件管理器, 同时它本身也是vim的一个插件。插件管理器用于方便、快速的安装、删除、Vim更新插件。vim Vundle插件官方地址:https://github.com/VundleVim/Vundle.vim
 一、下载Vundle插件:  Vundle需要使用git命令来克隆安装,如果无git命令,可以使用"yum -y install git"安装git命令。有git命令的,直接克隆Vundle:mkdir -p ~/.vim/bundle
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim 二、编辑~/.vimrc文件设置插件:  运行“vim ~/.vimrc”命令创建".vimrc"文件,并在文件中添加如下内容,并保存退出:syntax on
" tab宽度和缩进同样设置为4
set tabstop=4
set softtabstop=4
set shiftwidth=4

set nocompatible

" 你在此设置运行时路径
set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

" 在这里面输入安装的插件
" Vundle 本身就是一个插件
Plugin 'gmarik/Vundle.vim'


"所有插件都应该在这一行之前
call vundle#end()

" filetype off
filetype plugin indent on提示:如果使用粘贴方法复制到到.vimrc发现格式混乱,可以在shell中使用"cat <<END> ~/.vimrc"命令,然后粘贴代码,在输出"END"回车即可。
 三、安装Vundle插件:  ".vimrc"文件配置好后,打开vim,在命令模式输入插件安装命令“:PluginInstall”命令,vim就会自动安装“.vimrc”中配置的所有插件,直到vim底部出现“Done”安装完成。


四、Vundle插件用法介绍:
  下面命令在vim命令模式下运行。命令描述:PluginInstall安装~/.vimrc中"call vundle#begin()"到"call vundle#end()"范围内配置好的插件;:PluginClean清理已经从"call vundle#begin()"到"call vundle#end()"范围删除的插件。:PluginUpdate更新插件:PluginSearch 搜索插件,如":PluginSearch html"搜索包含html关键词的插件。
  查看全部
  Vundle是vim的一个插件管理器, 同时它本身也是vim的一个插件。插件管理器用于方便、快速的安装、删除、Vim更新插件。vim Vundle插件官方地址:https://github.com/VundleVim/Vundle.vim
 

一、下载Vundle插件:

  Vundle需要使用git命令来克隆安装,如果无git命令,可以使用"yum -y install git"安装git命令。有git命令的,直接克隆Vundle:
mkdir -p ~/.vim/bundle
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
 

二、编辑~/.vimrc文件设置插件:

  运行“vim ~/.vimrc”命令创建".vimrc"文件,并在文件中添加如下内容,并保存退出:
syntax on
" tab宽度和缩进同样设置为4
set tabstop=4
set softtabstop=4
set shiftwidth=4

set nocompatible

" 你在此设置运行时路径
set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

" 在这里面输入安装的插件
" Vundle 本身就是一个插件
Plugin 'gmarik/Vundle.vim'


"所有插件都应该在这一行之前
call vundle#end()

" filetype off
filetype plugin indent on
提示:如果使用粘贴方法复制到到.vimrc发现格式混乱,可以在shell中使用"cat <<END> ~/.vimrc"命令,然后粘贴代码,在输出"END"回车即可。
 

三、安装Vundle插件:

  ".vimrc"文件配置好后,打开vim,在命令模式输入插件安装命令“:PluginInstall”命令,vim就会自动安装“.vimrc”中配置的所有插件,直到vim底部出现“Done”安装完成。
Linux_Vim插件管理器Vundle安装和使用.png

四、Vundle插件用法介绍:


  下面命令在vim命令模式下运行。
命令描述
:PluginInstall安装~/.vimrc中"call vundle#begin()"到"call vundle#end()"范围内配置好的插件;
:PluginClean清理已经从"call vundle#begin()"到"call vundle#end()"范围删除的插件。
:PluginUpdate更新插件
:PluginSearch 搜索插件,如":PluginSearch html"搜索包含html关键词的插件。

 

Vim快速为PHP代码文件头添加copyright版权信息

PHPllslx520 发表了文章 • 0 个评论 • 137 次浏览 • 2017-04-14 22:49 • 来自相关话题

1、修改~/.vimrc文件:  使用vim编辑~/.vimrc文件,在文件尾部添加如下代码:map <F4> :call TitleDet()<cr>'s
function AddTitle()
call append(1,"/*=============================================================================")
call append(2,"# Author: Aiezu.com - xxxx@qq.com")
call append(3,"# Last modified: " . strftime("%Y-%m-%d %H:%M"))
call append(4,"# Filename: " . expand("%:t"))
call append(5,"# Description: ")
call append(6,"=============================================================================*/")
echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endf

function UpdateTitle()
normal m'
execute '/# *Last modified:/s@:.*\=strftime(":\t%Y-%m-%d %H:%M")@'
normal ''
normal mk
execute '/# *Filename:/s@:.*\=":\t\t".expand("%:t")@'
execute "noh"
normal 'k
echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction

function TitleDet()
let n=1
while n < 7
let line = getline(n)
if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
call UpdateTitle()
return
endif
let n = n + 1
endwhile

call AddTitle()
endfunction上面代码中的append函数的第一个参数是在指定的行后面插入内容,这里从第一行后面开始插入(第一行留给"<?php")。 
 
小贴士:如果上面的代码粘贴到vim中格式乱了,可以使用shell中输入"cat <<END>> ~/.vimrc"回车,再粘贴代码,再输入字符"END",完成追加代码到文件。
 2、 快速添加版权信息测试:  按上面要求修改~/.vimrc文件并保存后,使用vim随便打开一个php文件,按F4,恭喜,神奇的一幕发生了。 查看全部

1、修改~/.vimrc文件:

  使用vim编辑~/.vimrc文件,在文件尾部添加如下代码:
map <F4> :call TitleDet()<cr>'s
function AddTitle()
call append(1,"/*=============================================================================")
call append(2,"# Author: Aiezu.com - xxxx@qq.com")
call append(3,"# Last modified: " . strftime("%Y-%m-%d %H:%M"))
call append(4,"# Filename: " . expand("%:t"))
call append(5,"# Description: ")
call append(6,"=============================================================================*/")
echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endf

function UpdateTitle()
normal m'
execute '/# *Last modified:/s@:.*\=strftime(":\t%Y-%m-%d %H:%M")@'
normal ''
normal mk
execute '/# *Filename:/s@:.*\=":\t\t".expand("%:t")@'
execute "noh"
normal 'k
echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction

function TitleDet()
let n=1
while n < 7
let line = getline(n)
if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
call UpdateTitle()
return
endif
let n = n + 1
endwhile

call AddTitle()
endfunction
上面代码中的append函数的第一个参数是在指定的行后面插入内容,这里从第一行后面开始插入(第一行留给"<?php")。 
 
小贴士:如果上面的代码粘贴到vim中格式乱了,可以使用shell中输入"cat <<END>> ~/.vimrc"回车,再粘贴代码,再输入字符"END",完成追加代码到文件。
 

2、 快速添加版权信息测试:

  按上面要求修改~/.vimrc文件并保存后,使用vim随便打开一个php文件,按F4,恭喜,神奇的一幕发生了。

Linux下Apache配置ssl让其支持https协议

Linuxllslx520 发表了文章 • 0 个评论 • 136 次浏览 • 2017-04-13 11:12 • 来自相关话题

一、实验环境:操作系统: CentOS Linux release 7.2.1511 (Core)
apache版本:Apache/2.4.6 (CentOS)
实验前提:Lamp(Linux、Apache、Mariadb、PHP)已经配置好,能正常访问http
 二、安装Apache Ssl模块:  要安装Apache ssl模块,使用yum命令安装openssl、mod_ssl包即可:yum install openssl mod_ssl -y 三、配置ssl证书:1、查看证书位置:  安装好后,会生成一个啊ssl.conf文件,完整路径为:/etc/httpd/conf.d/ssl.conf,在此配置文件中能找到当前的配置证书路径。[root@aiezu.com ~]# cat /etc/httpd/conf.d/ssl.conf|grep ^SSLCertificate
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 2、生成新密钥和证书:  生成新证书前需要删除掉原来的证书,并让新证书的名称和路径与原证书相同,这样就无需修改ssl.conf配置文件即可完成证书修改。# 生成新私钥
cd /etc/pki/tls/private
rm -f localhost.key
openssl genrsa 1024 > localhost.key

# 生成新证书
cd /etc/pki/tls/certs/
rm -f localhost.crt
openssl req -new -x509 -days 365 -key /etc/pki/private/localhost.key -out localhost.crt 
在上面证书生成过程中,要交互输入如下信息:Country Name (2 letter code) [XX]: CN <--两位国家编码State or Province Name (full name) []: Hunan <--省、州名称Locality Name (eg, city) [Default City]: Changsha <-- 城市名称Organization Name (eg, company): aiezu.com <-- 机构单位名称Organizational Unit Name (eg, section) []:IT <-- 单位部门名称Common Name (eg, your name or your server's hostname) []:aiezu.com <--主机域名Email Address []:465272@qq.com <-- 电子邮箱 四、配置https虚拟主机:  下面以本站域名aiezu.com为例配置支持http、https的虚拟主机。使用vim编辑域名aiezu.com虚拟主机配置文件"/etc/httpd/conf.d/aiezu.com.conf",添加https 443端口的虚拟主机配置如下(17行开始的部分):<Directory /storage/web/aiezu.com>
AllowOverride All
Require all granted
</Directory>

<VirtualHost *:80>
AddDefaultCharset utf-8
ServerName aiezu.com
#强制将http 定向到 https
#Redirect permanent / https://aiezu.com/
ServerAdmin 465272@qq.com
DocumentRoot /storage/web/aiezu.com
CustomLog logs/aiezu.com-access combined
ErrorLog logs/aiezu.com-error
<IfModule mod_rewrite.c>
</IfModule>
</VirtualHost>

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

AddDefaultCharset utf-8
ServerName aiezu.com:443
ServerAdmin 465272@qq.com
DocumentRoot /storage/web/aiezu.com
CustomLog logs/aiezu.com-ssl-access combined
ErrorLog logs/aiezu.com-ssl-error
</VirtualHost> 五、重启Apache服务:  编辑好后,重启apache服务,即可通过https://aiezu.com访问了。service httpd restart 六、附录(免费DV证书):  由于我们自己生成的证书是未经权威证书颁发机构授权的,所有通过https访问的时候,浏览器会提示证书错误,需要申请权威机构授权的证书。下面提供一些免费申请地址:阿里云:https://common-buy.aliyun.com/?spm=5176.7968328.231195.1.7FheST&commodityCode=cas#/buy腾讯云:https://console.qcloud.com/ssl 查看全部

一、实验环境:

操作系统: CentOS Linux release 7.2.1511 (Core)
apache版本:Apache/2.4.6 (CentOS)
实验前提:Lamp(Linux、Apache、Mariadb、PHP)已经配置好,能正常访问http
 

二、安装Apache Ssl模块:

  要安装Apache ssl模块,使用yum命令安装openssl、mod_ssl包即可:
yum install openssl mod_ssl -y
 

三、配置ssl证书:

1、查看证书位置:

  安装好后,会生成一个啊ssl.conf文件,完整路径为:/etc/httpd/conf.d/ssl.conf,在此配置文件中能找到当前的配置证书路径。
[root@aiezu.com ~]# cat /etc/httpd/conf.d/ssl.conf|grep ^SSLCertificate
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
 

2、生成新密钥和证书:

  生成新证书前需要删除掉原来的证书,并让新证书的名称和路径与原证书相同,这样就无需修改ssl.conf配置文件即可完成证书修改。
# 生成新私钥
cd /etc/pki/tls/private
rm -f localhost.key
openssl genrsa 1024 > localhost.key

# 生成新证书
cd /etc/pki/tls/certs/
rm -f localhost.crt
openssl req -new -x509 -days 365 -key /etc/pki/private/localhost.key -out localhost.crt
 
在上面证书生成过程中,要交互输入如下信息:
  • Country Name (2 letter code) [XX]: CN <--两位国家编码
  • State or Province Name (full name) []: Hunan <--省、州名称
  • Locality Name (eg, city) [Default City]: Changsha <-- 城市名称
  • Organization Name (eg, company): aiezu.com <-- 机构单位名称
  • Organizational Unit Name (eg, section) []:IT <-- 单位部门名称
  • Common Name (eg, your name or your server's hostname) []:aiezu.com <--主机域名
  • Email Address []:465272@qq.com <-- 电子邮箱
 

四、配置https虚拟主机:

  下面以本站域名aiezu.com为例配置支持http、https的虚拟主机。使用vim编辑域名aiezu.com虚拟主机配置文件"/etc/httpd/conf.d/aiezu.com.conf",添加https 443端口的虚拟主机配置如下(17行开始的部分):
<Directory /storage/web/aiezu.com>
AllowOverride All
Require all granted
</Directory>

<VirtualHost *:80>
AddDefaultCharset utf-8
ServerName aiezu.com
#强制将http 定向到 https
#Redirect permanent / https://aiezu.com/
ServerAdmin 465272@qq.com
DocumentRoot /storage/web/aiezu.com
CustomLog logs/aiezu.com-access combined
ErrorLog logs/aiezu.com-error
<IfModule mod_rewrite.c>
</IfModule>
</VirtualHost>

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

AddDefaultCharset utf-8
ServerName aiezu.com:443
ServerAdmin 465272@qq.com
DocumentRoot /storage/web/aiezu.com
CustomLog logs/aiezu.com-ssl-access combined
ErrorLog logs/aiezu.com-ssl-error
</VirtualHost>
 

五、重启Apache服务:

  编辑好后,重启apache服务,即可通过https://aiezu.com访问了。
service httpd restart
 

六、附录(免费DV证书):

  由于我们自己生成的证书是未经权威证书颁发机构授权的,所有通过https访问的时候,浏览器会提示证书错误,需要申请权威机构授权的证书。下面提供一些免费申请地址:

html5 canvas 微信大转盘抽奖源码

微信源码liuliangsong 发表了文章 • 0 个评论 • 147 次浏览 • 2017-04-03 21:51 • 来自相关话题

用法介绍:  本源码简单易用,引用的js文件很少,需要改动的也很少,基本上可以说是拿来即用。转盘上奖品名字由js自动生成,无需在去动用PS软件,只需设置源码中turnplate对象的restaraunts、colors、icons三个数组即可(三个数组长度一致)。    var turnplate={
restaraunts:["5元现金", "谢谢参与", "小礼品一份","20元现金", "50元话费", "88元购物券"], //大转盘奖品名称
colors:["#FFF4D6", "#FFFFFF", "#FFF4D6", "#FFFFFF","#FFF4D6", "#FFFFFF"], //大转盘奖品区块对应图标ID
icons:["","icon-sorry","","","icon-recharge",""], //大转盘奖品区块对应背景颜色
outsideRadius:192, //大转盘外圆的半径
textRadius:155, //大转盘奖品位置距离圆心的距离
insideRadius:68, //大转盘内圆的半径
startAngle:0, //开始角度
bRotate:false //false:停止;ture:旋转
};
 演示图片:款式一


款式二



 下载地址: 查看全部

用法介绍:

  本源码简单易用,引用的js文件很少,需要改动的也很少,基本上可以说是拿来即用。转盘上奖品名字由js自动生成,无需在去动用PS软件,只需设置源码中turnplate对象的restaraunts、colors、icons三个数组即可(三个数组长度一致)。    
var turnplate={
restaraunts:["5元现金", "谢谢参与", "小礼品一份","20元现金", "50元话费", "88元购物券"], //大转盘奖品名称
colors:["#FFF4D6", "#FFFFFF", "#FFF4D6", "#FFFFFF","#FFF4D6", "#FFFFFF"], //大转盘奖品区块对应图标ID
icons:["","icon-sorry","","","icon-recharge",""], //大转盘奖品区块对应背景颜色
outsideRadius:192, //大转盘外圆的半径
textRadius:155, //大转盘奖品位置距离圆心的距离
insideRadius:68, //大转盘内圆的半径
startAngle:0, //开始角度
bRotate:false //false:停止;ture:旋转
};

 

演示图片:

  • 款式一
    html5_canvas大转盘抽奖源码(款式一).png
  • 款式二
    html5_canvas大转盘抽奖源码(款式二).png

 

下载地址:

windows下安装AnyProxy抓取移动App Http请求

Windowsllslx520 发表了文章 • 0 个评论 • 700 次浏览 • 2017-03-29 18:38 • 来自相关话题

  AnyProxy是阿里巴巴基于 Node.js 开发的一款开源代理服务器。做为中间代理服务器,它可以收集所有经过它的http请求流量(包括https明文内容);它提供了友好的web界面,便于直观的查看经过它的http请求;同时它支持二次开发,可以用javascript控制整个代理的全部流程,便于前端调试和收集http请求页面内容。它可以用于移动app和移动web页面调试、 抓取。
 一、实验环境:操作系统: Windows 10 X64位
AnyPorxy版本: 3.10.4
 二、安装Node.js:  从Node.js官网下载最新版或者稳定版Node.js的msi文件后,双击安装,知道安装完成即可。
  三、安装和启动AnyProxy:1、安装AnyProxy:  安装好Node.js后,在windows的命令提示符中输入下面命令安装AnyProxy,耐心等待直到安装完成:npm install -g anyproxy 2、生成根证书(RootCA):  https需要证书才能以明文的方式显示请求内容,所有这里我们必须生成根证书。在cmd命令提示符中运行下面命令生成根证书:anyproxy --root 3、启动AnyProxy代理监听服务:  通过”anyproxy -i“命令启动代理监听,其中”-i“参数启用https请求内容解析。anyproxy -i通过上面命令启动AnyProxy代理监听服务服务后,AnyProxy会打开两个端口:8001端口:即代理服务端口, 本机的IP和8001用于设置代理,如:192.168.0.119:80018002端口:AnyProxy的web界面,通过浏览器打开http://192.168.0.119:8002的形式,即可查看所有经过AnyProxy代理的http请求。




 四、设置代理(手机端):1、安装证书  我们需要在被代理的手机上安装证书,这样在AnyProxy上才能以明文的方式查看https请求内容。在手机上安装证书有两种方式:直接在手机浏览器中打开"http://ip:8002/fetchCrtFile"(IP换成安装AnyProxy机器的IP)在安装AnyProxy主机上打开”http://localhost:8002/qr_root“,然后用微信 扫描二维码,再通过微信在浏览器中打开的方式安装证书(必须在微信中跳转到浏览器中打开,否则弹不出安装证书对话框)。 2、设置代理(以ios举例):  在手机wifi设置中,手动设置http代理,在服务器中输入安装上面的代理IP,端口输入8001,保存即可。这样在此手机上所有的http请求(包括Web站点和收集app,如微信中的http请求),都会通过AnyProxy代理。在安装AnyProxy的电脑上,打开”http://localhost:8002”,即可看到所有被代理的http请求。 查看全部
  AnyProxy是阿里巴巴基于 Node.js 开发的一款开源代理服务器。做为中间代理服务器,它可以收集所有经过它的http请求流量(包括https明文内容);它提供了友好的web界面,便于直观的查看经过它的http请求;同时它支持二次开发,可以用javascript控制整个代理的全部流程,便于前端调试和收集http请求页面内容。它可以用于移动app和移动web页面调试、 抓取。
 

一、实验环境:

操作系统: Windows 10 X64位
AnyPorxy版本: 3.10.4
 

二、安装Node.js:

  从Node.js官网下载最新版或者稳定版Node.js的msi文件后,双击安装,知道安装完成即可。
  

三、安装和启动AnyProxy:

1、安装AnyProxy:

  安装好Node.js后,在windows的命令提示符中输入下面命令安装AnyProxy,耐心等待直到安装完成:
npm install -g anyproxy
 

2、生成根证书(RootCA):

  https需要证书才能以明文的方式显示请求内容,所有这里我们必须生成根证书。在cmd命令提示符中运行下面命令生成根证书:
anyproxy --root
 

3、启动AnyProxy代理监听服务:

  通过”anyproxy -i“命令启动代理监听,其中”-i“参数启用https请求内容解析。
anyproxy -i
通过上面命令启动AnyProxy代理监听服务服务后,AnyProxy会打开两个端口:
  • 8001端口:即代理服务端口, 本机的IP和8001用于设置代理,如:192.168.0.119:8001
  • 8002端口:AnyProxy的web界面,通过浏览器打开http://192.168.0.119:8002的形式,即可查看所有经过AnyProxy代理的http请求。

windows下安装AnyProxy.png

 

四、设置代理(手机端):

1、安装证书

  我们需要在被代理的手机上安装证书,这样在AnyProxy上才能以明文的方式查看https请求内容。在手机上安装证书有两种方式:
  1. 直接在手机浏览器中打开"http://ip:8002/fetchCrtFile"(IP换成安装AnyProxy机器的IP)
  2. 在安装AnyProxy主机上打开”http://localhost:8002/qr_root“,然后用微信 扫描二维码,再通过微信在浏览器中打开的方式安装证书(必须在微信中跳转到浏览器中打开,否则弹不出安装证书对话框)。
 

2、设置代理(以ios举例):

  在手机wifi设置中,手动设置http代理,在服务器中输入安装上面的代理IP,端口输入8001,保存即可。这样在此手机上所有的http请求(包括Web站点和收集app,如微信中的http请求),都会通过AnyProxy代理。在安装AnyProxy的电脑上,打开”http://localhost:8002”,即可看到所有被代理的http请求。
windows下安装AnyProxy_view.png

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

回复

Linuxllslx520 回复了问题 • 1 人关注 • 1 个回复 • 181 次浏览 • 2017-03-25 22:13 • 来自相关话题

CentOS 7 使用Yum方式安装配置vsftpd服务

CentOSllslx520 发表了文章 • 0 个评论 • 228 次浏览 • 2017-03-24 18:21 • 来自相关话题

  ftp是我们最常用的网络协议之一,用于方便的在网络中传输文件。vsftp是Linux平台轻量级的ftp服务软件,它小巧轻快、简单易用。本文介绍CentOS 7下使用yum安装配置vsftpd服务器,包括匿名登录方式、系统用户登录方式和虚拟用户登录三种登录方式的vsftpd服务配置。本文也适用于RHEL、Fedora、Oracle Linux 等其它Linux Redhat发行版本。一、实验环境:操作系统: CentOS Linux release 7.2.1511 (Core)CPU构架:x86_64 Vsftpd版本:vsftpd-3.0.2-21.el7 二、安装准备:1、关闭SELINUX:  SELINUX为Linux提供安全强化同时,也让Linux服务安装变得更复杂。未正确的为相关服务配置SELINUX,将导致服务无法正常运行。所以对于初学者来说,建议关闭SELINUX。vim /etc/selinux/config:#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加保存退出后,执行“setenforce 0”命令使配置立生效:setenforce 0 三、安装vsftpd服务:1、使用安装yum安装vsftpd:  使用“yum -y install vsftpd ”命令,会自动安装vsftpd命令和相关依赖包:yum -y install vsftpd2、备份vsftpd配置文件:cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak 四、方案一,配置匿名访问的vsftpd服务:1、配置vsftpd.conf文件:#允许匿名用户访问
anonymous_enable=YES
#禁止本地用户访问
local_enable=NO
#允许匿名用户创建目录
anon_mkdir_write_enable=YES
#允许匿名用户上传文件
anon_upload_enable=YES
#允许匿名用户执行其他写入操作,如删除
anon_other_write_enable=YES
#设置匿名用户根目录
anon_root=/ftp2、创建匿名用户目录:# /ftp/pub目录可写,/ftp目录不可写
mkdir -p /ftp/pub
chown -R ftp.ftp /ftp
chmod a-w /ftp3、启动vsftpd服务:[root@aiezu.com vsftpd]# service vsftpd start
Redirecting to /bin/systemctl start vsftpd.service4、测试:在另外一台服务器上连接ftp进行测试,使用匿名用户“anonymous”和任意包含"@"字符串的密码进行连接:[root@aiezu.com ~]# ftp xxx.xxx.xxx.xxx
Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx).
220 (vsFTPd 3.0.2)
Name (yyy.yyy.yyy.yyy:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (106,14,37,132,180,191).
150 Here comes the directory listing.
drwxr-xr-x 2 14 50 4096 Mar 24 15:01 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir ok
257 "/pub/ok" created
ftp> rm ok
250 Remove directory operation successful. 五、方案二,配置本地用户(系统)访问的vsftpd服务:1、配置主配置文件vsftpd.conf:#禁止匿名用户访问
anonymous_enable=NO
#允许本地用户访问
local_enable=YES
#允许写入操作
write_enable=YES
#禁止用户离开自己的用户根目录
chroot_local_user=YES
#启用用户名单列表
userlist_enable=YES
#设置用户名单列表为白名单(只允许名单中的用户连接到vsftpd)
userlist_deny=NO
#设置用户名单列表文件名
userlist_file=/etc/vsftpd/user_allow2、添加测试用户和设置权限:  添加用户testuser,设置密码后,添加到"/etc/vsftpd/user_allow"文件,并重启vsftpd服务:[root@aiezu.com ~]# mkdir -p /ftproot/testuser
[root@aiezu.com ~]# useradd -d /ftproot testuser -s /sbin/nologin
[root@aiezu.com ~]# chown -R testuser.testuser /ftproot/testuser
[root@aiezu.com ~]# chmod a-w /ftproot
[root@aiezu.com ~]# passwd testuser
Changing password for user testuser.
New password: (这里输入密码)
passwd: all authentication tokens updated successfully.
[root@aiezu.com ~]# echo "testuser" >> /etc/vsftpd/user_allow3、重启vsftpd服务:[root@aiezu.com ~]# service vsftpd restart
Redirecting to /bin/systemctl restart vsftpd.service4、测试:  在另外一台服务器上连接ftp进行测试,使用本地用户“testuser”和你设置的密码进行连接:[root@s2 ~]# ftp xxx.xxx.xxx.xxx
Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx).
220 (vsFTPd 3.0.2)
Name (yyy.yyy.yyy.yyy:root): testuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (106,14,37,132,223,218).
150 Here comes the directory listing.
drwxr-xr-x 2 1000 1000 4096 Mar 25 12:56 testuser
226 Directory send OK.
ftp> mkdir aa
550 Create directory operation failed.
ftp> cd testuser
250 Directory successfully changed.
ftp> mkdir aa
257 "/testuser/aa" created
ftp> dir
227 Entering Passive Mode (106,14,37,132,89,105).
150 Here comes the directory listing.
drwxr-xr-x 2 1000 1000 4096 Mar 25 12:58 aa
226 Directory send OK. 六、方案三,配置虚拟用户访问的vsftpd服务(推荐方式):1、创建虚拟用户密码文件,奇数行为用户名,偶数行为密码:touch /etc/vsftpd/vir_user.txt
echo -e "aiezuuser\naiezu123" >> /etc/vsftpd/vir_user.txt
2、生成虚拟用户数据库:yum -y install libdb-utils
db_load -T -t hash -f /etc/vsftpd/vir_user.txt /etc/vsftpd/vir_user.db
3、配置vsftpd pam验证文件/etc/pam.d/vsftpd:mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
cat <<END > /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vir_user
account required pam_userdb.so db=/etc/vsftpd/vir_user
END
4、修改虚拟数据库文件vir_user.db的权限为700:chmod 700 /etc/vsftpd/vir_user.db
5、增加一个系统用户virftp ,所有虚拟用户都会映射到此用户后对文件系统进行读写操作:
mkdir /ftprootuseradd -d /ftproot virftp -s /sbin/nologin
chown -R virftp.virftp /ftproot
6、设置vsftpd主配置文件/etc/vsftpd/vsftpd.conf:#禁止匿名用户登录
anonymous_enable=NO
#允许本地用户登录
local_enable=YES
#启用虚拟账户
guest_enable=YES
#把虚拟账户映射到系统账户virftp
guest_username=virftp
#使用虚拟用户验证(PAM验证)
pam_service_name=vsftpd
#设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为他的配置文件)
user_config_dir=/etc/vsftpd/vsftpd_viruser
#启用chroot时,虚拟用户根目录允许写入
allow_writeable_chroot=YES
7、设置虚拟用户各自的配置文件:mkdir /etc/vsftpd/vsftpd_viruser/
#配置文件名同虚拟账户名
touch /etc/vsftpd/vsftpd_viruser/aiezuuser
mkdir -p /ftproot/aiezuuser/
chown -R virftp.virftp /ftproot/aiezuuser/
8、在虚拟用户 aiezuuser 的配置文件中写入如下配置/etc/vsftpd/vsftpd_viruser/aiezuuser:# 允许写入
write_enable=YES
#允许浏览FTP目录和下载
anon_world_readable_only=NO
# 允许虚拟用户aiezuuser上传文件
anon_upload_enable=YES
# 允许虚拟用户创建目录
anon_mkdir_write_enable=YES
# 允许虚拟用户aiezuuser执行其他操作(如改名、删除)
anon_other_write_enable=YES
# 上传文件的掩码,如022时,上传目录权限为755,文件权限为644
anon_umask=022
# 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录)
local_root=/ftproot/aiezuuser/
9、重启vsftpd服务:service vsftpd restart 
10、使用虚拟用户aiezuuser和密码aiezu123进行连接vsftpd测试: [root@S2 ~]# ftp xxx.xxx.xxx.xxx
Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx).
220 (vsFTPd 3.0.2)
Name (yyy.yyy.yyy.yyy:root): aiezuuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir aa
257 "/aa" created
ftp> mkdir bb
257 "/bb" created
ftp> ls
227 Entering Passive Mode (106,14,37,132,129,241).
150 Here comes the directory listing.
drwx------ 2 1000 1000 4096 Mar 25 14:36 aa
drwx------ 2 1000 1000 4096 Mar 25 14:36 bb
226 Directory send OK. 七、常见问题:问题一:连接到vsftpd服务器时,提示:500 OOPS: vsftpd: refusing to run with writable root inside chroot()解决方法:请参考http://aiezu.com/question/112.html 
  八、附录:1、vsftpd相关目录和文件介绍:/etc/vsftpd/vsftpd.conf:vsftpd服务主配置文件;/etc/vsftpd/ftpusers:设置不允许访问ftp服务的系统用户(黑名单),一行一个用户名;/etc/vsftpd/user_list:用于设置允许或禁止访问vsftpd服务的系统用户名单,主配置文件的“userlist_enable”参数决定此名单是否生效,“userlist_deny”参数决定此名单是黑名单还是白名单;/etc/pam.d/vsftpd:vsftpd的pam模块的配置文件,用来认证身份和阻止特定用户;/usr/sbin/vsftpd:vsftpd的主要执行文件;/var/ftp:vsftpd的默认匿名用户登录的根目录。 2、主配置文件vsftpd.conf相关参数介绍:  vsftpd的配置参数很多,我们可以通过man 5 vsftpd.conf命令获取到vsftpd.conf配置文件的详细帮助信息。下面介绍一些vsftpd常用的参数。
①. vsftpd服务全局相关参数:参数描述connect_from_port_20=YES|NO是否使用20号端口做为ftp-data的端口号listen_port=21设置vsftpd服务监听的端口号listen=YES|NO设置vsftpd是否stand alone方式启动pasv_enable=YES|NO是否开启被动模式pasv_max_port=0
pasv_min_port=0设置被动模式(passive mode)使用的端口范围,为0时不受限制max_Clients=0当vsftpd以stand alone运行时,用来设置最大同时在线数max_per_ip=0用于设置同一IP允许的同时最大连接数idle_session_timeout=300如果用户300秒内没有命令操作,则强制离线ftpd_banner="欢迎信息"
banner_file=/path/file通过字符串或者文件的方式设置连接到vsftpd服务器时的欢迎信息dirmessange_enable=YES|NO
message_file=.message配置ftp进入目录时显示目录下某个文件的内容做为提示信息ascii_download_enable=YES|NO
ascii_upload_enable=YES|NO是否允许ascii方式传输xferlog_enable=YES|NO
xferlog_file=/var/log/vsftpd.log是否记录用户下载上传的文件②. vsftpd用户、权限相关参数:参数描述write_enable=YES|NO用来设置是否允许用户上传文件guest_username=ftp指定来宾用户身份的用户名guest_enable=YES|NO是否将非匿名用户映射成来宾用户。local_enable=YES|NO是否允许/etc/passwd中的用户以实体用户的身份登录到ftp服务器。local_max_rate=0设置最大传输速度,单位为bytes/schroot_local_user=YES|NO
chroot_list_enable=YES|NO
chroot_list_file=/etc/vsftpd/chroot_list用来设置哪些用户被限制在自己的目录内无法离开allow_writeable_chroot=YES|NO启用chroot时用户根目录是否允许写入,默认否userlist_enable=YES|NO
userlist_deny=YES|NO
userlist_file=/etc/vsftpd/user_list用来阻止或者允许相关用户登录到vsftpd服务器;  
userlist_file:指定允许或禁止访问vsftpd服务的系统用户名单文件;
userlist_enable:决定名单是否生效;
userlist_deny:决定此名单是黑名单还是白名单;anonymous_enable=YES|NO是否允许anonymouns用户登录到vsftpd服务器anon_root=/var/ftp设置匿名用户根目录anon_world_readable_only=YES|NO匿名用户是否只允许下载可读的文件anon_mkdir_write_enable=YES|NO
anon_upload_enable=YES|NO
anon_other_write_enable=YES|NO设置匿名用户的写入权限no_anon_password=YES|NOanonymous登录时是否可以省略密码。
(匿名用户使用用户名“anonymous”,密码使用任意包含“@”字符的字符串登陆)anon_max_rate=0设置anonymous的最大传输速度。anon_umask=077anonymous用户上传文件的权限掩码。 查看全部
  ftp是我们最常用的网络协议之一,用于方便的在网络中传输文件。vsftp是Linux平台轻量级的ftp服务软件,它小巧轻快、简单易用。本文介绍CentOS 7下使用yum安装配置vsftpd服务器,包括匿名登录方式、系统用户登录方式和虚拟用户登录三种登录方式的vsftpd服务配置。本文也适用于RHEL、Fedora、Oracle Linux 等其它Linux Redhat发行版本。

一、实验环境:

 

二、安装准备:

1、关闭SELINUX:

  SELINUX为Linux提供安全强化同时,也让Linux服务安装变得更复杂。未正确的为相关服务配置SELINUX,将导致服务无法正常运行。所以对于初学者来说,建议关闭SELINUX。vim /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
保存退出后,执行“setenforce 0”命令使配置立生效:
setenforce 0
 

三、安装vsftpd服务:

1、使用安装yum安装vsftpd:

  使用“yum -y install vsftpd ”命令,会自动安装vsftpd命令和相关依赖包:
yum -y install vsftpd

2、备份vsftpd配置文件:

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

四、方案一,配置匿名访问的vsftpd服务:

1、配置vsftpd.conf文件:

#允许匿名用户访问
anonymous_enable=YES
#禁止本地用户访问
local_enable=NO
#允许匿名用户创建目录
anon_mkdir_write_enable=YES
#允许匿名用户上传文件
anon_upload_enable=YES
#允许匿名用户执行其他写入操作,如删除
anon_other_write_enable=YES
#设置匿名用户根目录
anon_root=/ftp

2、创建匿名用户目录:

# /ftp/pub目录可写,/ftp目录不可写
mkdir -p /ftp/pub
chown -R ftp.ftp /ftp
chmod a-w /ftp

3、启动vsftpd服务:

[root@aiezu.com vsftpd]# service vsftpd start
Redirecting to /bin/systemctl start vsftpd.service

4、测试:

在另外一台服务器上连接ftp进行测试,使用匿名用户“anonymous”和任意包含"@"字符串的密码进行连接:
[root@aiezu.com ~]# ftp xxx.xxx.xxx.xxx
Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx).
220 (vsFTPd 3.0.2)
Name (yyy.yyy.yyy.yyy:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (106,14,37,132,180,191).
150 Here comes the directory listing.
drwxr-xr-x 2 14 50 4096 Mar 24 15:01 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir ok
257 "/pub/ok" created
ftp> rm ok
250 Remove directory operation successful.
 

五、方案二,配置本地用户(系统)访问的vsftpd服务:

1、配置主配置文件vsftpd.conf:

#禁止匿名用户访问
anonymous_enable=NO
#允许本地用户访问
local_enable=YES
#允许写入操作
write_enable=YES
#禁止用户离开自己的用户根目录
chroot_local_user=YES
#启用用户名单列表
userlist_enable=YES
#设置用户名单列表为白名单(只允许名单中的用户连接到vsftpd)
userlist_deny=NO
#设置用户名单列表文件名
userlist_file=/etc/vsftpd/user_allow

2、添加测试用户和设置权限:

  添加用户testuser,设置密码后,添加到"/etc/vsftpd/user_allow"文件,并重启vsftpd服务:
[root@aiezu.com ~]# mkdir -p /ftproot/testuser
[root@aiezu.com ~]# useradd -d /ftproot testuser -s /sbin/nologin
[root@aiezu.com ~]# chown -R testuser.testuser /ftproot/testuser
[root@aiezu.com ~]# chmod a-w /ftproot
[root@aiezu.com ~]# passwd testuser
Changing password for user testuser.
New password: (这里输入密码)
passwd: all authentication tokens updated successfully.
[root@aiezu.com ~]# echo "testuser" >> /etc/vsftpd/user_allow

3、重启vsftpd服务:

[root@aiezu.com ~]# service vsftpd restart
Redirecting to /bin/systemctl restart vsftpd.service

4、测试:

  在另外一台服务器上连接ftp进行测试,使用本地用户“testuser”和你设置的密码进行连接:
[root@s2 ~]# ftp xxx.xxx.xxx.xxx
Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx).
220 (vsFTPd 3.0.2)
Name (yyy.yyy.yyy.yyy:root): testuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (106,14,37,132,223,218).
150 Here comes the directory listing.
drwxr-xr-x 2 1000 1000 4096 Mar 25 12:56 testuser
226 Directory send OK.
ftp> mkdir aa
550 Create directory operation failed.
ftp> cd testuser
250 Directory successfully changed.
ftp> mkdir aa
257 "/testuser/aa" created
ftp> dir
227 Entering Passive Mode (106,14,37,132,89,105).
150 Here comes the directory listing.
drwxr-xr-x 2 1000 1000 4096 Mar 25 12:58 aa
226 Directory send OK.
 

六、方案三,配置虚拟用户访问的vsftpd服务(推荐方式):

1、创建虚拟用户密码文件,奇数行为用户名,偶数行为密码:
touch /etc/vsftpd/vir_user.txt
echo -e "aiezuuser\naiezu123" >> /etc/vsftpd/vir_user.txt

2、生成虚拟用户数据库:
yum -y install libdb-utils 
db_load -T -t hash -f /etc/vsftpd/vir_user.txt /etc/vsftpd/vir_user.db

3、配置vsftpd pam验证文件/etc/pam.d/vsftpd:
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
cat <<END > /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vir_user
account required pam_userdb.so db=/etc/vsftpd/vir_user
END

4、修改虚拟数据库文件vir_user.db的权限为700:
chmod 700 /etc/vsftpd/vir_user.db

5、增加一个系统用户virftp ,所有虚拟用户都会映射到此用户后对文件系统进行读写操作:
mkdir /ftproot
useradd -d /ftproot virftp -s /sbin/nologin
chown -R virftp.virftp /ftproot

6、设置vsftpd主配置文件/etc/vsftpd/vsftpd.conf:
#禁止匿名用户登录
anonymous_enable=NO
#允许本地用户登录
local_enable=YES
#启用虚拟账户
guest_enable=YES
#把虚拟账户映射到系统账户virftp
guest_username=virftp
#使用虚拟用户验证(PAM验证)
pam_service_name=vsftpd
#设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为他的配置文件)
user_config_dir=/etc/vsftpd/vsftpd_viruser
#启用chroot时,虚拟用户根目录允许写入
allow_writeable_chroot=YES

7、设置虚拟用户各自的配置文件:
mkdir /etc/vsftpd/vsftpd_viruser/
#配置文件名同虚拟账户名
touch /etc/vsftpd/vsftpd_viruser/aiezuuser
mkdir -p /ftproot/aiezuuser/
chown -R virftp.virftp /ftproot/aiezuuser/

8、在虚拟用户 aiezuuser 的配置文件中写入如下配置/etc/vsftpd/vsftpd_viruser/aiezuuser:
# 允许写入
write_enable=YES
#允许浏览FTP目录和下载
anon_world_readable_only=NO
# 允许虚拟用户aiezuuser上传文件
anon_upload_enable=YES
# 允许虚拟用户创建目录
anon_mkdir_write_enable=YES
# 允许虚拟用户aiezuuser执行其他操作(如改名、删除)
anon_other_write_enable=YES
# 上传文件的掩码,如022时,上传目录权限为755,文件权限为644
anon_umask=022
# 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录)
local_root=/ftproot/aiezuuser/

9、重启vsftpd服务:
service vsftpd restart
 
10、使用虚拟用户aiezuuser和密码aiezu123进行连接vsftpd测试: 
[root@S2 ~]# ftp xxx.xxx.xxx.xxx
Connected to xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx).
220 (vsFTPd 3.0.2)
Name (yyy.yyy.yyy.yyy:root): aiezuuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir aa
257 "/aa" created
ftp> mkdir bb
257 "/bb" created
ftp> ls
227 Entering Passive Mode (106,14,37,132,129,241).
150 Here comes the directory listing.
drwx------ 2 1000 1000 4096 Mar 25 14:36 aa
drwx------ 2 1000 1000 4096 Mar 25 14:36 bb
226 Directory send OK.
 

七、常见问题:

问题一:连接到vsftpd服务器时,提示:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()
解决方法:请参考http://aiezu.com/question/112.html 
  

八、附录:

1、vsftpd相关目录和文件介绍:

  • /etc/vsftpd/vsftpd.conf:vsftpd服务主配置文件;
  • /etc/vsftpd/ftpusers:设置不允许访问ftp服务的系统用户(黑名单),一行一个用户名;
  • /etc/vsftpd/user_list:用于设置允许或禁止访问vsftpd服务的系统用户名单,主配置文件的“userlist_enable”参数决定此名单是否生效,“userlist_deny”参数决定此名单是黑名单还是白名单;
  • /etc/pam.d/vsftpd:vsftpd的pam模块的配置文件,用来认证身份和阻止特定用户;
  • /usr/sbin/vsftpd:vsftpd的主要执行文件;
  • /var/ftp:vsftpd的默认匿名用户登录的根目录。
 

2、主配置文件vsftpd.conf相关参数介绍:

  vsftpd的配置参数很多,我们可以通过man 5 vsftpd.conf命令获取到vsftpd.conf配置文件的详细帮助信息。下面介绍一些vsftpd常用的参数。
①. vsftpd服务全局相关参数:
参数描述
connect_from_port_20=YES|NO是否使用20号端口做为ftp-data的端口号
listen_port=21设置vsftpd服务监听的端口号
listen=YES|NO设置vsftpd是否stand alone方式启动
pasv_enable=YES|NO是否开启被动模式
pasv_max_port=0
pasv_min_port=0
设置被动模式(passive mode)使用的端口范围,为0时不受限制
max_Clients=0当vsftpd以stand alone运行时,用来设置最大同时在线数
max_per_ip=0用于设置同一IP允许的同时最大连接数
idle_session_timeout=300如果用户300秒内没有命令操作,则强制离线
ftpd_banner="欢迎信息"
banner_file=/path/file
通过字符串或者文件的方式设置连接到vsftpd服务器时的欢迎信息
dirmessange_enable=YES|NO
message_file=.message
配置ftp进入目录时显示目录下某个文件的内容做为提示信息
ascii_download_enable=YES|NO
ascii_upload_enable=YES|NO
是否允许ascii方式传输
xferlog_enable=YES|NO
xferlog_file=/var/log/vsftpd.log
是否记录用户下载上传的文件
②. vsftpd用户、权限相关参数:
参数描述
write_enable=YES|NO用来设置是否允许用户上传文件
guest_username=ftp指定来宾用户身份的用户名
guest_enable=YES|NO是否将非匿名用户映射成来宾用户。
local_enable=YES|NO是否允许/etc/passwd中的用户以实体用户的身份登录到ftp服务器。
local_max_rate=0设置最大传输速度,单位为bytes/s
chroot_local_user=YES|NO
chroot_list_enable=YES|NO
chroot_list_file=/etc/vsftpd/chroot_list
用来设置哪些用户被限制在自己的目录内无法离开
allow_writeable_chroot=YES|NO启用chroot时用户根目录是否允许写入,默认否
userlist_enable=YES|NO
userlist_deny=YES|NO
userlist_file=/etc/vsftpd/user_list
用来阻止或者允许相关用户登录到vsftpd服务器;  
userlist_file:指定允许或禁止访问vsftpd服务的系统用户名单文件;
userlist_enable:决定名单是否生效;
userlist_deny:决定此名单是黑名单还是白名单;
anonymous_enable=YES|NO是否允许anonymouns用户登录到vsftpd服务器
anon_root=/var/ftp设置匿名用户根目录
anon_world_readable_only=YES|NO匿名用户是否只允许下载可读的文件
anon_mkdir_write_enable=YES|NO
anon_upload_enable=YES|NO
anon_other_write_enable=YES|NO
设置匿名用户的写入权限
no_anon_password=YES|NOanonymous登录时是否可以省略密码。
(匿名用户使用用户名“anonymous”,密码使用任意包含“@”字符的字符串登陆)
anon_max_rate=0设置anonymous的最大传输速度。
anon_umask=077anonymous用户上传文件的权限掩码。

Chrome图片上传字段弹出图片选择框十分慢

回复

Javascriptllslx520 回复了问题 • 1 人关注 • 1 个回复 • 182 次浏览 • 2017-03-08 18:08 • 来自相关话题