Ubuntu vsftpd 服务器的安装和简单配置

一、初衷

由于写博客可能需要图片,而在网上找了一下资料,虽然国内都有提供一些免费的云存储,如又拍,七牛,但是这又拍需要手机认证,而七牛更严格地需要身份验证,虽然写博客并不是为了什么,但是也不想提供一些真实的资料。而对于国外的云存储,如GoogleDrive,OneDrive,Dropbox,还有其他一些提供图床服务的网站,基本上都被墙。
另外,这些网站提供的外链方式获取比较麻烦,而本身图片也不多,因此就想在vps建立一个ftp服务器,把图片保存在上面,然后再建立一个虚拟主机,如img.gulucn.tk,这样也可以获取到图片。

二、部署

安装vsftpd

apt-get install vsftpd

修改vsftpd.conf配置

打开或增加以下配置

listen=YES
listen_port=xxx # 监听端口
anonymous_enable=NO # 禁止匿名访问
local_enable=YES #允许本地用户访问
write_enable=YES #允许本地用户修改和删除
local_umask=022 #默认的umask码
local_root=/var/www/ftpdata # 登录固定到 /var/www/ftpdata目录
max_clients=3 # 最大连接
dirmessage_enable=YES #当切换目录时,是否显示该目录下message隐藏文件的内容
use_localtime=YES
idle_session_timeout=600
data_connection_timeout=120
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem 

有一些配置已默认打开

增加ftpuser用户

useradd -s /usr/sbin/nologin ftpuser
passwd ftpuser

禁止切换到主目录外的其他目录

  1. 需要修改vsftpd.conf配置

    chroot_local_user=NO  
    chroot_list_enable=YES  
    chroot_list_file=/etc/vsftpd.chroot_list     
    

    这三个选项不同的配置将会有不同的效果,具体可以查看对chroot_list_file=/etc/vsftpd.chroot_list的一点说明

  2. 在/etc/vsftpd.chroot_list增加ftpuser用户

调整文件夹权限

如果直接启动服务器与测试,使用ftpuser用户登录时,可能会出现以下错误

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

因此,需要修改 /var/www/ftpdata权限与建立一个子目录

chmod a-w /var/www/ftpdata/  
mkdir images  
chonw -R ftpuser.ftpuser images/  

在使用ftpuser用户上传图片时,只能上面到images文件夹

启动与闭关

启动vsftpd

service vsftpd start

关闭vsftpd

service vsftpd stop

三、设置图片虚拟主机

在apache2中增加一个虚拟主机,用来访问这些图片

<VirtualHost *:80>
        ServerName img.gulucn.tk

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/ftpdata/images


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

这样,上存到ftp的图片就可以用img.gulucn.tk/xxxx来访问