Linux中vsftpd服务配置(匿名,用户,虚拟用户)

vsftpd概述

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。

特点

非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高
小巧轻快,安全易用。

ftp、sftp、vsftp、vsftpd这四个的区别

  • ftp 是File Transfer Protocol的缩写,文件传输协议,用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。
  • sftp 是SSH File Transfer Protocol的缩写,安全文件传输协议;
  • vsftp 是一个基于GPL发布的类Unix系统上使用的ftp服务器软件,它的全称是Very Secure FTP从此名称可以看出来,编制者的初衷是代码的安全;
  • vsftpd 是very secure FTP daemon的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件;

一,匿名用户登录ftp(文件在/var/ftp)

1,安装vsftpd服务

[[email protected] ~]# yum install vsftpd -y   ##安装服务
[[email protected] ~]# cd /etc/vsftpd/    ##此目录是配置文件目录
[[email protected] vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[[email protected] vsftpd]# systemctl start vsftpd     ##开启vsftpd服务
[[email protected] vsftpd]# systemctl stop firewalld.service    ##关闭防火墙
[[email protected] vsftpd]# setenforce 0    ##关闭增强功能
[[email protected] vsftpd]# ls /var/ftp/        ##切换到ftp目录下
pub
[[email protected] vsftpd]# echo "this is test" > /var/ftp/test.txt   ##添加一个文本文件

2,用测试机cmd访问vsftpd服务(cmd连接ftp)并下载文件

C:\Users\xy007>ftp 192.168.13.140    ##访问ftp服务
连接到 192.168.13.140。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.13.140:(none)): ftp       ##匿名访问
331 Please specify the password.
密码:                                                ##密码无 回车
230 Login successful.
ftp> pwd            ##查看当前路径
257 "/"               ##ftp服务的根目录
ftp> ls -a           ##查看目录中的内容
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
.
..
pub
test.txt               ##服务器中的文件
226 Directory send OK.
ftp: 收到 25 字节,用时 0.00秒 25000.00千字节/秒。
ftp> get test.txt  ##下载文件到本地(在哪个磁盘的访问就下载到哪里,可以切换磁盘来下载e:)
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test.txt (13 bytes).
226 Transfer complete.
ftp: 收到 13 字节,用时 0.00秒 13000.00千字节/秒。
ftp> put test1.txt   ##在c盘中创建一个test1.txt然后上传到Linux中
200 PORT command successful. Consider using PASV.
550 Permission denied.    ##此时是权限受限的

3,修改vsftpd配置文件将匿名访问开启最大权限

[[email protected] ftp]# cd /etc/vsftpd/
[[email protected] vsftpd]# vim vsftpd.conf
##在配置文件中查找开启下列选项
anonymous_enable=YES       ##开启匿名用户
local_enable=YES    ##本地用户
write_enable=YES    ##写入权限
local_umask=022     ##本地用户反掩码
anon_upload_enable=YES   ##上传权限开启
anon_mkdir_write_enable=YES   ##开启创建目录并且能够写入
anon_other_write_enable=YES   ##添加一个other的重命名和删除的权限

[[email protected] vsftpd]# systemctl restart vsftpd  ##重启服务
[[email protected] vsftpd]# cd /var/ftp/    ##切换到ftp目录下
[[email protected] ftp]# ls
pub  test.txt
[[email protected] ftp]# ls -l
总用量 4
drwxr-xr-x. 2 root root  6 10月 31 2018 pub
-rw-r--r--. 1 root root 13 11月  5 19:14 test.txt
[[email protected] ftp]# chmod 777 pub   ##将pub目录权限给最大,注意不能直接给ftp权限最大

4,用测试机cmd访问ftp并上传本地文件到Linux上

C:\Users\xy007>ftp 192.168.13.140   ##访问ftp服务
连接到 192.168.13.140。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.13.140:(none)): ftp
331 Please specify the password.
密码:
230 Login successful.
ftp> cd pub/                             ##切换到pub目录下
250 Directory successfully changed.
ftp> put test1.txt                      ##上传文件
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 13 字节,用时 0.03秒 0.41千字节/秒。
ftp> by     ##退出
221 Goodbye.
##你也可以使用delete删除文件

5,查看上传的文件

[[email protected] ftp]# cd /var/ftp/pub  ##切换到pub目录下
[[email protected] pub]# ls     ##查看上传的文件
test1.txt

二,利用本地用户登录ftp(文件在家目录)

防止本地用户访问系统目录,限制仅访问用户家目录

1,创建系统用户

[[email protected] pub]# useradd zhangsan   ##创建用户并设置用户密码
[[email protected] pub]# passwd zhangsan
[[email protected] pub]# useradd lisi   ##创建用户并设置用户密码
[[email protected] pub]# passwd lisi

2,测试机上cmd使用用户登录ftp

C:\Users\xy007>ftp 192.168.13.140   ##登录ftp服务
连接到 192.168.13.140。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.13.140:(none)): zhangsan   ##使用本地用户
331 Please specify the password.
密码:
230 Login successful.
ftp> ls /       ##查看用户/下的目录文件,直接到系统根目录下
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
/bin
/boot
/dev
/etc
/home
/lib
/lib64
/media
/mnt
/opt
/proc
/root
/run
/sbin
/srv
/sys
/tmp
/usr
/var
226 Directory send OK.
ftp: 收到 126 字节,用时 0.02秒 7.88千字节/秒。

3,防止本地用户访问系统目录,限制仅访问用户家目录

[[email protected] pub]# vim /etc/vsftpd/vsftpd.conf    ##修改配置文件

chroot_local_user=YES   ##开启限制本地访问系统目录模块
allow_writeable_chroot=YES ##添加写的权限

[[email protected] pub]# systemctl restart vsftpd   ##重启服务

4,测试机cmd访问

C:\Users\xy007>ftp 192.168.13.140   ##访问ftp
连接到 192.168.13.140。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.13.140:(none)): zhangsan   ##用户zhangsan
331 Please specify the password.
密码:
230 Login successful.
ftp> cd /    ##切换到系统根目录
250 Directory successfully changed.
ftp> ls     ##查看发现还是在用户的家目录中,访问不到系统的其他目录了,增强了安全性
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.

设置允许,拒绝指定用户访问ftp

1,设置user-list(默认拒绝),允许或者拒绝特定用户登录ftp

[[email protected] pub]# cd /etc/vsftpd/  ##切换到vsftpd配置文件目录
[[email protected] vsftpd]# vim vsftpd.conf

userlist_enable=YES ##确认user-list开启

[[email protected] vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[[email protected] vsftpd]# echo "zhangsan" >> user-list   ##将zhangsan用户添加到列表中
[[email protected] vsftpd]# systemctl restart vsftpd    ##重启服务

2,用测试机cmd测试

C:\Users\xy007>ftp 192.168.13.140
连接到 192.168.13.140。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.13.140:(none)): zhangsan   ##使用zhangsan登录
530 Permission denied.
登录失败。                                        ##直接拒绝登录
ftp>

3,设置列表为仅允许

[[email protected] ftp]# cd /etc/vsftpd/
[[email protected] vsftpd]# vim vsftpd.conf  ##配置vsftpd配置文件
userlist_enable=YES
userlist_deny=NO   ##添加列表允许

[[email protected] vsftpd]# systemctl restart vsftpd   ##重启服务

4,测试机cmd测试

C:\Users\xy007>ftp 192.168.13.140
连接到 192.168.13.140。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.13.140:(none)): zhangsan   ##用zhangsan去登录
331 Please specify the password.
密码:
230 Login successful.        ##登录成功
ftp> by
221 Goodbye.

C:\Users\xy007>ftp 192.168.13.140
连接到 192.168.13.140。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.13.140:(none)): lisi       ##用lisi去登录
530 Permission denied.
登录失败。                           ##登录失败

三,建立虚拟用户账户使用ftp(文件在系统用户vuser家目录)

1,创建虚拟用户文件

[[email protected] vsftpd]# cd /etc/vsftpd/  ##切换到配置文件目录下
[[email protected] vsftpd]# vim vuser      ##创建虚拟用户文件

lisa           ##奇数行为用户名
123123    ##偶数行为密码
tom
123123

2,转换数据库文件,设置安全权限

[[email protected] vsftpd]# db_load -T -t hash -f vuser vuser.db    ##将vuser转换成数据库文件
##T转换,t类型,f指定文件
[[email protected] vsftpd]# chmod 600 vuser      ##安全起见,不让别人看到,设置权限
[[email protected] vsftpd]# chmod 600 vuser.db

3,编辑pam认证模块支持虚拟用户登录

[[email protected] vsftpd]# useradd -d /opt/vuser -s /sbin/nologin vuser
##创建系统用户,指定家目录,不能登录
[[email protected] vsftpd]# vim /etc/pam.d/vsftpd.vu   ##编译pam认证模块

auth required pam_userdb.so db=/etc/vsftpd/vuser    ##识别转换过的数据库文件
account required pam_userdb.so db=/etc/vsftpd/vuser   ##连接的密码服务

4,开启虚拟用户,使用pam模块认证登录

[[email protected] vsftpd]# vim vsftpd.conf  ##修改配置文件
##大G到末行
#pam_service_name=vsftpd   ##注释
##添加下面三行内容
guest_enable=YES           ##开启来宾用户访问
guest_username=vuser      ##使用vuser用户名
pam_service_name=vsftpd.vu   ##pam模块
[[email protected] vsftpd]# systemctl restart vsftpd   ##重启服务

5,测试机cmd测试

C:\Users\xy007>ftp 192.168.13.140
连接到 192.168.13.140。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.13.140:(none)): tom   ##使用虚拟用户tom登录
331 Please specify the password.
密码:
230 Login successful.
ftp> put test1.txt      ##上传一个文件
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 13 字节,用时 0.00秒 13000.00千字节/秒。
##查看文件的权限为600
[[email protected] vsftpd]# ls -l /opt/vuser/
总用量 4
-rw-------. 1 vuser vuser 13 11月  5 22:51 test1.txt

6,单独用户配置,指定上传文件的权限644

[[email protected] vsftpd]# vim vsftpd.conf
##大G末行添加
user_config_dir=/etc/vsftpd/vu_dir   ##单独用户配置文件夹

[[email protected] vsftpd]# mkdir vu_dir  ##创建文件夹
[[email protected] vsftpd]# cd vu_dir/
[[email protected] vu_dir]# vim lisa     ##在配置文件夹里创建用户配置文件

anon_umask=022  ##指定上传文件的权限

[[email protected] vu_dir]# systemctl restart vsftpd  ##重启服务

7,测试机cmd使用lisa用户登录,查看上传文件权限

C:\Users\xy007>ftp 192.168.13.140
连接到 192.168.13.140。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.13.140:(none)): lisa    ##使用lisa登录
331 Please specify the password.
密码:
230 Login successful.
ftp> put 111.txt        ##上传文件
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 13 字节,用时 0.00秒 13000.00千字节/秒。

[[email protected] vu_dir]# ls -l /opt/vuser/   ##查看上传文件的权限
总用量 8
-rw-r--r--. 1 vuser vuser 13 11月  5 22:58 111.txt    ##lisa上传文件权限644
-rw-------. 1 vuser vuser 13 11月  5 22:51 test1.txt  ##tom上传文件权限600

谢谢阅读!

原文地址:https://blog.51cto.com/14080162/2448059

时间: 2024-08-25 06:22:52

Linux中vsftpd服务配置(匿名,用户,虚拟用户)的相关文章

linux vsftpd 配置安装 (虚拟用户)

linux vsftp创建虚拟用户 FTP有三种登录方式:匿名登录.本地系统用户登录和虚拟用户登录. 虚拟用户是ftp服务器的专用用户,它的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源.所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性.在VSFTP中,认证这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证.使用这种方式更加安全,并且配置更加灵活. vsftp 配置安装 -

Linux vsftpd服务配置详解

[背景] 近日,一朋友domino服务器要进行升级.迁移,搭建了linux测试系统,也开启vsftpd服务,可是配置的ftp账号,程序无法正常下载附件. [问题跟踪] 通过ftp客户端连接工具登录,发现未跳转到ftp账号指定的目录下面. cat /etc/vsftpd.config发现开启了: local_root=/home/test 将此注释重启ftp服务正常. 附录(vsftpd配置详解): vsftpd服务器配置文件"/etc/vsftpd/vsftpd.conf",以此为例.

linux中FTP服务搭建详解--1.匿名与权限

实验环境:在redhat6.5中安装配置FTP服务,并使用一台win7系统访问验证. 理论: FTP连接方式     支持两种连接模式:主动模式(Port)和被动模式(Pasv),这两种模式都是针对数据链路进行的,与控制链路无关. 主动模式工作过程: 1.客户端从自己的一个任意端口(N > 1024)和FTP服务器的21端口建立控制链路2.然后客户端发出Port指令告诉服务器连接自己的N+1端口来建立一条数据通道3.当FTP服务器接到这一指令时,会使用20端口连接用户在Port指令中指定的端口号

vsftpd的基于pam_mysql的虚拟用户配置示例      

第一步:安装vsftpd和mariadb ~]# yum install mariadb-server ~]# yum install vsftpd 因为中CentOS 7平台上/lib64/security/中没有pam_mysql模块驱动,需要编译安装pam_mysql这个模块. 准备编译环境 安装Development Tools 和 service platform Development这两个包组,另外需要安装依赖到的开发包pam-devel,openssl-devel,mariadb

创建vsftpd服务器基于mysql的虚拟用户认证

简单罗列基础命令,只分享我的想法! 一.目的 要求:配置允许虚拟用户访问的vsftpd服务器,虚拟用户存储在另一台MySQL的服务器上面,虚拟用户账号有两个分别是tom和jerry,密码是tom和jerry,要求对这两个账户的权限做一下限制(根据实际的要求,自己调节). 环境:MySQL服务器(172.16.49.1),CentOS 6.6和MariaDB-5.5.43.另一台是通过yum安装vsftpd(192.168.0.22),OS是CentOS 6.6. MySQL是通用二进制格式安装,

Linux安装vsftpd及配置详解

1 安装vsftpd组件 安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件.[[email protected] ~]# yum -y install vsftpd 2.FTP主动模式与FTP被动模式的端口说明 FTP是仅基于TCP的服务,不支持UDP. 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口).通常来说这两个端口是21(命令端口)和20(数据端口).但FTP工作方式的不同,数据端口并不总是20.这就是主动与被动FTP

02.FTP服务原理及vsftpd服务配置

02.FTP服务原理及vsftpd服务配置 ·FTP(File Transfer Protocol)是个古老并且应用广泛的互联网协议,提供了一种可靠的方式在网络上进行文件共享, ·FTP是cs架构的服务,拥有一个服务器端和客户端,使用TCP协议作为底层传输协议,提供数据传输的可靠性, ·FTP的标准端口为20.21,20为数据接口,21为指令接口, ·FTP模式:(针对数据传输) ·主动模式,客户端通过联系服务器21端口后,服务器20端口主动发起连接给客户端, ·被动模式,客户端通过联系服务器2

安装vsftpd+pam+mysql实现对虚拟用户身份认证功能

安装vsftpd+pam+mysql来实现对虚拟用户身份认证功能 事项说明:在这里vsftpd直接使用yum  -y  install   vsftpd来直接安装的:mysql是使用通用二进制格式安装的,使用的版本为mysql-5.5.28.这里不再介绍安装步骤,前面已经详细介绍过.由于vsftpd需要借助pam模块到mysql数据库中检索用户名和密码,在这里还需要安装pam-mysql模块,才能实现pam到mysql中完成用户名和密码的认证功能. 一.安装所需要程序 1.事先安装好开发环境和m

Centos6下vsftpd基于mysql认证创建虚拟用户

一,安装环境以及安装的软件: 1,CentOS release 6.4 (Final) [IP:192.168.1.110] 2,vsftpd-2.2.2-13.el6_6.1.x86_64 3,pam_mysql-0.7-0.12.rc1.el6.x86_64 4,mysql-5.6.16(编译安装) 二,在数据库上创建登录ftp的账号和密码 1,创建对应的database,远程授权登录账号并创建表用来存储登录ftp账号密码. mysql> create database vsftpd; my