zoukankan      html  css  js  c++  java
  • vsftpd搭建使用

    [root@x101 ftp]# yum -y install vsftpd
    [root@x101 ftp]# systemctl start vsftpd
    [root@x101 ftp]# systemctl enable vsftpd
    [root@x101 ftp]# vim /etc/vsftpd/vsftpd.conf
    
    
    情景一:匿名用户可以上传、下载、创建目录、重命名、删除文件
    配置要注意二个部分,请一一仔细对照:
    1、vsftpd.conf配置文件
    [root@x101 ftp]# vim /etc/vsftpd/vsftpd.conf
    anonymous_enable=YES
    #允许匿名用户登录FTP
    
    anon_root=/var/ftp/upload
    #设置匿名用户的登录目录(如需要,需自己添加并修改),/var/ftp/upload目录权限必须属于系统账号,否则客户端无法使用匿名账号登陆ftp服务器。
    
    anon_upload_enable=YES
    #打开匿名用户的上传权限
    
    anon_mkdir_write_enable=YES
    #打开匿名用户创建目录的权限
    
    anon_other_write_enable=YES
    #打开匿名用户删除和重命名的权限(如需要,需自己添加)
    
    anon_umask=066
    #匿名用户创建文件时的掩码(如需要,需自己添加,含义:如umask是022,这时创建一个权限为666的文件,文件的实际权限为666-022=644)
    
    anon_world_readable_only=YES
    #当为YES时,文件的other用户必须有r权限才允许下载,即使文件的属主为ftp且对文件有r权限也无法下载,为了安全考虑,默认为YES;当为NO时,则只要属主为ftp且对文件有r权限即可下载;
    
    
    
    
    2、ftp目录的权限设置
    [root@x101 ftp]# mkdir /var/ftp/upload/
    [root@x101 ftp]# chown ftp /var/ftp/upload/
    *net use /d 清除ftp连接缓存**
    

      

    注意:

    anon_root=/var/ftp/upload
    #设置匿名用户的登录目录(如需要,需自己添加并修改),/var/ftp/upload目录权限必须属于系统账号,否则客户端无法使用匿名账号登陆ftp服务器。

      

    情景二:本地用户登陆
    [root@x101 ~]# vim /etc/vsftpd/vsftpd.conf
    anonymous_enable=NO
    #不允许匿名用户登入
    
    local_enable=YES/NO(YES)
    #控制是否允许本地用户登入,YES 为允许本地用户登入,NO为不允许。默认值为YES。
    
    local_root=/ftproot
    #当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
    
    write_enable=YES/NO(YES)
    #是否允许登陆用户有写权限。属于全局设置,默认值为YES。
    
    local_umask=022
    #本地用户新增档案时的umask 值。默认值为077。
    
    file_open_mode=0755
    #本地用户上传档案后的档案权限,与chmod所使用的数值相同。默认值为0666。
    
    chroot_local_user=YES
    #用于指定用户列表文件中的用户不允许切换到上级目录。默认值为NO。
    
    allow_writeable_chroot=YES
    #允许囚禁的用户目录具有可写权限,否则会报错无法显示内容
    
    添加ftp用户
    [root@x101 ~]# useradd -s /sbin/nologin teacher -d /ftproot
    [root@x101 ~]# echo "Pa@@123"|passwd --stdin teacher
    为了安全,在/ftproot目录下建tt目录,并给tt目录属主和属组修改为teacher,这样才可以创建或删除目录,上传、删除文件
    [root@x101 ftproot]# mkdir tt
    [root@x101 ftproot]# chown teacher.teacher tt
    
    重启ftp服务生效
    [root@x101 ftproot]# systemctl restart vsftpd
    

      

    情景三:虚拟账号

     修改配置前养成好习惯,先备份一下

    cp /etc/vsftpd/vsftpd.conf   /etc/vsftpd/vsftpd.conf.bak

    若基于Vsftpd系统用户访问FTP服务器,系统用户越多越不利于管理,而且不利于系统安全管理,鉴于此,为了能更加的安全使用VSFTPD,需使用Vsftpd虚拟用户方式。

    Vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实系统用户(没有密码,也不具备登陆权限)以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。

    需考虑到服务器的安全性,所以关闭实体用户登录,使用虚拟帐号验证机制,并对不同虚拟帐号设置不同的权限。

    保证服务器的性能,还需要根据用户的等级,限制客户端的连接数及下载速度。

    例如:公司为了宣传最新的产品信息,计划搭建FTP 服务器,为客户提供相关文档的下载。对所有互联网开放共享目录,允许下载产品信息,禁止上传。公司的合作单位能够使用FTP 服务器进行上传和下载,但不可以删除数据。需要保证服务器的稳定性并做优化。

    创建ftp虚拟帐号。允许客户使用ftp帐号下载文件。 但是,你们自己的合作伙伴帐号:vip帐号可以上传一内部文件。

    1、创建用户数据库

    1)创建用户文本文件

    先建立用户文本文件virtualuser.txt,添加两个虚拟帐号,公共帐号ftpuser 及客户帐号vip

    [root@x112 vsftpd]# vim virtualuser.txt    #写入以下内容。格式一行用户一行密码

    vip

    vip

    ftpuser

    123

    2)生成数据库

     保存虚拟帐号和密码的文本文件无法被系统帐号直接调用。我们需要使用db_load 命令生成db

    数据库文件
    安装:

    [root@x112 vsftpd]# yum -y install libdb-utils

    [root@x112 vsftpd]# db_load -T -t hash -f virtualuser.txt virtualuser.db

     选项-T允许应用程序能够将文本文件转译载入进数据库。

     -t hash使用hash码加密

     -f 指定包含用户名和密码文本文件。此文件格式要示:奇数行用户名、偶数行密码

     3)修改数据库文件访问权限

      [root@x112 vsftpd]# chmod 600 virtualuser.db

    2、配置PAM 文件

    为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM 模块.

    PAM概述:

    PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修

    改指定的配置文件,调整对该程序的认证方式。PAM 模块配置文件路径为/etc/pam.d/目录,此

    目录下保存着大量与认证有关的配置文件,并以服务名称命名。

    vim  /etc/pam.d/vsftpd

    修改vsftpd 对应的PAM 配置文件/etc/pam.d/vsftpd。将默认配置使用“#”全部注释,添加两行应字段。

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

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

    3、创建虚拟帐号对应的系统用户及ftp共享的目录

     对于公共帐号和客户帐号,因为需要配置不同的权限,所以可以将两个帐号的目录进行隔离,控

    制用户的文件访问。公共帐号ftpuser 对应系统帐号ftpuser,并指定其主目录为/var/ftp/share

    而客户帐号vip 对应系统帐号vip,指定主目录为/var/ftp/vip

    [root@x112 vsftpd]# useradd -d /var/ftp/share ftpuser -s /sbin/nologin

    [root@x112 vsftpd]# useradd -d /var/ftp/vip vip -s /sbin/nologin

    [root@x112 vsftpd]# chmod 500 /var/ftp/share/

    [root@x112 vsftpd]# chown 700 /var/ftp/vip/

    chmod -R 500 /var/ftp/share/ :公共帐号ftp 只允许下载;

    chmod -R 700 /var/ftp/vip/ :客户帐号vip 允许上传和下载

    4、建立配置文件

     一个配置文件无法实现此功能,需要为每个虚拟帐号建立独立的配置文件,并根据需要进行相应的设置。

    1)修改vsftpd.conf 主配置文件

    禁用匿名用户登录并启用本地用户登录设置

    vim vsftpd.conf

    改:

    #anonymous_enable=YES

    为:

    #anonymous_enable=NO

    local_enable=YES   #确认此选项打开,允许本地用户登录。 Uncomment :取消注释

    chroot_local_user=YES   #确认此选项打开。将所有本地用户限制在家目录中,NO 则不限制

    allow_writeable_chroot=YES  #囚禁主目录后,可以正常查看目录内文件

    pam_service_name=vsftpd  #确认在文件的最后有选项。配置vsftpd 使用的PAM 模块为vsftpd

    在此选项后面追加:

    user_config_dir=/etc/vsftpd/virtualuser_config:设置虚拟帐号的主目录为 virtualuser_config

    max_clients=300:设置FTP 服务器最大接入客户端数为300

    max_per_ip=10:设置每个IP 地址最大连接数为10

    2)建立虚拟帐号配置文件

    user_config_dir 指定路径下,建立与虚拟帐号同名的配置文件并添加相应的配置字段

    首先建立公共帐号ftp 的配置文件

    [root@x112 virtualuser_config]# vim ftpuser

    guest_enable=yes

    guest_username=ftpuser

    anon_world_readable_only=no

    anon_max_rate=50000

    解释:

    guest_enable=yes:开启虚拟帐号登录

    guest_username=ftpuser:设置ftp 对应的系统帐号为ftpuser

    anon_world_readable_only=no:允许匿名用户浏览器整个服务器的文件系统

    anon_max_rate=50000:限定传输速率为50KB/s

      

    [root@x112 virtualuser_config]# vim vip

    guest_enable=yes

    guest_username=ftpvip

    anon_world_readable_only=no

    write_enable=yes

    anon_mkdir_write_enable=yes

    anon_upload_enable=yes

    anon_max_rate=100000

    解释:

    guest_enable=yes:开启虚拟帐号登录

    guest_username=vip:设置ftp 对应的系统帐号为ftpvip

    anon_world_readable_only=no:允许匿名用户浏览器整个服务器的文件系统

    write_enable=yes:允许在文件系统写入权限

    anon_mkdir_write_enable=yes:允许创建文件夹

    anon_upload_enable=yes:开启匿名帐号的上传功能

    anon_max_rate=10000000:限定传输速度为10MB/s

    #anon_other_write_enable=yes:#允许重命名,删除等其它权限

      

    客户端测试:

    [root@x101 ~]# lftp 192.168.0.112 -u vip,vip

    排错思路:

     1、查看SELinux、防火墙

     2、查看vsftpd进程

     3、查看vsftpd.conf主配置文件

     4、查看虚拟用户配置文件

     5、查看数据库,查看Pam模块,新添加虚拟用户后需要重新生成数据库文件

     6、查看home/ftpuser下虚拟用户家目录是否创建

     7、修改配置后重启vsftpd服务

  • 相关阅读:
    Mysql数据库(三)Mysql表结构管理
    Mysql数据库(二)Mysql数据库管理
    Mysql数据库(一)数据库设计概述
    设计模式(二十三)Interpreter模式
    设计模式(二十二)Command模式
    设计模式(二十一)Proxy模式
    设计模式(二十)Flyweight模式
    python 全局变量
    python 装饰器
    python 文件读写
  • 原文地址:https://www.cnblogs.com/xiaofeng666/p/13517906.html
Copyright © 2011-2022 走看看