假设我们有以下要求

路径 权限 备注
/ftp/open 公司所有人员包括来宾均可以访问 只读
/ftp/private 仅允许Alice、Jack、Tom三个人访问

Alice、Jack只允许下载,

Tom可以上传  均使用虚拟账户

安装FTP

1
2
3
4
5
6
7
8
9
//使用yum安装
# yum -yinstall ftp vsftpd
//或者使用rpm安装以下两个包
ftp-0.17-66.el7.x86_64
vsftpd-3.0.2-9.el7.x86_64
//另外需要安装db包,用来加密虚拟用户的账户信息
//这个包在centos7中默认已经安装了
# rpm -qf/usr/bin/db_load
libdb-utils-5.3.21-17.el7_0.1.x86_64

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# mkdir/ftp/open
做几个测试文件
# echo opentest > /ftp/open/open.txt
# echo filetest > /tmp/filetest1.txt
  
# touch /ftp/open/anontest.txt
 //查看配置文件所在路径
# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
  
# cd /etc/vsftpd/
//备份原有配置文件
# cp vsftpd.conf vsftpd.conf.origin
  
//创建密码明文文件
# vi/etc/vsftpd/vftpuser.txt
alice
P@ssw0rd
jack
P@ssw0rd
tom
P@ssw0rd
  
//根据明文创建密码DB文件
# db_load -T -t hash -f /etc/vsftpd/vftpuser.txt \
/etc/vsftpd/vftpuser.db
  
//查看密码数据文件
# file/etc/vsftpd/vftpuser.db
/etc/vsftpd/vftpuser.db: Berkeley DB (Hash, version9, native byte-order)
  
//创建vftpd的guest账户
# useradd -d/ftp/private -s /sbin/nologin vftpuser
  
# vi/etc/pam.d/vsftpd
将auth及account的所有配置行行均注释掉,添加如下内容:
auth required pam_userdb.so db=/etc/vsftpd/vftpuser
account required pam_userdb.sodb=/etc/vsftpd/vftpuser
//打开配置文件
# vi/etc/vsftpd/vsftpd.conf
//在最后添加
anon_root=/ftp/open
virtual_use_local_privs=YES
guest_enable=YES
guest_username=vftpuser
chroot_local_user=YES
allow_writeable_chroot=YES
 //设置自动启动
# systemctl enable vsftpd
ln -s'/usr/lib/systemd/system/vsftpd.service''/etc/systemd/system/multi-user.target.wants/vsftpd.service'
  
# systemctlstart vsftpd
 
//查看目前的状态
# systemctlstatus vsftpd
vsftpd.service - Vsftpd ftp daemon
   Loaded:loaded (/usr/lib/systemd/system/vsftpd.service; enabled)
   Active:active (running) since Mon 2014-08-11 19:57:12 CST; 22h ago
 Main PID:12733 (vsftpd)
   CGroup:/system.slice/vsftpd.service
          a””a”12733 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
  
systemd[1]: Starting Vsftpd ftp daemon...
systemd[1]: Started Vsftpd ftp daemon.
vsftpd[12738]: pam_userdb(vsftpd:auth): user'alice' granted access
vsftpd[12753]: pam_userdb(vsftpd:auth): user 'jack'granted access
systemd[1]: Started Vsftpd ftp daemon.

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//测试匿名账户
# ftplocalhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name(localhost:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftpls
229 Entering Extended Passive Mode (|||61057|).
150 Here comes the directory listing.
-rw-r--r--   1 0        0               9 Aug 11 11:45 open.txt
226 Directory send OK.
ftp> lcd/tmp
Local directory now /tmp
ftp> getopen.txt
localopen.txt remote: open.txt
229 Entering Extended Passive Mode (|||64276|).
150 Opening BINARY mode data connection foropen.txt (9 bytes).
226 Transfer complete.
9 bytes received in 0.000895 secs(10.06 Kbytes/sec)
ftp> bye
221 Goodbye.
  
 //测试本地账户
# ftplocalhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.2)
Name(localhost:root): alice
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftpls
229 Entering Extended Passive Mode (|||21750|).
150 Here comes the directory listing.
226 Directory send OK.
ftp> !ls/tmp
filetest1.txt     open.txt    systemd-private-9xPN7y  vmware-fonts0      vmware-installer1  vmware-root             vmware-tools-distrib
ks-script-_Yi85R SAMBA.docx  vmware-config0          vmware-installer0  vmware-installer2  vmware-root-2117481760  yum.log
ftp> lcd/tmp
Local directory now /tmp
ftp> putfiletest1.txt
local: filetest1.txt remote: filetest1.txt
229 Entering Extended Passive Mode (|||65399|).
150 Ok to send data.
226 Transfer complete.
9 bytes sent in 5.9e-05 secs (152.54 Kbytes/sec)
ftp> bye
221 Goodbye.

本文出自 “李豪” 博客,请务必保留此出处http://leaus.blog.51cto.com/9273485/1540773

最新文章

  1. Visual Studio2015使用tinyfox2.x作为Owin Host调试教程
  2. C#中的隐式类型var——详细示例解析
  3. JSON方式提交文档时SOLR报:AtomicUpdateDocumentMerger Unknown operation for the an atomic update, operation ignored
  4. asp.net GridView控件中诗选全选和全不选功能
  5. Bootstrap系列 -- 21. 表单提示信息
  6. 使用命令行编译、打包、运行WordCount--不用eclipse
  7. LA 5846 (计数) Neon Sign
  8. javascript 制作的美化select,利用cookie保存选择
  9. RequireJs 深入理解
  10. win10 ie11 以管理员身份运行才正常
  11. minimun depth of binary tree
  12. 使用phxpaxos开发过程中遇到的坑
  13. C++ delegate的几种方法
  14. java递归 处理权限管理菜单树或分类
  15. linux shell编程中的数组定义、遍历
  16. redis -编译、启动、停止
  17. 跨域cors中如何传递cookie(前端为什么无法向后端传递cookie?)
  18. Android高级_视频播放控件
  19. 【微信小程序】数据与界面UI不同步,不能直接操作Page.data
  20. python的多线程编程之锁

热门文章

  1. php7+apache的环境安装配置
  2. jQuery Dialog弹出层对话框插件
  3. hadoop学习日志
  4. 【CentOS】IBM X3650M4 IMM远程管理【转载】
  5. bzoj 3232 01分数规划+最大权封闭子图判定
  6. 【BZOJ】【1024】【SCOI2009】生日快乐
  7. File not found images\Thumbs.db.
  8. [工作积累] bitfield
  9. JavaScript之常用方法讲解
  10. React Native 简介:用 JavaScript 搭建 iOS 应用 (1)