005、Vsftp安装配置
本文最后更新于 257 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

Vsftp安装配置

vsftp安装

2.1 更换源

将你这台机器的本地源换成国内的阿里的源。(在后面的安装过程相对较快)

[root@contos7 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2.2 安装epel源

[root@contos7 ~]# yum -y install epel-release

2.3 安装Vsftpd及相关依赖

[root@contos7 ~]# yum -y install vsftpd* pam* db4*
vsftpd: ftp软件
pam: 认证模块
db4: 支持文件数据库

2.4 vsftpd配置文件说明

配置文件 作用
/etc/vsftpd/vsftpd.conf vsftpd的核心配置文件
/etc/vsftpd/ftpusers 用于指定哪些用户不能访问FTP服务器
/etc/vsftpd/user_list 指定允许使用vsftpd的用户列表文件
/etc/vsftpd/vsftpd_conf_migrate_sh 是vsftpd操作的一些变量和设置脚本
/etc/ftp/ 默认情况下匿名用户的根目录

2.5 vsftpd 配置详解

属性 属性值 含义
anonymous_enable YES/NO 是否允许匿名用户(anonymous)登录FTP,如果该设置被注释,则默认允许。
local_enable YES/NO 是否允许本地系统用户登录
write_enable YES/NO 是否开启任何形式的FTP写入命令,上传文件
local_umask xxx 本地用户的umask设置,如果注释该设置则默认为077,但一般都设置成022
anon_upload_enable YES/NO 是否允许匿名用户上传文件,如果要设置为允许,则需要先开启write_enable,否则无效,此外对应目录还要具有写权限
anon_mkdir_write_enable YES/NO 是否允许匿名用户创建新目录
dirmessage_enable YES/NO 当进入某个目录时,发送信息提示给远程用户
xferlog_enable YES/NO 是否开启上传/下载的日志记录
connect_from_port_20 YES/NO 是否使用20端口来连接FTP
chown_uploads YES/NO 匿名上传的文件时是否由某一指定用户chown_username所有
chown_username 有效用户名 匿名上传的文件由该设定用户所有
xferlog_file 有效路径 设置日志文件的保存位置,默认为/var/log/xferlog

2.6 备份配置文件

vsftpd修改配置前备份配置文件。(如果不备份,配置错误后,要把文件、用户删除掉,非常麻烦)
进入/etc/vsftpd/中

cd /etc/vsftpd/

ls命令查看

[root@contos7 ~]# cd /etc/vsftpd/
[root@contos7 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@contos7 vsftpd]#

清空/tmp/

[root@contos7 vsftpd]# cd /tmp/
[root@contos7 tmp]# rm  -rf *
[root@contos7 tmp]# ls
[root@contos7 tmp]# 

开始备份

[root@contos7 tmp]# cd /etc/vsftpd/
[root@contos7 vsftpd]# cp vsftpd.conf{,.bak}
[root@contos7 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@contos7 vsftpd]# 

ls命令查看,发现多出vsftpd.conf.bak

3 vsftpd 配置匿名用户

3.1 编辑配置文件

[root@contos7 vsftpd]# vi vsftpd.conf

进入后会发现很多注释(带#的),需要修改如下内容,但是很麻烦,建议直接全部删除,直接输入如下内容。

write_enable=YES
anon_umask=022
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

拓展
如果使用vsftp的是本地用户,对应修改配置文件中的 local_umask 的值。
如果使用vsftp的是匿名用户,对应修改配置文件中的 anon_umask 的值。

3.2 常用的匿名FTP配置项

anonymous_enable=YES             # 是否允许匿名用户访问
anon_umask=022                   # 匿名用户所上传文件的权限掩码
anon_root=/var/ftp               # 设置匿名用户的FTP根目录
anon_upload_enable=YES           # 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES      # 是否允许匿名用户创建目录
anon_other_write_enable=YES      # 是否允许匿名用户有其他写入权 (改名,删除,覆盖)
anon_max_rate=0                  # 限制最大传输速率(字节/秒) 0为无限制

3.3 启动vsftp服务

重新启动vsftpd服务

[root@contos7 vsftpd]# systemctl restart vsftpd

【如果此时报错一定是因为刚才配置文件内写错了,重新回去编辑。】
查看是否有vsftpd进程。

方法一:
[root@contos7 vsftpd]# ps aux | grep vsftpd
root       8359  0.0  0.0  53180   572 ?        Ss   19:54   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root       8364  0.0  0.0 112708   976 pts/0    S+   19:55   0:00 grep --color=auto vsftpd
[root@contos7 vsftpd]#
方法二:

先下载好net工具

[root@contos7 vsftpd]# yum -y install net-tools

查看

[root@contos7 vsftpd]# netstat -lnpt | grep vsftpd
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      8359/vsftpd         
[root@contos7 vsftpd]# 

3.4 登录验证

方法一:工具访问

使用Xftp工具登录。(需要提前下载)
进入Xftp后点击建立连接,主机输入IP地址,端口号改为21,点击连接。出现FTP用户身份验证窗口,点击匿名用户登录--确定。
出现pub文件夹,说明我们成功啦~

方法二:浏览器访问

首先先关闭好防火墙。

[root@contos7 vsftpd]# systemctl stop firewalld

在浏览器中输入ftp://+IP地址访问。【每个人IP不一样,不知道IP地址的使用ip a命令查看】

image-20240220195947845

3.5 修改权限上传

3.5.1 修改权限

进入/var/ftp/中

[root@contos7 vsftpd]# cd /var/ftp/

ls命令查看下

[root@contos7 ftp]# ls
pub
[root@contos7 ftp]# 

查看pub文件夹的属主和属组

[root@contos7 ftp]# ll -d pub/
drwxr-xr-x. 2 root root 6 Jun 10  2021 pub/
[root@contos7 ftp]# 

修改属主和属组

[root@contos7 ftp]# chown -R ftp.ftp pub/ 
[root@contos7 ftp]# 

修改完成后重新查看下,root变成ftp即表示修改成功。

[root@contos7 ftp]# ll -d pub/
drwxr-xr-x. 2 ftp ftp 6 Jun 10  2021 pub/
[root@contos7 ftp]# 

修改完成后,一定不要忘记重新启动vsftpd服务(不重启服务不生效)

[root@contos7 ftp]# systemctl restart vsftpd
3.5.2 上传文件
方法一:Xftp工具

关闭刚才打开的连接窗口,重新登录。(因为修改了属主和属组)
还是使用匿名登录,登录成功后,进入到pub目录,右击桌面的“新建RTF文档”--传输,在pub目录下出现“新建RTF文档.rtf”文件,说明我们成功啦!
这时候也可以使用ls命令查看。

方法二:浏览器

先创建个文件abc.txt

[root@contos7 ftp]# touch /var/ftp/abc.txt
[root@contos7 ftp]# ls
abc.txt  pub
[root@contos7 ftp]# 

image-20240220200424778

4 vsftp配置本地(系统)用户

4.1 创建测试用户
创建两个用户zhansan、lisi

[root@contos7 ftp]# useradd zhansan
[root@contos7 ftp]# useradd lisi
[root@contos7 ftp]# 

设置密码

[root@contos7 ftp]# passwd zhansan
passwd lisiChanging password for user zhansan.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@contos7 ftp]# passwd lisi
Changing password for user lisi.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@contos7 ftp]# 

4.2 修改配置文件

[root@contos7 ftp]# vi /etc/vsftpd/vsftpd.conf

将原有内容删除,编辑如下内容:

local_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES

编辑完成后保存退出。
重新启动vsftp服务

[root@contos7 ftp]# systemctl restart vsftpd

【如果遇到:Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.情况,请查看另一篇文章解决: http://t.csdnimg.cn/TXZhw

4.3 常用的本地用户FTP配置项

local_enable=YES                        # 是否允许本地系统用户访问
local_umask=077                         #本地用户所上传文件的权限掩码
local_root=/var/ftp                         # 设置本地用户的FTP根目录
chroot_list_enable=YES                # 表示是否开启chroot的环境,默认没有开启
chroot_list_file=/etc/vsftpd/chroot_list                 # 表示写在/etc/vsftpd/chroot_list文件里面的用户 是不可以出chroot环境的,默认是可以的。
Chroot_local_user=YES                 # 表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。
local_max_rate=0                          # 限制最大传输建率(字节/秒) 0为无限制

4.4 添加用户到白名单

[root@contos7 ftp]# vi /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
zhangsan
lisi

添加完成后重新启动vsftp服务

[root@contos7 ftp]# systemctl restart vsftpd

4.5 登录测试

再次使用匿名登录,发现登录不上去,显示“用户身份验证失败是否要重试”页面。
点击否。
在“FTP用户身份验证”页面用户名输入zhangsan或者lisi,输入密码登录。
cd /home/lisi/
创建zhangsan.txt文件
touch lisi.txt
重新启动vsftp服务
systemctl restart vsftpd
重新启动后在Xftp工具中再重新登录一下。
发现出现lisi.txt文件,成功!

5 vsftp配置虚拟用户

5.1 建立虚拟FTP用户账号

[root@contos7 ftp]# useradd -s /sbin/nologin vu

5.2 创建虚拟用户文件

[root@contos7 ftp]# cd /etc/vsftpd/
[root@contos7 vsftpd]# vi user

添加如下内容:

zhao
12345
zhang
12345

奇数行代表用户名,偶数行代表密码。【切记,如下账号和密码不能写在同一行中】

5.3 创建数据文件

通过 db_load工具创建出 Berkeley DB 格式的数据库文件。

[root@contos7 vsftpd]# db_load -nTV -f useruser.db
Berkeley DB 5.3.21: (May 11, 2012)
[root@contos7 vsftpd]# 
-f                  指定数据原文件
-T                 允许Berkeley DB的应用程序使用文本格式转换的DB数据文件

ls命令查看。

5.4 建立支持虚拟用户的PAM认证文件

[root@contos7 vsftpd]# vi /etc/pam.d/vsftpd.vu

编写配置文件,最后的路径不要写错!

auth   required   /lib64/security/pam_userdb.so db=/etc/vsftpd/user   
account   required   /lib64/security/pam_userdb.so db=/etc/vsftpd/user

【对应刚才生成user.db文件 】

5.5 修改配置文件

[root@contos7 vsftpd]# vi vsftpd.conf
编写如下内容。

write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
guest_enable=YES
guest_username=vu
pam_service_name=vsftpd.vu
local_enable=YES
local_umask=077
chroot_local_user=YES
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_dir

5.6 常用的全局配置项

listen=YES                                #是否以独立运行的方式监听服务
listen_address=192.168.10.112               #设置监听FTP服务的IP地址
listen_port=21                                 #设置监听FTP服务的端口号
write_enable=YES                        #是否启动写入权限(上传、删除文件)
download_enable=YES                   #是否允许下载文件
dirmessage_enable=YES                #用户切换目录显示.message文件
xferlog_enable=YES                        # 启用日志文件,记录到/var/log/xferlog
xferlog_std_format=YES    # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
connect_from _port_20=YES        # 允许服务器主动模式 (从20端口建立数据连接)
pasv_enabTe=YES                        # 允许服务器被动模式
pasv_max_port=24600                   # 设置被动模式服务器的最大端口号
pasv_min_port=24500                        # 设置黄动模式服务的最小端口
pam_service_name=vsftpd                # 用户认证的PAM文件位置
(/etc/pam.d/vsftpd.vu)
userlist_enable=YES                        # 是否启用user_list列表文件
userlist_deny=YES                        # 是否禁用user_list中的用户
max_cIients=0                                #限制并发客户端连接数
max_per_ip=0                                # 限制同一IP地址的井发连接数
tcp_wrappers=YES                        #是否启用tcp_wrappers主机访问控制
chown_username=root                #表示匿名用户上传的文件的拥有人是root,默认关闭
ascii_upload_enable=YES           # 表示是否允许用户可以上传一个二进制文件,默认不允许
ascii_download_enable=YES        #代表是否允许用户下载个一个二进制文件,默认不允许
nopriv_user=vsftpd                        #设置支撑vsftpd服务的宿主用户为手动建立的vsftpd用户
async_abor_enable=YES                # 设定支持异步传输功能
ftpd_banner=welcome to Awei FTP servers          # 设定vsftpd的登录标语
guest_enable=YES                        # 设置启用虚拟用户功能
guest_username=ftpuser                 #指定虚拟用户的宿主用户
virtual_use_local_privs=YES                # 设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf        # 设定虚拟用户个人vsftp的配置文件存放路径

5.7 为用户建立独立的配置目录及文件

[root@contos7 vsftpd]# mkdir /etc/vsftpd/user_dir

进入刚创建的文件夹

[root@contos7 vsftpd]# cd /etc/vsftpd/user_dir
[root@contos7 user_dir]# vi zhao

输入如下命令(虚拟用户数据的存放路径)

local_root=/etc/vsftpd/data

5.8 创建虚拟用户数据存放位置

创建data目录

[root@contos7 user_dir]# mkdir /etc/vsftpd/data

授权

[root@contos7 user_dir]# chmod 777 /etc/vsftpd/data

5.9 重启vsftp服务

[root@contos7 user_dir]# systemctl restart vsftpd

5.10 登录测试

使用Xftp工具,用户名zhao,密码12345,进行登录。
cd /etc/vsftpd/data
创建一个zhao.txt文件夹。
touchzhao.txt

重点:
本地用户和虚拟用户不能同时登录、因为认证方式只有一种
本地是 pam_service_name =vsftpd
虚拟是 pam_service_name =vsftpd.vu

谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇