ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

CentOS 7.x 搭建vsftpd服务

2021-05-12 16:01:17  阅读:161  来源: 互联网

标签:15.22 CentOS etc -- vsftpd 172.16 root 搭建


目录


vsftpd部署

  1. 当前环境
  0 18:21:15 root@vsftpd,172.16.15.22:~ # cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
  1. 下载vsftpd包并安装
  0 18:21:19 root@vsftpd,172.16.15.22:~ # mkdir -p /server/packages
  0 18:21:58 root@vsftpd,172.16.15.22:~ # cd /server/packages
  0 18:22:01 root@vsftpd,172.16.15.22:/server/packages # wget http://www.rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm
  0 18:22:08 root@vsftpd,172.16.15.22:/server/packages # rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm

单用户配置

  1. 修改配置文件。
  0 18:22:25 root@vsftpd,172.16.15.22:/server/packages # cd /etc/vsftpd/
  0 18:22:43 root@vsftpd,172.16.15.22:/etc/vsftpd # cp vsftpd.conf{,.bak}
  0 18:23:20 root@vsftpd,172.16.15.22:/etc/vsftpd # egrep -v '^#|^$' vsftpd.conf.bak >vsftpd.conf
  0 18:23:25 root@vsftpd,172.16.15.22:/etc/vsftpd # vim vsftpd.conf
# 如下对常用的一些配置做解释。
use_localtime=YES                        # 使用本地时间,否则ftp中的文件会有8小时时差。
anonymous_enable=NO                      # 关闭匿名登录。
write_enable=YES                         # 允许本地用户写入。
xferlog_enable=YES                       # 启用记录用户上传下载的日志。
xferlog_std_format=YES                   # 启用日志格式化。
xferlog_file=/var/log/xferlog            # 设置日志目录。
local_enable=YES                         # 开启本地账户登录。
local_umask=022                          # 设置本地用户上传文件的默认文件掩码(022代表最终文件权限为755)。
local_root=/server/ftpdir                # 设置本地用户登录后的主目录。
userlist_enable=YES                      # 是否启用“限制登录名单”的功能。
userlist_deny=NO                         # NO代表user_list名单中的用户可登录,YES代表名单中的用户不可登录。
userlist_file=/etc/vsftpd/user_list      # 指定名单文件的路径,此文件默认存在。
allow_writeable_chroot=YES               # 开启目录限制名单可写。
chroot_list_enable=YES                   # 是否启用“限制目录切换名单”功能。
chroot_local_user=YES                    # 限制用户只能在自己的主目录。
chroot_list_file=/etc/vsftpd/chroot_list # 指定名单文件的路径,此文件需手动创建。
listen=YES                               # 启用独立监听。
listen_port=50522                        # 自定义监听端口。
connect_from_port_20=YES                 # 开启主动模式数据传输的20端口。
pam_service_name=vsftpd                  # pam模块的名称,默认放在/etc/pam.d/vsftpd。
tcp_wrappers=YES                         # 启用主机访问控制机制。
--------------------------------------------------------------------------------------------------------------------------------------------------------
# 此处对vsftpd.conf中比较绕的两块配置进行说明。
1. 关于限制登录名单功能,该功能由以下三个配置项决定:
① userlist_enable:是否启用“限制登录名单”的功能。
② userlist_deny为YES,表示拒绝user_list文件中的用户登录;为NO表示允许user_list文件中用户的登录。
③ userlist_file用来指定存储用户名单的文件,一个用户名占一行。
2. 关于限制目录切换名单功能,该功能由以下三个配置项决定:
① chroot_list_enable:是否启用“限制目录切换名单”功能。
② chroot_local_user为YES,表示所有的用户都只能在设置的主目录内切换;为NO表示所有用户都可任意切换目录。
③ chroot_list_file用来指定存储用户名单的文件,一个用户名占一行。
综上所述,以方便的理解记忆的角度,全部设为白名单,即:
userlist_enable=YES、userlist_deny=NO、userlist_file中添加允许登录的用户名。
chroot_list_enable=YES、chroot_local_user=YES、chroot_list_file中添加允许跳出其主目录的用户名。
--------------------------------------------------------------------------------------------------------------------------------------------------------
  1. 创建ftp用户。
  0 19:45:55 root@vsftpd,172.16.15.22:/etc/vsftpd # useradd -s /sbin/nologin -d /server/ftpdir shannon
  0 19:46:00 root@vsftpd,172.16.15.22:/etc/vsftpd # passwd shannon
# 此处注意,出于安全我创建用户使用的shell是/sbin/nologin,需要将其添加到/etc/shells文件中以表合法,否则ftp客户端登录验证会报530错误。
  0 19:46:12 root@vsftpd,172.16.15.22:/etc/vsftpd # cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
  0 19:46:29 root@vsftpd,172.16.15.22:/etc/vsftpd # echo "/sbin/nologin" >>/etc/shells
# 创建配置文件中的配置文件中的chroot_list
  0 19:47:05 root@vsftpd,172.16.15.22:/etc/vsftpd # cp -p user_list chroot_list
  0 19:47:14 root@vsftpd,172.16.15.22:/etc/vsftpd # >chroot_list
  0 19:47:47 root@vsftpd,172.16.15.22:/etc/vsftpd # ls -l
总用量 24
-rw------- 1 root root    0 5月  11 19:51 chroot_list    # 限制目录切换白名单
-rw------- 1 root root  125 10月 14 2020 ftpusers        # 限制用户登录黑名单。
-rw------- 1 root root  361 10月 14 2020 user_list       # 限制用户登录白名单。
-rw------- 1 root root  455 5月  11 18:25 vsftpd.conf    # vsftpd的配置文件。
-rw------- 1 root root 5116 5月  11 18:22 vsftpd.conf.bak
-rwxr--r-- 1 root root  338 10月 14 2020 vsftpd_conf_migrate.sh
# 清空白名单,将创建的ftp用户添加到user_list中。
  0 19:48:49 root@vsftpd,172.16.15.22:/etc/vsftpd # echo shannon >user_list
# 在ftp主目录中创建几个文件作为测试文件
  0 19:48:55 root@vsftpd,172.16.15.22:/etc/vsftpd # touch /server/ftpdir/test{1..3}
  0 19:48:57 root@vsftpd,172.16.15.22:/etc/vsftpd # ll /server/ftpdir/
总用量 0
-rw-r--r-- 1 root root 0 5月  11 20:21 test1
-rw-r--r-- 1 root root 0 5月  11 20:21 test2
-rw-r--r-- 1 root root 0 5月  11 20:21 test3
  1. 启动vsftpd服务
  0 19:51:17 root@vsftpd,172.16.15.22:/etc/vsftpd # systemctl start vsftpd.service 
  0 19:51:48 root@vsftpd,172.16.15.22:/etc/vsftpd # systemctl enable vsftpd.service
  0 19:52:57 root@vsftpd,172.16.15.22:/etc/vsftpd # netstat -lntp | grep 50522
tcp        0      0 0.0.0.0:50522           0.0.0.0:*               LISTEN      15189/vsftpd
  1. 随便找一个机器作为ftp客户端进行测试。
  0 17:54:27 root@test,172.16.2.9:~ # yum -y install ftp
  0 19:54:02 root@test,172.16.2.9:~ # ftp 172.16.15.22 50522
Connected to 172.16.15.22 (172.16.15.22).
220 (vsFTPd 3.0.2)
Name (172.16.15.22:root): shannon
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,15,22,63,63).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 May 11 19:48 test1
-rw-r--r--    1 0        0               0 May 11 19:48 test2
-rw-r--r--    1 0        0               0 May 11 19:48 test3
226 Directory send OK.

多用户配置

  • 说明:有时我们也会有不同用户访问不同ftp主目录的需求,配置如下。
  1. 修改vsftpd的配置文件。
  0 14:44:05 root@vsftpd,172.16.15.22:/etc/vsftpd # vim vsftpd.conf
use_localtime=YES
anonymous_enable=NO
write_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
local_enable=YES
local_umask=022
user_config_dir=/etc/vsftpd/user_config          # 指定多用户配置文件的目录
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
allow_writeable_chroot=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_port=50522
connect_from_port_20=YES
pam_service_name=vsftpd
tcp_wrappers=YES
# 创建配置文件目录,并添加配置文件,配置文件的名字需要与用户名一致。
  0 14:49:07 root@vsftpd,172.16.15.22:/etc/vsftpd # mkdir -p /etc/vsftpd/user_config
  0 14:49:12 root@vsftpd,172.16.15.22:/etc/vsftpd # cd /etc/vsftpd/user_config
  0 15:12:14 root@vsftpd,172.16.15.22:/etc/vsftpd/user_config # echo 'local_root=/server/ftpdir' >shannon
  0 15:13:27 root@vsftpd,172.16.15.22:/etc/vsftpd/user_config # echo 'local_root=/server/ftpdir2' >shannon2
  0 15:13:57 root@vsftpd,172.16.15.22:/etc/vsftpd/user_config # ll
总用量 8
-rw-r--r-- 1 root root 26 5月  12 15:12 shannon
-rw-r--r-- 1 root root 27 5月  12 15:13 shannon2
  1. 创建shannon2用户
  0 15:14:00 root@vsftpd,172.16.15.22:/etc/vsftpd/user_config # useradd -s /sbin/nologin -d /server/ftpdir2 shannon2
  0 15:19:18 root@vsftpd,172.16.15.22:/etc/vsftpd/user_config # passwd shannon2
# 创建测试文件
  0 15:25:53 root@vsftpd,172.16.15.22:/etc/vsftpd/user_config # touch /server/ftpdir2/info{1..3}
# 将此用户添加至可登录白名单中
  0 15:26:29 root@vsftpd,172.16.15.22:/etc/vsftpd/user_config # echo 'shannon2' >>/etc/vsftpd/user_list 
  0 15:26:40 root@vsftpd,172.16.15.22:/etc/vsftpd/user_config # cat /etc/vsftpd/user_list
shannon
shannon2
  1. 配置完成,重启vsftpd服务
  0 15:27:17 root@vsftpd,172.16.15.22:/etc/vsftpd/user_config # systemctl restart vsftpd.service
  1. ftp客户端测试,实现不同ftp用户登录到不同主目录中。
  0 15:34:36 root@test,172.16.2.9:~ # ftp 172.16.15.22 50522
Connected to 172.16.15.22 (172.16.15.22).
220 (vsFTPd 3.0.2)
Name (172.16.15.22:root): shannon
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,15,22,63,63).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 May 11 19:48 test1
-rw-r--r--    1 0        0               0 May 11 19:48 test2
-rw-r--r--    1 0        0               0 May 11 19:48 test3
226 Directory send OK.
ftp> close
221 Goodbye.
ftp> open 172.16.15.22 50522
Connected to 172.16.15.22 (172.16.15.22).
220 (vsFTPd 3.0.2)
Name (172.16.15.22:root): shannon2
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,15,22,236,87).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 May 12 15:27 info1
-rw-r--r--    1 0        0               0 May 12 15:27 info2
-rw-r--r--    1 0        0               0 May 12 15:27 info3
226 Directory send OK.
ftp> quit
221 Goodbye.


文章参考


写作不易,转载请注明出处,谢谢~~

标签:15.22,CentOS,etc,--,vsftpd,172.16,root,搭建
来源: https://www.cnblogs.com/ccbloom/p/14756773.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有