centos7 配置 ftp 服务器(本地用户)

2021-09-02

1. 安装

# 安装 vsftpd
yum -y install vsftpd

 

2. 启动服务并添加到开机自启

# 启动 vsftpd
systemctl start vsftpd

# 设置开机启动
systemctl enable vsftpd

# 查看服务状态和端口(默认端口是 21 )
systemctl status vsftpd
netstat -nltp | grep 21

--------------------------------------
-bash: netstat: 未找到命令
执行  yum -y install net-tools
--------------------------------------

 

3. 防火墙设置

3.1 关闭防火墙

# 关闭防火墙
systemctl disable firewalld

# 查看防火墙状态
systemctl status firewalld

 

3.2 关闭 selinux

# 临时关闭
getenforce
setenforce 0
getenforce

#永久关闭
vi /etc/sysconfig/selinux
#SELINUX=enforcing 
SELINUX=disabled

# 重启服务器
reboot

因为我已经永久关闭 selinux 了,所以临时关闭提示信息是这些,正常情况下提示信息如下所示

 

4. 配置

4.1 配置文件说明

# 配置文件在 /etc/vsftpd 目录下
vsftpd.conf   核心配置文件
ftpusers     黑名单,不允许访问 FTP 服务器的用户列表,一行一个账号
user_list    白名单,允许访问 FTP 服务器的用户列表,一行一个账号

 

4.2 配置本地登录

(1) 修改配置文件

# 备份
mv vsftpd.conf vsftpd.conf.bak
# 编辑配置文件
vi vsftpd.conf
# 是否允许虚拟用户访问
anonymous_enable=NO
#
# 是否允许本地用户登录 ftp
local_enable=YES
#
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
idle_session_timeout=6000
data_connection_timeout=1200
connect_from_port_20=YES
#
# 将不在 /etc/vsftpd/chroot_list 文件中的用户限制在其家目录下
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#
# 当用户主目录不在根目录下时需要添加此参数
allow_writeable_chroot=YES
#
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
# 本地用户的 ftp 根目录
local_root=/data/ftpdata
listen=YES
listen_ipv6=NO
#
# 认证
pam_service_name=vsftpd
#
tcp_wrappers=YES

chroot_list 在安装时是没有的,这个需要自己创建

在配置文件中 chroot_local_user=YES 和 chroot_list_enable=YES ,这表示

① 所有用户都被限制在其主目录下

② 使用 chroot_list_file 指定的用户列表 /etc/vsftpd/chroot_list ,这些用户作为“例外”,不受限制

cd /etc/vsftpd/

# 编辑 chroot_list 将 root 加进去
vi chroot_list

 

/var/log/xferlog 需要创建

   该日志文件记录 FTP 会话,可以显示出用户向 FTP 服务器或从服务器拷贝了什么文件。会显示用户拷贝到服务器上的用来入侵服务器的恶意程序,以及该用户拷贝了哪些文件供他使用。
  该文件的格式为:第一个域是日期和时间,第二个域是下载文件所花费的秒数、远程系统 名称、文件大小、本地路径名、传输类型(a:ASCII,b:二进制)、与压缩相关的标志或tar,或"_"(如果没有压缩的话)、传输方向(相对于服务 器而言:i代表进,o代表出)、访问模式(a:匿名,g:输入口令,r:真实用户)、用户名、服务名(通常是ftp)、认证方法(l:RFC931,或 0),认证用户的ID或"*"。

cd /var/log
touch xferlog

 

修改了配置文件之后要重启 vsftpd 服务 systemctl restart vsftpd ,以生效配置。

 

(2) 创建本地用户并设置密码

# 添加用户,指定其家目录、所属组及登入后所使用的 shell,/sbin/nologin 表示不允许 login 系统
# 主用户
useradd ftpuser -d /data/ftpuser -s /sbin/nologin  -g ftp

# 子用户
useradd ftp_liu -d /data/ftpdata/ftp_liu -s /sbin/nologin  -g ftp

useradd ftp_li -d /data/ftpdata/ftp_li -s /sbin/nologin  -g ftp
...

# 设置密码 
passwd ftpuser

 

  (3) 添加白名单

cd /etc/vsftpd/
vi user_list 
ftpuser

 

(4) 修改目录权限

chmod 755 /ftpuser/
chown -R ftpuser:ftp /ftpuser/

 

(5) 修改 /etc/pam.d/vsftpd

为什么要修改这个文件呢?

我们前面在配置文件中设置 pam_service_name=vsftpd ,即指定 vsftpd 的认证走/etc/pam.d/vsftpd 文件。

 

 

(6) 登录测试

前面在配置文件中,我们配置了 chroot_local_user=YES 和 chroot_list_enable=YES ,所以没有写进 chroot_list 中的用户都会被限制在当前用户目录下,不能往上一级切换

 

简单说明一下,如图所示, ljq_1 目录的权限是 700 ,即该目录除了目录的所有者具有完整的权限之外,其他所有用户对该目录完全没有任何权限。所以可以通过调整目录的权限规定每个 ftp 用户能进行的操作。

# 参数简介
r  读( 看目录有什么,如 ll )
w  可以在目录里创建、删除、移动文件、文件夹,如 touch mkdir rm mv cp x  表示用户可进入到该目录中

 

按照上面的配置步骤基本上就能顺利进行本地用户登录的 ftp 服务器了,如果遇到什么问题可以评论指出,大家一起解决 O(∩_∩)O

 

posted @ 2021-07-28 15:41  元月二一  阅读(1387)  评论(0编辑  收藏  举报