CentOS平台部署vsftp(基于虚拟用户)
1. 安装FTP
1
2
|
[root@task ~] # yum install vsftpd –y [root@task ~] # chkconfig vsftpd on # 配置开机启动 |
2. 配置ftp(修改主配置文件)
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@task ~] # cd /etc/vsftpd/ [root@task vsftpd] # vim vsftpd.conf anonymous_enable=NO # 拒绝匿名用户 chroot_list_enable=YES # 使用户不能离开主目录 ascii_upload_enable=YES # 设定支持ASCII模式的上传和下载功能 ascii_download_enable=YES pam_service_name=vsftpd # PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证 guest_enable=YES # 设定启用虚拟用户功能 guest_username= ftp # 指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了 user_config_dir= /etc/vsftpd/vuser_conf #设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名) xferlog_file= /var/log/xferlog # 配置vsftpd日志 |
3. 配置pam认证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[root@task vsftpd] # yum install db4 db4-utils –y # 安装Berkeley DB工具 [root@task vsftpd] # vim /etc/vsftpd/vuser_passwd # 创建用户密码文本,注意奇行是用户名,偶行是密码 shaw xxxxxxxx task xxxxxxxxx [root@task vsftpd] # db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db # 生成虚拟用户认证的db文件 [root@task vsftpd] # vim /etc/pam.d/vsftpd #编辑认证文件,全部注释掉原来语句,再增加以下两句 #%PAM-1.0 #session optional pam_keyinit.so force revoke #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #auth required pam_shells.so #auth include password-auth #account include password-auth #session required pam_loginuid.so #session include password-auth auth required pam_userdb.so db= /etc/vsftpd/vuser_passwd account required pam_userdb.so db= /etc/vsftpd/vuser_passwd |
4. 创建用户
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 创建虚拟用户配置文件 [root@task vsftpd] # mkdir /etc/vsftpd/vuser_conf # 注意:文件名定义为vuser_passwd.txt里面的账户名,否则下面设置无效 [root@task vsftpd] # vim /etc/vsftpd/vuser_conf/shaw local_root= /data/ftp/shaw # 指定用户家目录 write_enable=YES anon_umask=022 anon_max_rate=5120000 # 限速 anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_upload_enable=YES anon_world_readable_only=NO |
5. 设置FTP目录权限
1
2
3
4
5
6
7
|
[root@task vsftpd] # mkdir /data/ftp –p # 创建虚拟用户数据存放目录 [root@task vsftpd] # mkdir /data/ftp/shaw # 创建用户数据目录 [root@task vsftpd] # chmod -R 755 /data/ # 建立限制用户访问目录的空文件 [root@task ~] # touch /etc/vsftpd/chroot_list # 如果启用vsftpd日志需手动建立日志文件 [root@task ~] # touch /var/log/xferlog |
6. 配置被动模式
1
2
3
4
5
|
[root@task ~] # vim /etc/vsftpd/vsftpd.conf pasv_enable=YES # 开启被动 pasv_min_port=40000 pasv_max_port=40080 [root@task ~] # /etc/init.d/vsftpd restart |
7. 配置ssl
1
2
3
4
5
6
7
8
9
|
ssl_enable = YES # 启用ssl allow_anon_ssl = NO # 不允许匿名用户使用ssl force_local_data_ssl = YES # 强制数据传输使用ssl force_local_logins_ssl = YES # 强制登录认证使用ssl ssl_tlsv1 = YES ssl_sslv2 = NO ssl_sslv3 = NO rsa_cert_file = / etc / vsftpd / server.crt # 证书信息 rsa_private_key_file = / etc / vsftpd / server.key # 证书信息 |
8. FTP自动安装py
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
#!/bin/env python # -*- coding:utf-8 -*- ''' 基于CentOS 6 平台部署vsftpd(粗糙版,待完善。。。) ''' import subprocess import os, sys, time,re ''' FTP主配置文件 anonymous_enable=NO # 禁止匿名用户登录 local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES # 开启日志 connect_from_port_20=YES xferlog_std_format=YES ascii_upload_enable=YES # 设定支持ASCII模式的上传
chroot_list_enable=YES # 使用户不能离开主目录 listen=YES listen_port=43121 # 监听端口 pam_service_name=vsftpd # PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证 guest_enable=YES # 设定启用虚拟用户功能 guest_username=ftp # 指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了 user_config_dir=/etc/vsftpd/vuser_conf # 设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名) xferlog_file=/var/log/xferlog userlist_enable=YES tcp_wrappers=YES pasv_enable=YES # 开启被动 pasv_min_port=40000 # 被动模式端口 pasv_max_port=40080 # 被动模式端口 ''' ''' 虚拟用户配置文件 local_root=/data/ftp/task # 虚拟用户数据文件目录 write_enable=YES anon_umask=022 anon_max_rate=5120000 # 限速5M anon_mkdir_write_enable=YES # 允许创建文件 anon_other_write_enable=YES anon_upload_enable=YES # 允许上传 anon_world_readable_only=NO
''' ssl_enable = YES # 启用ssl allow_anon_ssl = NO # 不允许匿名用户使用ssl force_local_data_ssl = YES # 强制数据传输使用ssl force_local_logins_ssl = YES # 强制登录认证使用ssl ssl_tlsv1 = YES ssl_sslv2 = NO ssl_sslv3 = NO rsa_cert_file = / etc / vsftpd / server.crt # 证书信息 rsa_private_key_file = / etc / vsftpd / server.key # 证书信息
def __init__( self ): self .user = '' self .passwd = '' self .ftpuser = 'task' self .ftpsswd = 'q.123456' self .ftpath = '' self . file = '/etc/vsftpd/vsftpd.conf' self .path = '/etc/vsftpd/' self .userconf_list = [] def ftp_install( self ): ''' 安装vsftpd :return: ''' ret = subprocess.call( 'rpm -qa | grep vsftpd' , shell = True ) if ret = = 0 : print '#Info vsftpd is already installed.' return True else : subprocess.call( 'yum install vsftpd -y' , shell = True ) subprocess.call( 'chkconfig vsftpd on' , shell = True ) print '#Info vsftpd successful installation.' def modify_conf( self ): ''' 修改vsfptd主配置文件 :return: ''' ret = subprocess.call( 'wget -c ftp://%s:%s@x.x.x.x/ftp_install/ftp.conf' % ( self .ftpuser, self .ftpsswd),shell = True ) # 直接下载编辑好的FTP主配置文件 if ret = = 0 : print '#Info ftp.conf download success.' else : print '#Info ftp.conf download failed.' return False with open ( 'ftp.conf' , 'r+' ) as h: with open ( self . file , 'w+' ) as f: f.write( '# Example config file /etc/vsftpd/vsftpd.conf created by shaw.\n' ) for lines in h: if 'xferlog_file' in lines: subprocess.call( 'touch %s' % lines.split( '=' )[ 1 ],shell = True ) f.write(lines) os.remove( 'ftp.conf' ) def pam_auth( self ): ''' 生产虚拟用户认证文件 :return: ''' rets = subprocess.call( 'rpm -qa | grep db4' ,shell = True ) if rets = = 0 : print '#INFO db4 install success.' else : ret = subprocess.call( 'yum –y install db4 db4-utils' ,shell = True ) if ret ! = 0 : print '#INFO db4 install failed.' return False with open ( '%s/vuser_passwd' % self .path, 'w+' ) as f: self .user = raw_input ( '请输入要创建的FTP用户名:' ).strip() self .passwd = raw_input ( '请输入FTP密码:' ).strip() f.write( '%s\n' % self .user) # 这里有BUG:因为定义FTP虚拟用户时,用户名一行(奇数行),密码一行(偶数行),为了换行,python在写入时,添加了换行符'\n',导致实际生成的文件,密码在第三行,第二行为空行 f.write( self .passwd) subprocess.call( 'db_load -T -t hash -f %s/vuser_passwd %s/vuser_passwd.db' % ( self .path, self .path),shell = True ) f = open ( '/etc/pam.d/vsftpd' , 'w+' ) f.write( 'auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd\n' ) f.write( 'account required pam_userdb.so db=/etc/vsftpd/vuser_passwd' ) f.close() def create_ftpath( self ): ''' 创建虚拟用户目录,授权 :return: ''' self .ftpath = raw_input ( '请输入要创建的FTP根目录:' ).strip() subprocess.call( 'mkdir -p %s/%s' % ( self .ftpath, self .user),shell = True ) subprocess.call( 'touch %s/chroot_list' % self .path, shell = True ) subprocess.call( 'chown -R ftp.ftp %s' % self .ftpath,shell = True ) def create_user( self ): ''' 编辑虚拟用户配置文件 :return: ''' os.system( 'mkdir %s/vuser_conf' % self .path) subprocess.call( 'wget -c ftp://%s:%s@x.x.x.x/ftp_install/vuser.conf' % ( self .ftpuser, self .ftpsswd),shell = True ) # 直接下载编辑好的虚拟用户配置文件 os.rename( 'vuser.conf' , '%s/vuser_conf/%s' % ( self .path, self .user)) with open ( '%s/vuser_conf/%s' % ( self .path, self .user), 'r+' ) as h: for line in h: self .userconf_list.append(line) self .userconf_list[ 0 ] = 'local_root=%s/%s\n' % ( self .ftpath, self .user) with open ( '%s/vuser_conf/%s' % ( self .path, self .user), 'w+' ) as f: for i in self .userconf_list: f.write(i) if __name__ = = '__main__' : val = Ftp_init() val.ftp_install() val.modify_conf() val.pam_auth() val.create_ftpath() val.create_user() try : subprocess.check_call( '/etc/init.d/vsftpd restart' ,shell = True ) except Exception as e: print 'VSFTP installed filed' |
CentOS平台部署vsftp(基于虚拟用户)的更多相关文章
- vsftp 基于虚拟用户的ftp服务器 如何做配额
做配额的方法: 1,是用磁盘配额,但是虚拟用户好像没有好办法.只能应用于本地用户.与Vsftpd设置无关 2,文件夹限制大小,是占用的.这和Vsftpd没有关系 所以可以先把用户禁锢在自己工作目录里面 ...
- CentOS 6.3下安装Vsftp,虚拟用户
CentOS 6.3下安装Vsftp,虚拟用户一.安装:1.安装Vsftpd服务相关部件:[root@linuxidc.com ~]# yum install vsftpd*Dependencies ...
- CentOS FTP基于虚拟用户的配置
详细可以看:http://www.linuxidc.com/Linux/2013-12/94242.htm 所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的.虚拟用户不能登录 ...
- vsftp搭建+虚拟用户
yum安装vsfpd: [root@localhost ~]# yum -y install vsftpd db4-utils Loaded plugins: fastestmirror, refre ...
- vsftp之虚拟用户
1.安装: yum install -y vsftpd yum install -y lftp2.创建用户useradd virftp -s /sbin/nologin3.创建虚拟用户及其存放路径vi ...
- VSFTP 配置虚拟用户
虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源.所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性. 在VSF ...
- 构建基于虚拟用户的vsftpd服务器
安装: [root@server ~]# yum install -y vsftpd [root@server ~]# rpm -ql vsftpd /etc/logrotate.d/vsftpd / ...
- Linux系统学习 十八、VSFTP服务—虚拟用户访问—配置虚拟用户访问
配置虚拟用户访问 首先至少要关闭userlist 改完配置文件是要重启服务来使它生效 其实在刚装好vsftp的时候的配置文件不用修改的情况下配置虚拟用户访问控制是最好的 local_root选项不影响 ...
- 基于虚拟用户登录的ftp服务配置
文章结构: 一.使用逻辑卷配置ftp数据存放目录 二.安装和配置vsftpd服务 三.使用不通权限的用户访问ftp服务器 系统环 ...
随机推荐
- WPF中TreeView的使用
因为项目中需要用到TreeView控件,由于是第一次在WPF中用到,因此事先在网上搜了很多关于数据绑定的方法介绍,个人经过实际应用,觉得WPF中的HierarchicalDataTemplate定义模 ...
- [Linux编程]__read_mostly变量含义
1.定义 __read_mostly原语将定义的变量为存放在.data.read_mostly段中,原型在include/asm/cache.h 中定义: #define __read_mostly ...
- Spring Boot快速开发Web项目
我们以前使用Spring框架的时候,需要首先在pom文件中增加对相关的的依赖,然后新建Spring相关的xml文件,而且往往那些xml文件还不会少.然后继续使用tomcat或者jetty作为容器来运行 ...
- VBA_Excel_教程:单元格颜色
Sub SetCellColor() '设置单元格颜色 Sheet1.Cells(, ).Interior.ColorIndex = End Sub
- 外壳exe通过反射调用dll时
外壳exe通过反射调用dll时,dll是 4.0的框架,外壳exe也需要编译成4.0的框架,如果dll本身有调用32位的dll,那么外壳exe也需要编译成32位. 调试时报的那个错,直接继续运行,不影 ...
- Jstl简单应用
jsp引入信息------ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" % ...
- Unity3d程序运行的时候在unity3d标志哪里进不去的原因
我那个去,居然是有两个error..我郁闷了,unity编译器有error居然也能打包能apk.我真是醉了.搞了我几个小时.
- java技术 spring 配置
spring 的IOC是反射注入,用来管理对象的创建与销毁.一般使用都是在启动的web服务器的时候就创建了对象,可以选择自动装配对象管理,将对象引用实现与引用分开.采用的xml配置方式.及大减少了各个 ...
- 慕课网-Java入门第一季-7-2 Java 中无参无返回值方法的使用
来源:http://www.imooc.com/code/1578 如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法. 方法的使用分两步: 第一步,定义方法 例如:下面代码定义了一个方法名 ...
- iOS富文本
背景:前些天突然想做一个笔记本功能,一开始,觉得挺简单的呀,一个UITextView,网络缓存也不干了,直接本地NSUserDefault存储,然后完事了,美工,弄几张好看的图片,加几个动画,也就这样 ...