linux搭建ftp

Centos7 命令使用总结

java完成ftp传输(将文件上传至静态资源服务器)


ftp一些概念了解

Linux安装vsftpd及配置详解

  • 一、安装 yum -y install vsftpdhtml

  • 二、FTP主动模式与FTP被动模式java

  • 三、防火墙开启21端口mysql

    • 文中是使用iptables开启的
    • 如今centos7.2版本默认是防火墙,开启方法为:
    永久开启ftp服务,ftp服务默认端口为21
    firewall-cmd --add-service=ftp --permanent 
    firewall-cmd --reload
    复制代码
  • 4.一、匿名登陆(了解)linux

  • 4.二、本地用户登陆(了解)sql

  • 4.三、虚拟用户登陆(了解)数据库

  • 五、修改selinuxcentos

  • 六、设置开机启动vsftpd服务安全

    systemctl enable vsftpd.service
    复制代码

/etc/vsftpd目录下配置文件讲解

ftp服务安装完后
如下是一些文件的位置约定: 
/usr/sbin/vsftpd ---- VSFTPD的主程序 
/etc/rc.d/init.d/vsftpd ---- 启动脚本 
/etc/vsftpd/vsftpd.conf ---- 主配置文件 
/etc/pam.d/vsftpd ---- PAM认证文件 
/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件 
/etc/vsftpd.user_list ---- 禁止或容许使用VSFTPD的用户列表文件 
/var/ftp ---- 匿名用户主目录 
/var/ftp/pub ---- 匿名用户的下载目录
复制代码

/etc/vsftpd目录下配置文件讲解bash

一、ftpusers服务器

#这里设置黑名单 加入这里的用户都没法访问
复制代码

二、user_list

#控制配置,这个既能够是黑名单,也能够是白名单
当vsftpd.conf中 userlist_enable=YES 时,为黑名单,加入这里的用户没法访问
当vsftpd.conf中 userlist_enable=NO 时,为白名单,加入这里的用户才能访问
复制代码

三、vsftpd.conf 配置文件

重要,太多了,本身搜
复制代码

vsftpd 配置:chroot_local_user与chroot_list_enable详解

了解
复制代码

四、chroot_list

为VSFTP用户指定登陆后的目录

重要,下面步骤用到
复制代码

FTP常见命令详解

当搭建完vsftpd服务后,要进行用户登陆访问ftp测试(可在window cmd下测试,可是注意Windows cmd下ftp只能使用主动模式进行链接哦)。
若是有错误,使用cmd命令能够返回详细错误信息
(如我遇到的错误提示[vsftpd:500 OOPS: vsftpd: ...](https://www.cnblogs.com/zuikeol/p/9647048.html))
用网页、文件夹登陆不给相关错误信息
复制代码

Linux搭建vsftpd服务步骤

需求

搭建ftp服务,并分发用户。

上传用户uploadexample : 可建立文件夹,上传文件,查看文件,不可删除文件

下载用户downloadexample : 可查看文件,下载文件,不可删除文件

搭建

方式一:本地用户

在服务器B搭建ftp服务,并开通用户 uploadexample ,并配置只能操做指定文件夹/home/uploadexample,进行上传资源操做。

一、yum安装好ftp服务

yum -y install vsftpd
systemctl start vsftpd.service
此时匿名用户登陆等应该都能登陆
systemctl enable vsftpd.service #在开机时启用服务
复制代码

二、/etc/vsftpd目录下修改vsftpd.conf 配置文件

anonymous_enable=NO #关闭匿名登陆

#打开注释
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list

#添加下面
#https://www.cnblogs.com/zuikeol/p/9647048.html
allow_writeable_chroot=YES
#添加读取用户配置目录(注:本行配置默认没有须要手动输入)
user_config_dir=/etc/vsftpd/userconf

#开启被动模式及设置端口段
pasv_enable=YES
pasv_min_port=6990
pasv_max_port=7000

#开启防火墙对应端口 -- 这一步先不作,视状况而定
cd /usr/lib/firewalld/services/
cp mysql.xml ftp-PassiveMode.xml
vi ftp-PassiveMode.xml #手动配置服务管理端口
    #修改内容后以下:
    <?xml version="1.0" encoding="utf-8"?>
    <service>
      <short>ftp Passive Mode</short>
      <description>ftp Server Passive Mode </description>
      <port protocol="tcp" port="6990"/>
      <port protocol="tcp" port="6991"/>
      <port protocol="tcp" port="6992"/>
      <port protocol="tcp" port="6993"/>
      <port protocol="tcp" port="6994"/>
      <port protocol="tcp" port="6995"/>
      <port protocol="tcp" port="6996"/>
      <port protocol="tcp" port="6997"/>
      <port protocol="tcp" port="6998"/>
      <port protocol="tcp" port="6999"/>
      <port protocol="tcp" port="7000"/>
    </service>
firewall-cmd --reload #刷新
firewall-cmd --get-services | grep ftp-PassiveMode #确认一下
firewall-cmd --permanent --add-service=ftp-PassiveMode #加载服务,开启端口

复制代码

三、添加用户

为了安全,FTP用户通常是不能登陆系统的。
在系统中,没有权限登陆系统的用户通常也被称之为虚拟用户;虚拟用户也是要写进/etc
/passwd中;这只是一种虚拟用户的方法,但说实在的并非真正的虚拟用户,只是把他登陆SHELL的权限去掉了,因此他没有能力登陆系统;
因此应该以下操做
新建用户:
# adduser -d /home/uploadexample -g ftp -s /sbin/nologin uploadexample //新建用户 
# passwd uploadexample //给用户设置密码
若是现存用户不用新建,另外要肯定不在黑名单ftpusers(user_list-yes)中,
而且usermod命令设置这个用户不能登陆系统
最后,确认一下配置文件vsftpd.conf ,以确保本地虚拟用户能有读写权限:
      local_enable=YES
      write_enable=YES
      local_umask=022

复制代码

四、用户ftp相关权限设置

chroot_list文件内容添加上用户uploadexample,一行一个用户,保存
# vi /etc/vsftpd/chroot_list 

创建用户配置目录
# mkdir /etc/vsftpd/userconf

创建用户登录后的目录,也就是容许用户操做的目录 若存在不用建立
# mkdir /home/uploadexample

添加用户配置文件
注:有不少用户时,须要建每一个用户相对应的文件
# vi /etc/vsftpd/userconf/uploadexample
 添加内容FTP用户登录后指定的目录:
 local_root=/home/uploadexample 

复制代码

五、配置成功 重启ftp服务,并测试。

  • 553 Could not create file.错误的解决

    selinux打开的状态下,vsftp会出现本地用户没法上传的问题(多是本地用户的home目录,或者是整个目录)
      错误信息为:
      553 Could not create file.
      要解决这个问题只要:
      1. setsebool -P ftpd_disable_trans 1
      2. systemctl restart vsftpd.service 
      就能够了
    复制代码

方式二:虚拟用户登陆

目的:设置用户的上传、下载、删除权限

  • 1 建立虚拟用户的帐号及密码
首先须要创建一个文本格式的用户名/密码列表文件,奇数行为用户名,偶数行为上一行中用户名所对应的密码。

#vi /etc/vsftpd/logins.txt
saupload
daka123
sadownload
daka456
saadmin
daka789
复制代码
生成数据库

# cd /etc/vsftpd (option)
# yum -y install db4* (option)
# db_load -T -t hash -f logins.txt vsftpd_login.db 

# file vsftpd_login.db #查看转换后的文件类型
vsftpd_login.db: Berkeley DB (Hash, version 9, native byte-order)

# chmod 600 vsftpd_login.db #修改数据文件访问权限

复制代码

查看vsftp登陆认证数据库db文件内容的方法 /usr/bin/db_dump -d a /etc/vsftpd/vsftpd_login.db

另外,若是新增用户,从新新建包含新用户数据的txt文件,并运行db_load命令,就会将新用户数据加入搭配db文件中。删除数据未试。

  • 2 为虚拟用户建立PAM认证文件
新建pam:

# vi /etc/pam.d/vsftpd_login.pam //为虚拟用户建立PAM认证文件,文件名为vsftpd_login.pam
    auth    required    pam_userdb.so   db=/etc/vsftpd/vsftpd_login
    account    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login

//下面的vsftpd.conf中配置:
//pam_service_name=vsftpd_login.pam  //指定新的PAM认证文件

或在默认文件中修改
# vi /etc/pam.d/vsftpd
    //将里面其余的都注释掉,添加下面这两行:
    auth    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
    account    required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
  
//下面的vsftpd.conf中配置:
//pam_service_name=vsftpd(指定PAM配置文件为在/etc/pam.d/下的vsftpd)

复制代码
  • 3 建立虚拟帐号对应的系统用户
# useradd -d /home/ftpexample -s /sbin/nologin ftpexample 
//添加用户ftpexample,指定到新建的家目录,将虚拟用户对应到这个系统帐号上,这个
帐号无需设置密码及登陆Shell (另外 若是用其余本地用户,那么该本地用户不能再用原来的帐号密码登陆了)

# chmod 755 /home/ftpexample/ 
//调整权限以容许浏览目录

//下面的vsftpd.conf中配置:   
//guest_username=ftpexample      //指定映射的系统用户名称
  
复制代码
  • 4.修改主配置文件
# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=no#禁用匿名用户登陆
(anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022   //指定上传权限掩码)(option)

allow_writeable_chroot=YES#https://www.cnblogs.com/zuikeol/p/9647048.html
local_enable=YES#需映射本地用户,因此启用些项
write_enable=YES#启用上传写入支持
chroot_local_user=YES     
#将全部本地用户限制在家目录中,新建的用户必须设置家目录,example:adduser -d /home/uploadexample... 
#(或按照方式一种第二步设置相关用户限制目录:)

guest_enable=YES#启用映射功能
guest_username=ftpexample#指定映射的系统用户名称
pam_service_name=vsftpd_login.pam#指定新的PAM认证文件
user_config_dir=/etc/vsftpd/userconf#(自建配置)用户配置文件夹,须要建立 
max_clients=300#(自建配置)设置FTP服务器最大接入客户端数为300个 
max_per_ip=10#(自建配置)设置每一个IP地址最大链接数为10个 

pasv_enable=YES# //(自建配置)容许PASV模式进行数据传输 
pasv_min_port=65341# //(自建配置)PASV模式下数据传输所使用port范围下界 
pasv_max_port=65351# //(自建配置)PASV模式下数据传输所使用port范围上界
...
 
复制代码
  • 5.创建虚拟帐户的配置文件
# mkdir /etc/vsftpd/userconf (option)
 # cd /etc/vsftpd/userconf 
 
 建立相关用户配置文件
 # touch saupload
 # touch sadownload
 # touch saadmin
 
 配置文件内容,设置具体的权限:
 
 
 write_enable=YES 容许写入
 download_enable=NO 是否能下载
 anon_world_readable_only=NO 容许浏览FTP目录和下载
 anon_upload_enable=YES 容许虚拟用户上传文件
 anon_mkdir_write_enable=YES 容许虚拟用户建立目录
 anon_other_write_enable=YES 容许虚拟用户执行其余操做(如更名、删除)
 anon_umask=022 上传文件的掩码,如022时,上传目录权限为755,文件权限为644(例如供http访问)
 local_root=/ftproot/admin 指定虚拟用户的虚拟目录(虚拟用户登陆后的主目录)

 # vi saupload 
    //能够:上传,建立文件夹, 查看下载文件 不能:删除,重命名
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    
    //能够:上传,建立文件夹, 查看 不能:删除,重命名,下载文件
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    download_enable=NO  
    
 # vi sadownload
    
    //只能查看下载文件
    anon_world_readable_only=NO
    
# vi saadmin
    
    //全部权限:上传,建立文件夹 查看下载文件 重命名 删除
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
复制代码
  • 重启服务,登陆相关虚拟用户名密码,进行测试
相关文章
相关标签/搜索