默认安装好ftp软件包匿名用户是可以下载的。
匿名以后可以上传:
anon_upload_enable=YES
# getsebool -a | grep ftp
allow_ftpd_anon_write --> on
chcon -t public_content_rw_t pub
chmod 775 pub
chgrp ftp pub

匿名用户可以创建目录:
anon_mkdir_write_enable=YES

在创建的目录上传文件看不到。添加下面
anon_world_readable_only=NO

删除不了自己创建的目录文件:添加下面
anon_other_write_enable=YES

当selinux打开时,默认的本地用户是不可以登录ftp的。
[root@redhat pub]# lftp 192.168.3.30 -u lee
Password:
lftp lee@192.168.3.30:~> ls         
ls: Login failed: 500 OOPS: cannot change directory:redhat
# setsebool -P ftp_home_dir on

默认本地用户登录ftp后是可以切换到 /的
怎么使本地以后不可以切换到/
chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
本地以后可以切换到/
chroot_local_user=NO
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
在chroot_list文件中的用户可以切换到/,反之就是配置文件没有写入的用户都是不可一切换到/的
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
# touch /etc/vsftpd/chroot_list
所有的用户都可以切换到 /,在配置文件的内容不可以切换到/,要是文件为空,就是所有以后都可一切换到/,匿名用户除外
chroot_local_user=NO
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
所有以后不可一切换到 /
chroot_local_user=YES
chroot_list_enable=NO
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

2个黑名单同时含有一个用户时,ftpusers优先级大于user_list
ftpusers  user_list  //这2个文件即改即生效
所有的用户都不可以登录ftp,当白名单为空时。同时也是把临时黑名单变为白名单
userlist_enable=YES
userlist_deny=NO

ftp虚拟用户的建立;
vim users
user1
123
user2
123
# yum install db4-utils.x86_64 -y
# db_load -T -t hash -f users users.db

vim ftpusers
auth        required      pam_userdb.so db=/etc/vsftpd/users
account     required      pam_userdb.so db=/etc/vsftpd/users

# vim /etc/vsftpd/vsftpd.conf //使用虚拟用户登录的目录为test目录。
pam_service_name=ftpusers
guest_enable=YES
guest_username=test //使用为本地用户
客户端测试,我们会发现登录到的为test的家目录

给虚拟用户添加家目录
[root@redhat vsftpd]# tree virtual/
virtual/  //改目录下又创建2个user1 user2
├── user1
│   ├── passwd 
│   └── user1
└── user2
    └── user2

/etc/vsftpd/virtual  //修改user1 user2的目录权限
# chcon -t public_content_rw_t
[root@redhat virtual]# ll
total 8
drwxr-xr-x. 2 test test 4096 Jun 12 01:27 user1
drwxr-xr-x. 2 test test 4096 Jun 12 01:11 user2
为虚拟ftp用户添加家目录,配置文件要写入下面内容
local_root=/etc/vsftpd/virtual/$USER
user_sub_token=$USER

为虚拟用户添加配置文件
/etc/vsftpd
mkdir dir
user_config_dir=/etc/vsftpd/dir
vim user1 //user1就为user1用户的ftp配置文件
non_upload_enable=NO //user1用户禁止上传,默认是可以上传的

<Linux下FTP服务的搭建>的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. 1.4.2 solr字段类型--(1.4.2.5)使用枚举字段

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  2. [Windows] Visual Studio 2010 快捷键大全

    Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL ...

  3. TCP/IP协议原理与应用笔记23:路由选择模块 和 路由表的设计

    1. 路由选择模块 和 路由表的设计 2. 路由选择算法(路由模块在路由表中查找算法) (1)用IP分组中的目的IP地址查找路由表,使用匹配表项的下一跳地址完成分组交付 (2)匹配条件: dIP &a ...

  4. ArcEngine实现捕捉节点

    来自:http://blog.sina.com.cn/s/blog_4d0b75870100o960.html //获取最近的结点,然后在  OnMouseMove中显示 //pnt:鼠标移动点 // ...

  5. (Android学习系列)二,窗口(Activity)的生命周期

    在Activity从创建到销毁的过程中需要在不同的阶段调用7个生命周期的方法这7个生命周期方法定义如下: protected void onCreate(Bundle savedInstanceSta ...

  6. Swift中if let name = optionName {}解释

    在Swift语法的if语句中,是不能出现这种情况的: let optionName = "Swift" if let name = optionName { print(" ...

  7. node.js Web应用框架Express.js(一)

    什么是Express.js Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用,提供丰富的HTTP工具以及来自Connect框架的中间件随 ...

  8. ionic 项目的启动屏幕

    首先要做好图片,图片的大小最好是192px*192px(icon.png).2208px*2208px(splash.png); 然后在APP项目中建立一个新文件夹,resources,将准备好的两张 ...

  9. AspxGridView 主子表设置

    AspxGridView主子表(master-detail)设置共分3步: 第1步: 设置主表允许其显示 DetailRow 放置主GridView到页面, 取名"grvList" ...

  10. Part 4 using entity framework

    Step1: Install entity framework using nuget package manager. Step2: Add a class file to the Models f ...