ubuntu14.04 server ftp 服务安装配置详解

cheungmine

2016-01-27

http://wiki.ubuntu.com.cn/Vsftpd

0 安装好vsftpd服务

vsftpd - Very Secure FTP Daemon

安装

$ sudo apt-get install vsftpd

关闭,启动

$ sudo service vsftpd stop|start|restart

实际目录在: /srv/ftp/

访问URL: ftp://yourhost

1 下载需要的软件包

$ wget http://ftp.us.debian.org/debian/pool/main/d/db4.8/libdb4.8_4.8.30-2_amd64.deb
$ wget http://cz.archive.ubuntu.com/ubuntu/pool/universe/d/db4.8/db4.8-util_4.8.30-11ubuntu1_amd64.deb

2 安装软件包

$ sudo dpkg -i libdb4.8_4.8.30-2_amd64.deb
$ sudo dpkg -i db4.8-util_4.8.30-11ubuntu1_amd64.deb

3 创建虚拟用户文件

$ vi ~/ftpvusers.txt

cab
123456
sedan
234567
limo
345678

4 数据库文件导入db

$ sudo mkdir /etc/vsftpd.d
$ sudo rm -f /etc/vsftpd.d/vsftpd_login.db
$ sudo db4.8_load -T -t hash -f ~/ftpvusers.txt /etc/vsftpd.d/vsftpd_login.db

将数据库文件设置权限为600,并不需要被其他用户读,修改:

$ sudo chmod 600 /etc/vsftpd.d/vsftpd_login.db

5 创建链接

$ sudo ln -s /lib/x86_64-linux-gnu/security/pam_userdb.so /lib/security/pam_userdb.so

6 编辑PAM配置文件

$ sudo vi /etc/pam.d/vsftpd_login
auth required /lib/security/pam_userdb.so db=/etc/vsftpd.d/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd.d/vsftpd_login

可见,/etc/vsftpd.d/vsftpd_login 指向了 /etc/vsftpd.d/vsftpd_login.db

ftp的虚拟用户将采用PAM进行验证,这是通过: /etc/vsftpd.conf 文件中的语句
pam_service_name=vsftpd
来启用的,稍后我们要配置: /etc/vsftpd.conf,使其指向
pam_service_name=vsftpd_login

7 为虚拟用户创建本地系统用户

相当于就是虚拟用户借用本地用户的名去访问ftp服务器. 就是把一个本地用户和
一个目录进行绑定,也就是说这个用户默认访问的地方就是这个绑定的目录.

新建一个系统用户vsftpd,用户主目录为/home/vsftpd, 用户登录终端
设为/bin/false(即使之不能登录系统)

#### 创建ftp读写访问用户目录(vsftpd访问权限)
$ sudo mkdir -p /home/vsftpd/limo

$ sudo useradd vsftpd -d /home/vsftpd -s /bin/false
$ sudo chown -R vsftpd:vsftpd /home/vsftpd
$ sudo chgrp -R vsftpd /home/vsftpd
$ sudo chmod -R 700 /home/vsftpd

#### 创建ftp只读访问用户目录(root访问权限)
$ sudo mkdir /home/vsftpd/sedan

$ sudo mkdir /srv/ftp/cab
$ sudo chown root:ftp /srv/ftp/cab

8 修改vsftpd配置文件

/etc/vsftpd.conf

先备份
# cp /etc/vsftpd.conf /etc/vsftpd.conf.old
# vi /etc/vsftpd.conf
确保以下配置:
------------------------------------------------------------------------

listen=YES                        #以standalone模式运行vsftpd
#listen_ipv6=YES                  #注释掉这个!! 解决错误: 500 OOPS: run two copies of vsftpd for IPv4 and IPv6

anonymous_enable=NO               #禁止匿名访问
dirmessage_enable=YES             #显示目录下的message消息

xferlog_enable=YES                #启用日志
xferlog_file=/var/log/vsftpd.log  #设定日志路径
xferlog_std_format=YES            #使用标准日志格式

chroot_local_user=YES             #限定用户在家目录
guest_enable=YES                  #启用虚拟用户
guest_username=vsftpd             #将虚拟用户转换成本地用户vsftpd

user_config_dir=/etc/vsftpd.d     #虚拟用户的配置文件存放目录
pam_service_name=vsftpd_login     #指定认定文件=> /etc/pam.d/vsftpd_login

local_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty    #此句必要!!
allow_writeable_chroot=YES        # 解决错误: 500 OOPS: vsftpd: refusing to run with writable root inside chroot

------------------------------------------------------------------------

9 配置虚拟用户配置文件

虚拟用户的配置文件存放目录在/etc/vsftpd.conf的user_config_dir指定,因此要在
/etc/vsftpd.d目录下创建用户配置文件:cab, sedan, limo

# vi /etc/vsftpd.d/cab

local_root=/srv/ftp/cab

# vi /etc/vsftpd.d/sedan

local_root=/home/vsftpd/sedan

最后一个是特殊,可以上传文件的用户:

# vi /etc/vsftpd.d/limo
local_root=/home/vsftpd/limo     # 指定家目录
write_enable=YES                 # 开启全局上传(写)权限
anon_world_readable_only=NO      # 关闭匿名用户只读(下载)权限
anon_upload_enable=YES           # 开启匿名用户上传权限
anon_mkdir_write_enable=YES      # 开启匿名用户建目录权限
anon_other_write_enable=YES      # 开启匿名用户除上传和建目录之外的写权限(如重命名,删除等)

10 服务启用与停止

$ sudo killall vsftpd
$ sudo /usr/sbin/vsftpd /etc/vsftpd.conf &
或者
$ sudo service vsftpd stop
$ sudo service vsftpd start|restart

浏览器访问:
ftp://cab:123456@yourhost
ftp://sedan:234567@yourhost
ftp://limo:345678@yourhost

FTP命令行:
$ ftp cab:123456@yourhost
$ ftp sedan:234567@yourhost
$ ftp limo:345678@yourhost

wget 访问

1) wget ftp://cab@yourhost --ftp-password=123456

2) wget ftp://cab:123456@yourhost

3) wget ftp://yourhost --ftp-user=cab --ftp-password=123456

FTP命令参考:
http://www.cnblogs.com/xmphoenix/archive/2011/03/11/1981831.html

当然也可以用lftp访问。需要安装lftp
LFTP命令参考:
http://blog.csdn.net/fjb2080/article/details/7758486

ubuntu14.04 server ftp 服务安装配置详解的更多相关文章

  1. CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户

    CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户 一.安装ftp服务 1.检查是否已经安装 # rpm -qa | grep ftp ftp-0.17-54.el6.x86_64 vs ...

  2. 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习

    反射实现Model修改前后的内容对比   在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...

  3. Cloudera CDH 、Impala本地通过Parcel安装配置详解及什么是Parcel

    本文引用自:Cloudera CDH .Impala本地通过Parcel安装配置详解及什么是Parcelhttp://www.aboutyun.com/forum.php?mod=viewthread ...

  4. WIN中SharePoint Server 2010 入门安装部署详解

    目前流行的原始安装文件基本都是这样的:Windows Server 2008 R2+SQL Server 2008R2+SharePoint Server 2010     这个初始环境原本也无可厚非 ...

  5. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  6. Eclipse IDE for C/C++ Developers安装配置详解

    Eclipse IDE for C/C++ Developers安装配置详解(转) 转自:http://hi.baidu.com/ltb6w/item/986532efd712460f570f1ddc ...

  7. JDK10安装配置详解

    JDK10安装配置详解 1. 下载jdk10 1.1 官网下载jdk7的软件包:        地址:http://www.oracle.com/technetwork/java/javase/dow ...

  8. (转)python中调用R语言通过rpy2 进行交互安装配置详解

    python中调用R语言通过rpy2 进行交互安装配置详解(R_USER.R_HOME配置) 2018年11月08日 10:00:11 luqin_ 阅读数:753   python中调用R语言通过r ...

  9. (转)使用LVS实现负载均衡原理及安装配置详解

    使用LVS实现负载均衡原理及安装配置详解 原文:https://www.cnblogs.com/liwei0526vip/p/6370103.html

随机推荐

  1. [ Java学习基础 ] Java的继承与多态

    看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...

  2. Requests库介绍

    Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...

  3. python中没有字符(char)这一基本数据类型

    感觉受C语言的影响太大了,一开始以为python中也会有字符这一基本数据类型,后来遇到了很多问题,这才发现python中压根没有这一数据类型( ╯□╰ ). 吐槽一下:感觉python还真是'够简单啊 ...

  4. 遗传算法:N皇后

    N皇后问题描述 N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行.同一列.同一斜线上的皇后都会自动攻击). 遗传算法 遗传算法是局部束搜索的变形: 与自 ...

  5. org.apache.maven.archiver.MavenArchiver.getManifest

    eclipse导入新的maven项目时,pom.xml第一行报错: org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.mav ...

  6. Exception 的 toString() 方法和 getMessage() 方法的区别

    Exception 的 toString() 方法和 getMessage() 方法的区别: 在开发的过程中打印错误日志时尽量使用e.toString() 方法, 因为当错误为空指针时 e.getMe ...

  7. Java Spring boot 2.0 跨域问题

    跨域 一个资源会发起一个跨域HTTP请求(Cross-site HTTP request), 当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时 . 比如说,域名A(http://dom ...

  8. 使用 OpenCV 与 Face++ 人脸识别

    今天看到一篇文章<使用 OpenCV 与 Face++ 实现人脸解锁>,感觉挺好玩,就照着作者的讲解,写了一下.详细内容还请看原作者文章. # *^_^* coding:utf-8 *^_ ...

  9. docker环境 mysql读写分离 mycat maxscale

    #mysql读写分离测试 环境centos 7.4 ,docker 17.12 ,docker-compose mysql 5.7 主从 mycat 1.6 读写分离 maxscale 2.2.4 读 ...

  10. Dubbo框架应用之(二)--服务治理

    Dubbo服务治理全貌图 当我们现有ITOO平台系统的业务随着用户的逐渐增大,设计的业务越来越广,系统会异常的复杂,在大规模服务之前,我们可以采用的是RMI或Hessian等工具,暴露和引用远程服务, ...