之前在公司搭建了一个静态资源服务器,现在来记录一下
我们是通过搭建vsftp服务,然后结合apache。访问方式为http的方式
http://www.eetop.cn/blog/html/03/885803-39346.html
一: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
四:设置使用虚拟用户能够上传、下载、建立文件
首先这里我们要建立一个虚拟用户口令的文本文件,格式是:
奇数行为用户名
偶数行是密码
下面是我生产的例子:
[root@filesvr vsftpd]# cat vuser
app-----------------------------》虚拟用户的名字
bbqqaakkdl--------------------》用户的口令
这里我们可以设置不同的虚拟用户专属不同的文件目录,同时你也可以设置不同的用户角色权限
比说说我们现在再创建一个虚拟用户
[root@filesvr vsftpd]# cat vuser
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.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。(http://linux.it.net.cn/e/server/ftp/2015/0227/13554.html)
但是我当前的版本是2.2.2的。所以这里我就把这个参数去掉就好了
然后我们就可以访问测试一下
我发现创建和删除文件都是没有问题的
这里vsftpd的安装配置工作就完成了,接下来要做的就是给他装上一个apache,方便我们的后台程序使用http的方式来调用
yum -y install httpd
cd /etc/httpd/conf.d
vim ftp.conf
<VirtualHost *:8001>
ServerAdmin huml@yizhenmoney.com
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访问成功