通知设置 新通知
Linux Vim代码格式化/美化插件vim-autoformat安装
Linux • llslx520 发表了文章 • 0 个评论 • 3966 次浏览 • 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键设置为代码格式话键。"F3自动格式化代码
noremap <F3> :Autoformat<CR>
let g:autoformat_verbosemode=1也可以通过下面方式,设置保存时自动对指定格式代码进行格式化,或对所有格式进行格式化。"保存时自动格式化代码,针对所有支持的文件
au BufWrite * :Autoformat
"保存时自动格式化PHP代码
"au BufWrite *.php :Autoformat
还可以对指定后缀的文件名,使用指定的格式化话工具。如下为html文件指定格式化工具和参数:<!-- 指定html格式化工具,并设置缩进为两个空格 -->
let g:formatdef_my_html = '"html-beautify -s 2"'
let g:formatters_html = ['my_html'] 三、安装各语言格式化支持工具:1、html、Javascript/JSON、css: htm、js、css 格式化命令分别为html-beautify、js-beautify、css-beautify:yum -y install epel-release
yum -y install npm
npm -g install js-beautify
npm -g install html-beautify
npm -g install css-beautify
#注意:在高版本,html-beautify、css-beautify,集中在js-beautify里面了,只要安装js-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插件管理器: 为了方便插件安装,我们需要先安装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键设置为代码格式话键。"F3自动格式化代码
noremap <F3> :Autoformat<CR>
let g:autoformat_verbosemode=1也可以通过下面方式,设置保存时自动对指定格式代码进行格式化,或对所有格式进行格式化。"保存时自动格式化代码,针对所有支持的文件
au BufWrite * :Autoformat
"保存时自动格式化PHP代码
"au BufWrite *.php :Autoformat
还可以对指定后缀的文件名,使用指定的格式化话工具。如下为html文件指定格式化工具和参数:<!-- 指定html格式化工具,并设置缩进为两个空格 -->
let g:formatdef_my_html = '"html-beautify -s 2"'
let g:formatters_html = ['my_html'] 三、安装各语言格式化支持工具:1、html、Javascript/JSON、css: htm、js、css 格式化命令分别为html-beautify、js-beautify、css-beautify:yum -y install epel-release
yum -y install npm
npm -g install js-beautify
npm -g install html-beautify
npm -g install css-beautify
#注意:在高版本,html-beautify、css-beautify,集中在js-beautify里面了,只要安装js-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的正常运行。
还可以对指定后缀的文件名,使用指定的格式化话工具。如下为html文件指定格式化工具和参数:
一、安装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()添加好并保存后,重新运行vim命令,在vim中运行:PluginInstall命令即可完成vim-autoformat插件的安装。
" Vundle 本身就是一个插件
Plugin 'gmarik/Vundle.vim'
Plugin 'Chiel92/vim-autoformat'
"所有插件都应该在这一行之前
call vundle#end()
2、配置vim-autoformat插件:
在~/.vimrc文件末尾添加下面内容,将F3键设置为代码格式话键。"F3自动格式化代码也可以通过下面方式,设置保存时自动对指定格式代码进行格式化,或对所有格式进行格式化。
noremap <F3> :Autoformat<CR>
let g:autoformat_verbosemode=1
"保存时自动格式化代码,针对所有支持的文件
au BufWrite * :Autoformat
"保存时自动格式化PHP代码
"au BufWrite *.php :Autoformat
还可以对指定后缀的文件名,使用指定的格式化话工具。如下为html文件指定格式化工具和参数:
<!-- 指定html格式化工具,并设置缩进为两个空格 -->
let g:formatdef_my_html = '"html-beautify -s 2"'
let g:formatters_html = ['my_html']
三、安装各语言格式化支持工具:
1、html、Javascript/JSON、css:
htm、js、css 格式化命令分别为html-beautify、js-beautify、css-beautify:yum -y install epel-release
yum -y install npm
npm -g install js-beautify
npm -g install html-beautify
npm -g install css-beautify
#注意:在高版本,html-beautify、css-beautify,集中在js-beautify里面了,只要安装js-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安装和使用
Linux • llslx520 发表了文章 • 0 个评论 • 1341 次浏览 • 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插件: 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
下面命令在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提示:如果使用粘贴方法复制到到.vimrc发现格式混乱,可以在shell中使用"cat <<END> ~/.vimrc"命令,然后粘贴代码,在输出"END"回车即可。
" 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
三、安装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关键词的插件。 |
Vim快速为PHP代码文件头添加copyright版权信息
PHP • llslx520 发表了文章 • 0 个评论 • 874 次浏览 • 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,恭喜,神奇的一幕发生了。 查看全部
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上面代码中的append函数的第一个参数是在指定的行后面插入内容,这里从第一行后面开始插入(第一行留给"<?php")。
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
小贴士:如果上面的代码粘贴到vim中格式乱了,可以使用shell中输入"cat <<END>> ~/.vimrc"回车,再粘贴代码,再输入字符"END",完成追加代码到文件。
2、 快速添加版权信息测试:
按上面要求修改~/.vimrc文件并保存后,使用vim随便打开一个php文件,按F4,恭喜,神奇的一幕发生了。Linux下Apache配置ssl让其支持https协议
Linux • llslx520 发表了文章 • 0 个评论 • 1152 次浏览 • 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 查看全部
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访问的时候,浏览器会提示证书错误,需要申请权威机构授权的证书。下面提供一些免费申请地址:- 阿里云:https://common-buy.aliyun.com/?spm=5176.7968328.231195.1.7FheST&commodityCode=cas#/buy
- 腾讯云:https://console.qcloud.com/ssl
html5 canvas 微信大转盘抽奖源码
微信源码 • liuliangsong 发表了文章 • 0 个评论 • 978 次浏览 • 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:旋转
};
演示图片:款式一
款式二
下载地址: 查看全部
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:旋转
};
演示图片:
- 款式一
- 款式二
下载地址:
windows下安装AnyProxy抓取移动App Http请求
Windows • llslx520 发表了文章 • 0 个评论 • 11388 次浏览 • 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请求。 查看全部
一、实验环境:操作系统: 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页面调试、 抓取。
AnyPorxy版本: 3.10.4
一、实验环境:
操作系统: 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请求。
四、设置代理(手机端):
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请求。500 OOPS: vsftpd: refusing to run with writable root inside chroot()
回复Linux • llslx520 回复了问题 • 1 人关注 • 1 个回复 • 1266 次浏览 • 2017-03-25 22:13
CentOS 7 使用Yum方式安装配置vsftpd服务
CentOS • llslx520 发表了文章 • 0 个评论 • 1865 次浏览 • 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用户上传文件的权限掩码。 查看全部
#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发行版本。
2、生成虚拟用户数据库:
3、配置vsftpd pam验证文件/etc/pam.d/vsftpd:
4、修改虚拟数据库文件vir_user.db的权限为700:
5、增加一个系统用户virftp ,所有虚拟用户都会映射到此用户后对文件系统进行读写操作:
mkdir /ftproot
6、设置vsftpd主配置文件/etc/vsftpd/vsftpd.conf:
7、设置虚拟用户各自的配置文件:
8、在虚拟用户 aiezuuser 的配置文件中写入如下配置/etc/vsftpd/vsftpd_viruser/aiezuuser:
9、重启vsftpd服务:
10、使用虚拟用户aiezuuser和密码aiezu123进行连接vsftpd测试:
①. vsftpd服务全局相关参数:
②. vsftpd用户、权限相关参数:
一、实验环境:
- 操作系统: 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 #注释掉保存退出后,执行“setenforce 0”命令使配置立生效:
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
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 | 是否记录用户下载上传的文件 |
参数 | 描述 |
---|---|
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|NO | anonymous登录时是否可以省略密码。 (匿名用户使用用户名“anonymous”,密码使用任意包含“@”字符的字符串登陆) |
anon_max_rate=0 | 设置anonymous的最大传输速度。 |
anon_umask=077 | anonymous用户上传文件的权限掩码。 |