要求如下:

1、所有用户主目录为/var/www宿主为virtual用户;

2、ftpuser1用户只能下载不能上传以及删除文件重命名操作;

3、ftpuser2可以下载与上传文件以及删除重命名操作;

4、ftpadmin可以下载与上传文件以及删除重命名操作,上传文件的umask为022;

本机ip:192.168.1.3

anonymous_enable=NO -------------------#是否开启匿名用户,匿名都不安全,不要开
local_enable=YES ------------------ #允许本机账号登录FTP
write_enable=YES ------------------ #允许账号都有写操作
local_umask=022------------------ #意思是指:文件目录权限:777-022=755,文件权限:666-022=644,这有点反人类了,并且没有人跟我说是减去的。注意理解!
#anon_upload_enable=YES ------------------ #匿名用户是否有上传文件的功能,不要开
#anon_mkdir_write_enable=YES------------------ #匿名用户是否有创建文件夹的功能,不要开
dirmessage_enable=YES ------------------ #进入某个目录的时候,是否在客户端提示一下
xferlog_enable=YES------------------ #日志记录
connect_from_port_20=YES------------------ #开放port模式的20端口的连接
#chown_uploads=YES------------------ #允许没人认领的文件上传的时候,更改掉所属用chown_uploads=YES的前提下,所属的用户
#xferlog_file=/var/log/xferlog ------------------#日志存放的地方
xferlog_std_format=YES ------------------ #日志成为std格式
#idle_session_timeout=600 ------------------ #用户无操作服务器会主动断开连接,单位秒
#data_connection_timeout=120 ------------------ #数据连接超时
#nopriv_user=ftpsecure------------------ #以 ftpsecure 作为此一服务执行者的权限。因为ftpsecure 的权限相当的低,因此即使被入侵,入侵者仅能取得nobody 的权限喔!
#async_abor_enable=YES------------------ #异步停用,由客户发起
#ascii_upload_enable=YES------------------ #使用ascii格式上传文件
#ascii_download_enable=YES------------------ #使用ascii格式下载文件
#ftpd_banner=Welcome to blah FTP service------------------ #欢迎词
#deny_email_enable=YES------------------ #以anonymous用户登录时候,是否禁止掉名单中的emaill密码。
#banned_email_file=/etc/vsftpd/banned_emails------------------ #以anonymous用户登录时候,所禁止emaill密码名单。
chroot_local_user=YES ------------------ #限制用户只能在自己的目录活动
#chroot_list_enable=YES ------------------ #例外名单,如果是YES的话,这个有点怪,不懂别乱开,上面的选项会跟这个名单反调(会被上面的选项影响)。
#chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=NO ------------------ #是否允许使用ls -R等命令
listen=YES ------------------ #监听ipv4端口,开了这个就说明vsftpd可以独立运行,不用依赖其他服务。
#listen_ipv6=YES------------------ #监听ipv6端口,还没普及呢!
pam_service_name=vsftpd------------------ #pam模块的名称,放置在 /etc/pam.d/vsftpd ,认证用
userlist_enable=YES------------------ #使用允许登录的名单
userlist_deny=NO ------------------ #限制允许登录的名单,前提是userlist_enable=YES,其实这里有点怪~!
allow_writeable_chroot=YES------------------ #允许限制在自己的目录活动的用户 拥有写权限
tcp_wrappers=YES------------------ #Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性。
user_config_dir=/etc/vsftpd/userconfig------------------ #主目录配置,修改后到这个目录中在修改用户配置

pasv_min_port=6000 (0为随机分配)
pasv_max_port=6010(这两项定义了可以同时执行下载链接的数量。)
------------------#被动模式端口范围:注意:linux客户端默认使用被动模式,windows 客户端默认使用主动模式。在ftp客户端中执行"passive"来切换数据通道的模式。也可以使用"ftp -A ip"直接使用主动模式。主动模式、被动模式是有客户端来指定的。

配置文件说明摘抄☞:https://blog.csdn.net/annita2019/article/details/92004340

一、安装服务。

[root@localhost ~]# yum -y install vsftpd

二、配置主配置文件。

[root@localhost ~]# cd /etc/vsftpd/

[root@localhost vsftpd]# grep -v "^# \|^#$" vsftpd.conf.bak  > vsftpd.conf  #过滤一下。不然看着乱

[root@localhost vsftpd]# vim vsftpd.conf

增加:

allow_writeable_chroot=yes  #是否允许囚禁的用户进行写权限
user_config_dir=/etc/vsftpd/user  #权限映射目录
guest_enable=YES  #启用虚拟用户
guest_username=virtual   #映射用户

修改:

pam_service_name=vsftpd

为:

pam_service_name=pa   #定义pam模块

三、pam模块认证。

首先先要去添加一下用户账号、以及密码,并hash加密。

[root@localhost vsftpd]# vim up   #这儿我用up来代表用户信息。username、password的缩写

增加:

ftpuser1   #用户名
123      #密码
ftpuser2  #用户名
123       #密码
ftpadmin  #用户名
123  #密码

[root@localhost vsftpd]# db_load  -T -t hash -f up up.db   #加密用户信息

[root@localhost vsftpd]# vim /etc/pam.d/pa #编辑pam认证

增加:

auth required pam_userdb.so db=/etc/vsftpd/up
account required pam_userdb.so db=/etc/vsftpd/up

四、定义虚拟用户的权限。

[root@localhost vsftpd]# mkdir user

[root@localhost vsftpd]# cd user

[root@localhost user]#  touch ftpuser1  #要求是ftpuser1只能进行下载,啥都不能了,所以直接创建一个空文件在这儿就好啦。

[root@localhost user]# vim ftpuser2

增加:

anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes

[root@localhost user]# vim ftpadmin

增加:

anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=022

[root@localhost user]# useradd -s /sbin/nologin -d /var/www virtual  #创建映射的用户

[root@localhost user]# systemctl restart vsftpd

[root@localhost user]# echo haha > /var/www/1.txt #创建一个文件,方便连接的时候,好识别是不是连接对了。

测试ftpuser1:

测试ftpuser2:

解决:

[root@localhost vsftpd]# chown virtual /var/www/

测试ftpadmin:

有一些权限是肯定有的。我就不一一测试了。

最新文章

  1. IE6,IE7文档模式下 按钮type=submit在页面打开时会有一条黑线边框的处理方法。(转)
  2. 前端chrome浏览器调试总结
  3. C# 操作mongodb子文档
  4. Struts2的基本流程的详细介绍
  5. shared_ptr<> reset
  6. C#引用Interop.SQLDMO.dll后的注意事项(转)
  7. 山东理工大学第七届ACM校赛-经济节约 分类: 比赛 2015-06-26 10:34 19人阅读 评论(0) 收藏
  8. memcache中的add和set方法区别
  9. IE浏览器和CSS盒模型
  10. CentOS7 yum安装zabbix3.2.6
  11. vConsole--针对手机网页的前端 console 调试面板。
  12. JSON解析的几种方式
  13. zabbix基础使用--添加ping监控
  14. jquery扩展写法
  15. Efuse--芯片存储
  16. python 之字符编码
  17. Objective-C atomic属性不是线程安全的
  18. 消息队列RabbitMQ与Spring
  19. ZooKeeper系列(2) 安装部署 (转)
  20. bashttpd使用手册

热门文章

  1. SpringBoot-数据库连接信息配置
  2. android studio3.1 添加闪屏页面(启动欢迎界面)(例子简单无BUG)
  3. 【剑指Offer】面试题26. 树的子结构
  4. cf 782# A.Andryusha and Socks B.The Meeting Place Cannot Be Changed C.Andryusha and Colored Balloons
  5. BeanUtils使用将一个对象拷贝到另外一个对象
  6. sping MVC 定时任务的设置
  7. 044-PHP获得多个类对应的反射信息
  8. 075-PHP数组添加元素
  9. 吴裕雄--天生自然C++语言学习笔记:C++ 数字
  10. java IO 流关系图谱