设为首页 收藏本站
查看: 1834|回复: 0

[经验分享] vsftp服务配置详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-5-27 09:07:54 | 显示全部楼层 |阅读模式
                      
FTP服务器简介:
FTP服务器是提供文件存储和访问服务的服务器,通过ftp(文件传输协议)实现数据传输,而且FTP是仅基于TCP的服务,不支持UDP。FTP应用是一种C/S架构的应用,客户端和服务器端都需要安装相关的软件才能实现相互之间的数据传输。常见的软件套件有FileZilla,Server-U,VsFTP,Pure-FTPd ,ProFTPD等,其中VsFTP,Pure-FTPd ,ProFTPD是单纯的服务器程序,常见客户端程序有ftp,lftp。本文实验环境中采用的服务器程序是vsftp。
工作原理:
wKiom1dGr5PiApqYAADCIWwAj3w456.jpg
基于pam认证框架实现认证:
wKioL1dGsa2DsyOAAADPjjCfW-8219.jpg
安装:
1
[iyunv@sherry ~]# yum install vsftpd -y



启动:
1
2
[iyunv@sherry home]# service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]



1
2
[iyunv@sherry home]# ps -ef |grep vsftpd
root      85235      1  0 00:52 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf   #以root启动以ftp运行



默认家目录:
1
2
3
4
5
[iyunv@sherry home]# cat /etc/passwd |grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

[iyunv@sherry pub]# cd /var/ftp/pub
[iyunv@sherry pub]# touch a



客户端默认登入:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[iyunv@martin ~]# ftp 172.16.178.153
Connected to 172.16.178.153 (172.16.178.153).
220 (vsFTPd 2.2.2)
Name (172.16.178.153:root): anonymous   #匿名用户  
331 Please specify the password.
Password:                   #密码空
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (172,16,178,153,65,242).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0            4096 May 25 16:59 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (172,16,178,153,138,207).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 May 25 16:59 a
226 Directory send OK.



图形化操作: wKioL1dGskDDV9BxAAEGB0YNtdE136.jpg

创建一个ftp账号:
1
[iyunv@sherry tftp]# useradd  -g sherry -s /sbin/nologin  -d /home/tftp testftp




登入本地账号(use lftp):
1
2
3
4
5
6
7
[iyunv@martin ~]# yum install lftp -y
[iyunv@martin ~]# lftp -u testftp,111111 172.16.178.153
lftp testftp@172.16.178.153:~> ls
-rw-r--r--    1 0        0               0 May 25 17:59 1
-rw-r--r--    1 501      500             0 May 25 18:02 a
lftp testftp@172.16.178.153:/> put all.sql
651585 bytes transferred



lftp指令获取:
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
lftp testftp@172.16.178.153:/> help
    !<shell-command>                     (commands)
    alias [<name> [<value>]]             bookmark [SUBCMD]
    cache [SUBCMD]                       cat [-b] <files>
    cd <rdir>                            chmod [OPTS] mode file...
    close [-a]                           [re]cls [opts] [path/][pattern]
    debug [<level>|off] [-o <file>]      du [options] <dirs>
    exit [<code>|bg]                     get [OPTS] <rfile> [-o <lfile>]
    glob [OPTS] <cmd> <args>             help [<cmd>]
    history -w file|-r file|-c|-l [cnt]  jobs [-v]
    kill all|<job_no>                    lcd <ldir>
    lftp [OPTS] <site>                   ls [<args>]
    mget [OPTS] <files>                  mirror [OPTS] [remote [local]]
    mkdir [-p] <dirs>                    module name [args]
    more <files>                         mput [OPTS] <files>
    mrm <files>                          mv <file1> <file2>
    [re]nlist [<args>]                   open [OPTS] <site>
    pget [OPTS] <rfile> [-o <lfile>]     put [OPTS] <lfile> [-o <rfile>]
    pwd [-p]                             queue [OPTS] [<cmd>]
    quote <cmd>                          repeat [OPTS] [delay] [command]
    rm [-r] [-f] <files>                 rmdir [-f] <dirs>
    scache [<session_no>]                set [OPT] [<var> [<val>]]
    site <site_cmd>                      source <file>
    torrent [-O <dir>] <file>            user <user|URL> [<pass>]
    version                              wait [<jobno>]
    zcat <files>                         zmore <files>



在lftp上用!command执行本地命令
1
2
lftp testftp@172.16.178.153:/> !ls
a  a.bin.sql  a.sql  all.sql  anaconda-ks.cfg  install.log  install.log.syslog





获取配置文件帮助:
1
[iyunv@sherry vsftpd]# man vsftpd.conf



配置文件:
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
[iyunv@sherry vsftpd]# vim /etc/vsftpd/vsftpd.conf
# 注释
# 是否启用匿名用户
anonymous_enable=YES
# 匿名用户默认再根目录下没有写权限  子目录文件系统有写权限和服务进程开启写就可以写入 跟目录不能改权限  
# 上传
#anon_upload_enable=YES
# 删除
#anon_other_write_enable=YES
# 创建目录
#anon_mkdir_write_enable=YES
# 是否允许本地用户访问
local_enable=YES
# 是否允许本地用户上传
write_enable=YES
# 禁锢所有用户家目录 默认no
chroot_local_user=YES
# 开启对记录文件中的用户 禁锢功能  跟上面chroot_local_user=YES 不能同时使用
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
# 登入信息显示
#ftpd_banner=Welcome to blah FTP service.
# 还可以引入文件
#banner_file=/etc/vsftpd/banner
# 在有.messages的目录 切换到此目录就会显示.messages里面信息
dirmessage_enable=YES
# 用户列表是否启用  默认是黑名单
# 黑名单:userlist_enable=YES  userlist_deny=YES 第二选项可省略   
# 白名单: userlist_enable=YES  userlist_deny=NO
userlist_enable=YES
# 连接限制
# 最大并发连接数
#max_clients
# 每个ip可同时发起并发请求
#max_per_ip
# 传输速率
#  匿名用户的最大传输速率,单位是“字节/秒”
#anon_max_rate
# 本地用户的最大传输速率,单位是“字节/秒”
#local_max_rate
# 上传文件的umask
# 匿名用户上传文件的umask;
#anno_umask
# 本地用户上传文件的umask;
#local_umask
# 修改匿名用户上传文件的属主和属组:
#chown_uploads=YES
#chown_username=someuser

# 日志
xferlog_enable=YES
#xferlog_file=/var/log/xferlog



很多系统用户不能登入比如root:
1
2
3
4
5
6
7
8
9
[iyunv@sherry tftp]# cat /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



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[iyunv@sherry tftp]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody









所有的虚拟用户会映射会一个系统用户,访问时的文件目录是为此系统用户的家目录;
虚拟用户配置:
hash编码的文件:奇数行为用户名,偶数行为密码
关系型数据库:pam-mysql实现认证
查询pam_mysql.so是否安装
1
2
[iyunv@sherry vsftpd]# ls /lib64/security/pam_m
pam_mail.so       pam_mkhomedir.so  pam_motd.so



1
2
3
yum install pam_mysql  -y
[iyunv@sherry vsftpd]# ls /lib64/security/pam_m
pam_mail.so       pam_mkhomedir.so  pam_motd.so       pam_mysql.so



创建vsftpd所需用到的库,表,以及vsftpd用户
1
2
3
4
5
6
7
8
9
10
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to 'vsftpd'@'localhost' identified by '222222';
mysql> flush privileges;

mysql> create table users (
              id int AUTO_INCREMENT NOT NULL,
              name char(20) binary NOT NULL,
              password char(48) binary NOT NULL,
              primary key(id)
              );



添加虚拟用户:

1
2
mysql> insert into users(name,password) values('tom',password('tom'));
mysql> insert into users(name,password) values('jerry',password('jerry'));



配置vsftpd:
建立pam认证所需文件
1
2
3
4
5
[iyunv@sherry pam.d]# vim /etc/pam.d/vsftpd.mysql
# 认证时 crypt=2 mysql-password加密  3 md5 4sha1
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=222222 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2   
#  账号检验
account required /lib64/security/pam_mysql.so user=vsftpd passwd=222222 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2



1
2
[iyunv@sherry tftp]# useradd  -g sherry -s /sbin/nologin  -d /home/tftp testftp
[iyunv@sherry home]# chmod go+rx tftp/



1
2
3
4
5
6
7
8
9
10
11
12
请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

而后添加以下选项
guest_enable=YES
guest_username=testftp   #映射用户
pam_service_name=vsftpd.mysql



启动服务:
1
2
3
[iyunv@sherry home]# /etc/init.d/vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]



登入成功:
1
2
3
4
5
6
[iyunv@martin ~]# lftp -u tom,tom 172.16.178.153
lftp tom@172.16.178.153:/> put a.bin.sql
2448 bytes transferred
[iyunv@sherry tftp]# ll
total 644
-rw------- 1 testftp sherry   2448 May 26 04:50 a.bin.sql



权限配置:
1
2
3
[iyunv@sherry ~]# vim /etc/vsftpd/vsftpd.conf
# 配置vsftpd为虚拟用户使用配置文件目录vusers_config  名字随意
user_config_dir=/etc/vsftpd/vusers_config



创建所需要目录,并为虚拟用户提供配置文件

1
2
3
[iyunv@sherry ~]# mkdir /etc/vsftpd/vusers_config/
[iyunv@sherry ~]# cd /etc/vsftpd/vusers_config/
[iyunv@sherry ~]# touch tom jerry



虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。
1
2
3
4
[iyunv@sherry ~]# /etc/vsftpd/vusers/tom
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}




                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-222435-1-1.html 上篇帖子: RHEL 6.5 配置FTP服务器 下篇帖子: sftp 限制用户登录家目录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表