RHEL  6.x   搭建企业级FTP

==============================

db4-utils+vsftpd   搭建虚拟用户

mysql+vsftpd       搭建虚拟用户

==============================

为企业搭建基于虚拟用户的FTP服务器是非常有必要的,因为虚拟用户是在服务器上面没有此用户,就算,恶意破坏系统安全的人员得到虚拟用户的账号和密码也不能通过此账号登录到系统,保证了系统的安全性。

一、db4-utils+vsftpd 实现FTP的虚拟用户

1)安装db4-utils和vsftpd

yum -y  install vsftpd  db4-utils

vsftpd的虚拟用户数据库是使用Berkeley DB格式的数据库文件。建立该数据库文件需要用到db_load命令工具,db_load命令依赖于db4-utils软件包,所以需要安装db4-utils。

2)建立文本格式的用户名和密码列表文件

1
2
3
4
5
6
7
cat /etc/vsftpd/virtual_user.list << EOF
user1  #奇数行为用户名,偶数行为前一行的用户名的密码
123
user2
456
EOF
#此文件中空格也代表一行,不要添加额外的行

3)把用户名和密码列表文件,使用db_load工具转化为DB数据库文件

1
2
3
4
5
6
7
[root@jie3 vsftpd]#db_load -T -t hash -f /etc/vsftpd/virtual_user.list /etc/vsftpd/virtual_user.db
[root@jie3 vsftpd]# file /etc/vsftpd/virtual_user.db
/etc/vsftpd/virtual_user.db: Berkeley DB (Hash, version 9, native byte-order)
#db_load -T:转换
# -t hash:指定读取数据文件的基本方法
# -f /etc/vsftpd/virtual_user.list:用户名和密码列表文件
#/etc/vsftpd/virtual_user.db:转化为Berkeley DB数据库文件

4)建立访问ftp的根目录及虚拟用户对应的系统账号

1
2
3
4
[root@jie3 vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
     #此用户不能登录系统,-d指定此用户的家目录
[root@jie3 vsftpd]# chown virtual:virtual /var/ftproot/
[root@jie3 vsftpd]# chmod 755 /var/ftproot/

5)建立pam认证文件

1
2
3
4
5
6
[root@jie3 vsftpd]# cat > /etc/pam.d/vsftpd.vu << EOF
#%PAM-1.0
auth   required  pam_userdb.so    db=/etc/vsftpd/virtual_user
account required pam_userdb.so    db=/etc/vsftpd/virtual_user
EOF
##db=/etc/vsftpd/virtual_user  指向刚才用db_load命令生成的数据库文件,后缀名.db可以不写


6)修改配置文件,使vsftpd能支持虚拟用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
######修改/etc/vsftpd/vsftpd.conf配置文件的内容###############
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES        #启用用户映射功能
guest_username=virtual  #将用户映射为之前创建的不能登录系统的用户virtual
pam_service_name=vsftpd.vu  #指定pam认证的文件
local_root=/var/ftproot    #指定ftp的根目录
user_config_dir=/etc/vsftpd/chroot_list #指定给用户配置权限目录的路径

7)创建为虚拟用户分配权限的目录,及设置虚拟用户权限的文件,此文件必须以虚拟用户名命名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@jie3 vsftpd]# mkdir /etc/vsftpd/chroot_list
     #创建配置文件里面通过user_config_dir定义的目录名称
[root@jie3 vsftpd]# touch /etc/vsftpd/chroot_list/user1
     #创建之前以用户名命名为文件,此用户存在于用户名密码列表文件中
[root@jie3 vsftpd]# touch /etc/vsftpd/chroot_list/user2
[root@jie3 vsftpd]# cd chroot_list/
[root@jie3 chroot_list]# ls
user1  user2
[root@jie3 chroot_list]# echo "anon_upload_enable=YES" >>/etc/vsftpd/chroot_list/user1
#为user1用户,设置可以上传文件的权限
[root@jie3 chroot_list]# cat > /etc/vsftpd/chroot_list/user2 << EOF
> anon_upload_enable=YES       #user2也可以上传文件的权限
> anon_mkdir_write_enable=YES  #为user2用户设置可以创建文件的权限
> EOF

8)验证不同用户的不同权限

二、mysql+vsftpd   实现FTP的虚拟用户

1)安装相关软件包

下载mysql pam验证的软件包

wget http://mirrors.sohu.com/fedora-epel/6Server/x86_64/pam_mysql-0.7-0.12.rc1.el6.x86_64.rpm

http://mirrors.sohu.com/fedora-epel/6Server/x86_64/

此网站是RHEL 6.x的epel相关的软件包的地址(可以把epel也做一个yum仓库)

yum -y install mysql-server    mysql-devel  pam_mysql  vsftpd

mysql-server :mysql服务器的软件包

mysql-devel  :mysql服务器的开发包

pam_mysql    :  实现mysql虚拟用户认证的包

vsftpd         :提供ftp服务的软件包

2)建立访问ftp的根目录及虚拟用户对应的系统账号

1
2
3
4
[root@jie3 vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
#此用户不能登录系统,-d指定此用户的家目录
[root@jie3 vsftpd]# chown virtual:virtual /var/ftproot/
[root@jie3 vsftpd]# chmod 755 /var/ftproot/

3)在mysql数据库服务器上创建存放用户名和密码的表

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
[root@jie1 ~]# service mysqld start   #初次启动mysqld服务会等待些时间
Starting mysqld:                                           [  OK  ]
[root@jie1 ~]# mysqladmin -u root password 'redhat'  #给登录mysql服务器的root用户设置密码
[root@jie1 ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.66 Source distribution
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;      #显示所有的数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
test               |
+--------------------+
3 rows in set (0.00 sec)
mysql> create database ftpdb;   #创建一个存放ftp虚拟用户的数据库
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ftpdb              |
| mysql              |
test               |
+--------------------+
4 rows in set (0.02 sec)
mysql> use ftpdb;   #切换到创建的数据库中
Database changed
mysql> create table users (name char(16) binary,passwd char(16) binary);
        #在ftpdb数据库中新建一张有两个字段名为users的表,一个字段存放用户,一个字段存放用户的密码。
Query OK, 0 rows affected (0.03 sec)
mysql> insert into users (name,passwd) values ('tom','123');
        #在users表中插入一条数据,name为tom,密码为123
Query OK, 1 row affected (0.00 sec)
mysql> insert into users (name,passwd) values ('jerry','456');
        #在users表中在插入一条数据,name为jerry,密码为456
Query OK, 1 row affected (0.00 sec)
mysql> select * from ftpdb.users;
        #查询ftpdb数据库中表users的所有数据
+-------+--------+
| name  | passwd |
+-------+--------+
| tom   | 123    |
| jerry | 456    |
+-------+--------+
2 rows in set (0.00 sec)
mysql> grant select on ftpdb.users to virtual@localhost identified by 'virtual';
   #grant关键用于设置权限,on后面接数据库的表名, to接用户名,identified by 'virtual',设置virtual用户的密码
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;  #刷新同步数据
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
[root@jie1 ~]#

4)建立pam认证文件

1
2
3
4
5
6
7
8
9
10
11
[root@jie1 ~]# find  / -name 'pam_mysql*'  #查找一下pam认证支持mysql的库文件
/lib64/security/pam_mysql.so
[root@jie1 ~]# cat > /etc/pam.d/mysql_vsftpd << EOF
#%PAM-1.0
auth required /lib64/security/pam_mysql.so user=virtual passwd=virtual host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=passwd crypt=0
account required /lib64/security/pam_mysql.so user=virtual passwd=virtual host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=passwd crypt=0
EOF
#/lib64/security/pam_mysql.so 指定pam认证支持mysql的库文件的路径
#user=virtual passwd=virtual 指定用户和用户的密码,此用户对数据库有select权限
#crypt表示口令字段中口令的加密方式: crypt=0,口令以明文方式(不加密)保存在数据库中;
#db=ftpdb table=user 指定在数据库服务器新建的数据库和表

5)修改配置文件,使vsftpd能支持虚拟用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
######修改/etc/vsftpd/vsftpd.conf配置文件的内容###############
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES        #启用用户映射功能
guest_username=virtual  #将用户映射为之前创建的不能登录系统的用户virtual
virtual_use_local_privs=NO
pam_service_name=mysql_vsftpd  #指定pam认证的文件
local_root=/var/ftproot#指定ftp的根目录
user_config_dir=/etc/vsftpd/chroot_list#指定给用户配置权限目录的路径

6)创建为虚拟用户分配权限的目录,及设置虚拟用户权限的文件,此文件必须以虚拟用户名命名。用户名为mysql表users中的用户

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
[root@jie1 vsftpd]# mkdir /etc/vsftpd/chroot_list #创建配置文件中user_config_dir关键字定义的目录
[root@jie1 vsftpd]# touch chroot_list/tom  #在此目录下创建数据库users表中存在的用户,且以用户名命名文件
[root@jie1 vsftpd]# touch chroot_list/jerry
[root@jie1 vsftpd]# cd chroot_list/
[root@jie1 chroot_list]# ls
jerry  tom
[root@jie1 chroot_list]# echo "anon_upload_enable=YES" >tom
[root@jie1 chroot_list]# cat > jerry << EOF
> anon_upload_enable=YES
> anon_mkdir_write_enable=YES
> EOF
[root@jie1 chroot_list]# cat tom
anon_upload_enable=YES
[root@jie1 chroot_list]# cat jerry
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@jie1 chroot_list]# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]
[root@jie1 chroot_list]#
#当virtual_use_local_privs=YES时,只需设置write_enable=YES,虚拟用户就可以就拥有写权限
#当virtual_use_local_privs=NO时,
#      anon_upload_enable=YES时,匿名用户能上传,但不能覆盖和改写删除文件
#      anon_mkdir_write_enable=YES时,能建立目录
#      anon_other_write_enable=YES时,虚拟用户具有读写权限,和删除权限

7)验证不同的用户的权限

        小结:为企业搭建基于虚拟用户的vsftpd是非常有必要的,虚拟用户的用户不属于服务器中的用户,这样可以保障服务器的安全隐患。

本文转自 jie783213507 51CTO博客,原文链接:http://blog.51cto.com/litaotao/1275846,如需转载请自行联系原作者

RHEL 6.x 搭建企业级FTP相关推荐

  1. 在Linux中搭建一个FTP服务器

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...

  2. php开发ftp服务器搭建教程,在Linux中搭建一个FTP服务器

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...

  3. iis7 文件服务器搭建,iis7 ftp服务器搭建

    iis7 ftp服务器搭建 内容精选 换一换 安装MySQL本文档以"CentOS 6.5 64bit(40GB)"操作系统为例,对应MySQL版本为5.1.73.CentOS 7 ...

  4. PAI平台搭建企业级个性化推荐系统

    简介:利用PAI平台快速构建一个高效的离线训练和在线推理的推荐业务系统. 直达最佳实践:[PAI平台搭建企业级个性化推荐系统] 最佳实践频道:[点击查看更多上云最佳实践] 这里有丰富的企业上云最佳实践 ...

  5. Linux中搭建一个ftp服务器详解

    来源:Linux社区  作者:luzhi1024 详解Linux中搭建一个ftp服务器. ftp工作是会启动两个通道: 控制通道 , 数据通道 在ftp协议中,控制连接均是由客户端发起的,而数据连接有 ...

  6. 如何使用 Go 语言搭建企业级高并发服务器?

    每到节假日和过年,需要外出通行的人几乎都会遇到一个问题:抢火车票!当全国上亿人都在固定的时间段抢票,服务器动辄就要承受上百万级并发的情况时,你就会明白,一个支持高并发的服务器架构有多重要! 在后端程序 ...

  7. 【转】使用Apache Kylin搭建企业级开源大数据分析平台

    http://www.thebigdata.cn/JieJueFangAn/30143.html 本篇文章整理自史少锋4月23日在『1024大数据技术峰会』上的分享实录:使用Apache Kylin搭 ...

  8. linux的FTP服务器搭建及FTP服务器的入侵和防御

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输. 与大多数Internet服 ...

  9. 【如何快速搭建企业级的WAF防火墙】

    如何快速搭建企业级的WAF防火墙 目标 1. 安装 OpenResty 2. 部署 Best-Nginx-Waf 2.1 下载 Best-Nginx-Waf 2.2 解压缩 2.3 将 best-ng ...

最新文章

  1. Mastercam X4中文版三维造型设计基础与典型范例
  2. OpenGL画矩形函数:glRectf,四个参数分别表示了位于对角线(左下到右上)上的两个点的横纵坐标
  3. 口语学习Day5:今天聊聊美国路牌PED XING是什么?
  4. 成功解决FutureWarning: reshape is deprecated and will raise in a subsequent release. Please use .values.
  5. 参加金蝶OperaMasks-WebFramework成都推广活动后的感想
  6. Spring的@Transactional注解踩坑
  7. 解决:SyntaxError: Non-UTF-8 code starting with '\xe6' in file
  8. 前端系统化学习【JS篇】:(四-1)基本数据类型之Number篇
  9. Mybatis递归自查询查(无限极分类)
  10. JanusGraph学习-安装和使用
  11. yuzu 使用指南:如何在 PC 上运行 Switch 游戏
  12. 北大计算机应用基础考研,北大考研辅导班-2021北京大学622计算机应用基础考研经验...
  13. 关于java.io.FileNotFoundException: test.txt (系统找不到指定的文件。)的问题解决办法。(相对路径出错)
  14. 电脑远程vps时无法复制粘贴怎么办
  15. 分享几款让你工作事半功倍的软件
  16. 两点之间最短距离:贪心算法 (DIJKSTRA算法)
  17. arduino串口绘图_Arduino IDE开发环境串口绘图仪(Serial Plotter)使用方法简介
  18. 安装design compiler的教程
  19. This version of the JDBC driver is only compatible with Elasticsearch version 7.9 or newer; attempti
  20. 计算机视觉:相机模型与参数标定

热门文章

  1. Winform中设置ZedGraph曲线图的水平与竖直参考线
  2. WebService入门教程_HTTP协议学习
  3. MyBatisPlus3.x中使用代码生成器(全注释)
  4. 使用Cordova打包Vue项目为IOS并使用XCode提交到AppStore
  5. java代码编译之后是如何运行的?不知道这些,面试官问你jvm问题,你只能懵圈
  6. redis高级-内存淘汰策略
  7. 【LeetCode】128. 最长连续序列
  8. 神策数据徐美玲:数字化运营,从 1 到 100 的跨越
  9. PPT 下载|神策数据业务咨询师成林松:社交裂变的场景化分析
  10. CEO 赠书 | 打破创新神话,揭示创新本质