在 Linux 下搭建 FTP 及配置文件详解

文章
林里克斯

Linux 下搭建 FTP,搭建其实很简单,主要是是在所需环境下配置使用

在 Linux 下搭建 FTP 及配置文件详解


实验平台:CentOS 7.7.1908
vsftp版本:3.0.2



一、 安装 FTP


1.yum 安装 vsftp

$ yum -y install vsftpd

2.启动 ftp

$ systemctl enable vsftpd
#设置开机自启
$ systemctl start vsftpd
#启动ftp

3.查看进程和端口

$  ps -ef |grep vsftpd
root     27081     1  0 16:08 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

$ netstat -tlnp | grep 21
tcp6       0      0 :::21                   :::*                    LISTEN      27081/vsftpd

4.访问测试

  • Windows CMD:

在 Linux 下搭建 FTP 及配置文件详解

  • Windows 资源管理器

在 Linux 下搭建 FTP 及配置文件详解

vsftpd 基本安装使用就完了,很简单。vsftpd 在于在适当的环境使用适当的配置,下面就介绍 ftp 的配置


二、配置文件详解


1.路径详解

/var/ftp/        #vsftpd 默认匿名使用路径 本地用户主目录为:/home/用户主目录
/var/ftp/pub     #匿名用户的下载目录
/etc/vsftpd/     #配置文件存放路径
/usr/sbin/vsftpd    #Vsftpd的主程序
/etc/pam.d/vsftpd   #PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)

$ ls -l /etc/vsftpd/
total 20
-rw------- 1 root root  125 Apr  1 12:55 ftpusers   #禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下)
-rw------- 1 root root  361 Apr  1 12:55 user_list  #禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4中此文件在/etc/目录下)
-rw------- 1 root root 5116 Apr  1 12:55 vsftpd.conf    #主配置文件

2./etc/vsftpd/vsftpd.conf

$ cat /etc/vsftpd/vsftpd.conf 

 - 匿名用户权限控制

anonymous_enable=YES    #是否启用匿名用户
no_anon_password=YES    #匿名用户login时不询问口令
anon_umask=022          #默认没有这一项,匿名用户上传后的权限是-rw-------。匿名用户上传的默认权限为600,即anon_umask=066,匿名用户上传最大权限是666,这里权限是用666-022=644方法得来的-rw-r--r--
anon_upload_enable=(yes/no);        #控制匿名用户对文件(非目录)上传权限(默认注释)
anon_world_readable_only=(yes/no);  #控制匿名用户对文件的下载权限(默认没有这一项,只有在虚拟用户的配置文件里才有用)
anon_mkdir_write_enable=(yes/no);   #控制匿名用户对文件夹的创建权限(默认注释)
anon_other_write_enable=(yes/no);   #控制匿名用户对文件和文件夹的删除和重命名(默认没有这一项)
#这四个主要语句控制这文件和文件夹的上传、下载、创建、删除和重命名

anon_root=/var/ftp      #设定匿名用户登陆后所在的目录(默认没有这一项)
anon_max_rate=(0)   #匿名用户速度限制
anon_umask=(077)    #匿名用户上传文件时有掩码(若想让匿名用户上传的文件能直接被匿名下载,就这设置这里为073)
anon_max_rate=30000     #匿名用户最大传输速度  单位: bytes/秒(默认没有这一项)
chown_uploads=YES       #开启匿名用户上传用户映射,和下面一行一起使用(默认注释)
chown_username=whoever  #将匿名用户上传的文件的用户映射为whoever用户(默认注释)

 - 本地用户权限控制

local_enable=YES        #允许本地用户访问(/etc/passwd中的用户)
write_enable=YES        #可以上传(全局控制) 删除,重命名
local_umask=022         #本地用户文件上传后的权限是-rw-r--r--,本地用户上传最高权限为666,默认权限为666-022=644,即local_umask=022
local_max_rate=50000    #本地用户最大传输速度  单位:bytes/秒(默认没有这一项)
local_root=/var/user    #设定所有本地用户登陆后的目录,如不设置此项,则本地用户登陆后位于各自家目录下(默认没有这一项)
download_enable         #限制用户的下载权限
chroot_list_enable=YES  #禁固宿主目录(默认注释)
#限制使用者不能离开家目录,例如 ftp 登陆后位于/home/ftp 下,设置该选项后,他不可以转到 /home/ftp 的上层目录
chroot_list_file=/etc/vsftpd/chroot_list    #设置要禁固宿主目录的用户,写在此文件里。与上条同时使用

通过与chroot_local_user=YES/NO搭配能实现以下几种效果:
1、当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
2、当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
3、当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
4、当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。

 - 全局配置

write_enable=YES                    #是否容许写入(无论是匿名用户还是本地用户,若要启用上传权限的话,就要开启他)
dirmessage_enable=YES               #是否显示目录说明文件, 默认是YES 但需要手工创建.message文件,这个.message,只有用命令登陆或者用工具,才可以看见,他不是一个弹出对话框,而是一段字符,如在pub下建立一个.message,那么在客户端进入pub目录时就会显示.message文档中的内容
xferlog_enable=YES                  #记录使用者所有上传下载信息
xferlog_file=/var/log/vsftpd.log    #将上传下载信息记录到 /var/log/vsftpd.log中(默认注释)
connect_from_port_20=YES            #确保 ftp-datad 数据传送使用port 20(20号端口)
idle_session_timeout=600            #如果使用者600秒没有动作,则强制离线,也就是指令超时时间(默认注释)
data_connection_timeout=120         #如果 client与 Server 间的数据传送在 120 秒内都无法传送成功,那 Client的联机就会被我们的 vsftpd 强制剔除
ftpd_banner=Welcome to blahFTP service.    #ftp的欢迎信息
banner_file=/etc/vsftpd/banner_file.txt    #ftp的欢迎信息(默认注释)
#欢迎信息存放在banner_file.txt文件中,如果添加中文欢迎信息,就需要在 xp 中将此文件编辑好后上传到 /etc/vsftpd 目录中。如果ftpd_banner和banner_file同时设置,那么banner_file将覆盖ftpd_banner的设置。
Listen_address=10.1.6.0             #禁止10.1.6.0段访问此FTP(默认没有这一项)
tcp_wrappers=YES                    #支持 tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)(默认没有这一项)
listen_port=21                      #ftp监听端口(默认没有这一项)
max_clients=100                     #最大用户在线数量(默认没有这一项)
max_per_ip=2                        #每ip最大线程(默认没有这一项)
user_config_dir=/etc/userconf       #个别用户配置目录(为每个用户创建自己的配置文件,用来实现不同的权限)(默认没有这一项)
#例如我想让 ftp 这个用户的传输速度是 100KB 就可以在 /etc/userconf/ 下创建文本文件 ftp (与用户名相同),加入 local_max_rate=100000 即可
use_localtime=YES                   #使用本地时间而不是GMT(默认没有这一项)
userlist_enable=YES                 #为yes时,/etc/vsftpd/user_list 文件中的用户将不能访问 vsftpd 服务器
userlist_deny=YES                   #与 userlist_file=/etc/vsftpd/localuser_list 结合使用
userlist_file=/etc/vsftpd/localuser_list  #与上面参数:userlist_deny=YES结合使用此参数用,来改变存放可以登录或禁止登录的账号,userlist_deny 为 YES 时,这里面的用户则不能登录,当为 NO 时,这里面的用户可以登录,和 /etc/vsftpd/user_list 是一个意思(默认没有这一项)

暂时写这么多,后续遇到再添加。欢迎留言添加


三、实战应用


  • vsftp 配置虚拟用户

1.创建 ftp 使用的系统用户,主目录为 /home/ftp,禁止 ssh 登录。创建之后所有虚拟用户使用这个系统用户访问文件

$ useradd ftpd -d /home/vsftpd -s /bin/false

2.创建虚拟用户主目录,比如虚拟用户叫 ftp 。后续文件都放在这个目录下

$ mkdir -p /home/vsftpd/ftp

3.指定虚拟用户的信息

$ vim  /etc/vsftpd/loginusers.conf

ftp
ftp123

4.根据这个文件创建数据库文件,并启动数据库文件

$ db_load -T -t hash -f /etc/vsftpd/loginusers.conf /etc/vsftpd/loginusers.db
$ chmod 600 /etc/vsftpd/loginusers.db

$ vim /etc/pam.d/vsftpd

# 注释掉原来所有内容后,增加下面的内容
auth    sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers

5.增加虚拟用户的数据库的配置文件

$ mkdir /etc/vsftpd/userconf       #创建虚拟用户配置文件目录
$ vim   /etc/vsftpd/userconf/ftp   #这里的文件名必须与前面指定的虚拟用户名一致

local_root=/home/vsftpd/ftp/
write_enable=YES

6.修改主配置文件

vim   /etc/vsftpd/vsftpd.conf    #存在的修改,不存在的增加
anonymous_enable=NO              #禁止匿名用户登录
chroot_local_user=YES            #禁止用户访问除主目录以外的目录
ascii_upload_enable=YES          #设定支持ASCII模式的上传和下载功能   
ascii_download_enable=YES        #设定支持ASCII模式的上传和下载功能   
guest_enable=YES                 #启动虚拟用户
guest_username=vsftpd            #虚拟用户使用的系统用户名
user_config_dir=/etc/vsftpd/userconf   #虚拟用户使用的配置文件目录
allow_writeable_chroot=YES      #最新版的vsftpd为了安全必须用户主目录(也就是/home/vsftpd/ftp)没有写权限,才能登录

7.重启验证

$ systemctl restart vsftpd

Over~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

705 0 2020-08-03


分享:
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-04-19

今日天气
站点统计
  • 文章总数:240篇
  • 分类总数:29个
  • 评论总数:10条
  • 本站总访问量 213880 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!