ubuntu 14.04 搭建vsftpd

什么是vsftpd?

vsftpd 的名字代表”very secure FTP daemon”, 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。
而如果你不知道什么是FTP,那么可以百度。

本文目的

在ubuntu 14.04上搭建一个ftp server,同时设置几个账户,使得该账户只能访问服务器指定目录下的内容,拥有下载的权利,但是无法修改server上的文件内容。

步骤

1.安装vsftpd

sudo apt-get update 
sudo apt-get install vsftpd

2.启动,关闭vsftpd

sudo service vsftpd status//查看vsftpd状态
sudo service vsftpd start//启动vsftpd
sudo service vsftpd stop//关闭vsftpd
sudo service vsftpd restart//重新启动vsftpd

上面几条命令是让你确保vsftpd进程已经启动,有的时候启动失败可能是端口21被占据,可以利用如下命令查看占据21端口的进程。

sudo netstat -naplt |grep 21
//运行结果如下则正常
tcp  0  0 0.0.0.0:21    0.0.0.0:*    LISTEN      2717/vsftpd 

3.配置/etc/vsftpd.conf文件

#如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求
listen=YES
#不允许匿名访问,匿名访问者的用户名和密码均为ftp
anonymous_enable=NO
#允许本地用户(即linux系统中的用户帐号)登录FTP服务器
local_enable=YES
#允许本地用户对FTP服务器文件具有写权限
write_enable=NO
#不允许匿名用户上传文件
anon_upload_enable=NO
#不允许匿名用户新建文件夹
anon_mkdir_write_enable=NO
# 是否激活目录欢迎信息功能
# 当用户用CMD模式首次访问服务器上某个目录时,FTP服务器将显示欢迎信息
# 默认情况下,欢迎信息是通过该目录下的.message文件获得的
# 此文件保存自定义的欢迎信息,由用户自己建立
dirmessage_enable=YES
#使用当地本机时间
use_localtime=YES
#让系统自动维护上传和下载的日志文件
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
#登录欢迎信息
ftpd_banner=Welcome to work9.
#所有用户均不允许自由访问其他目录
chroot_local_user=YES
#这两句配套使用,存在特殊用户可以访问服务器其他目录
,用户名存放在/etc/vsftpd/chroot_list中
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#指定用户登录服务器后所在目录
#注意需要将该目录的权限修改为555,即sudo chmod 555 ./
local_root=/home/work9/文档/work9
secure_chroot_dir=/var/run/vsftpd/empty
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#允许虚拟用户访问
guest_enable=YES
#指定虚拟用户对应的服务器本地系统用户名
guest_username=virtual
#虚拟用户配置文件夹 
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#虚拟用户数据库
pam_service_name=/etc/pam.d/vsftpd.vu

以上就是我的配置文件了。给个建议,先对原始的配置文件进行备份,比如:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bake

然后最好是按照上面的一个一个添加,测试vsftpd是否运行正常,否则
不是很容易发现问题在哪里。

4.建立虚拟用户数据库

//下载一个数据库
sudo apt-get install db5.1-util
//生成一个用户和密码的文件,奇数行是用户名,偶数行密码
sudo vim login.txt
//生成文件夹
sudo mkdir /etc/vsftpd
//chroot_list里存放这可以访问服务器中其他目录的用户名
sudo vim /etc/vsftpd/chroot_list
//使用db_load命令生成口令库文件
sudo db5.1_load -T -t hash -f login.txt /etc/vsftpd/vsftpd_login.db
//建立虚拟用户访问所需要的目录并且设定相应的访问权限,这里增加了一个用户名"virtual"的本地账户,因此在配置文件/etc/vsftpd.conf中是"guest_username=virtual"
sudo mkdir /home/ftp
sudo useradd -d /home/ftp/ virtual
sudo chmod 700 /home/ftp/
//配置PAM文件,新建/etc/pam.d/vsftpd.vu
sudo vim /etc/pam.d/vsftpd.vu
//增加以下两行内容
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

5.每次修改/etc/vsftpd.conf文件后需要重新启动,方能生效。

本文主要参考:http://os.51cto.com/art/201008/222036.htm

你可能感兴趣的:(linux)