zoukankan      html  css  js  c++  java
  • centOS7.6精简版配置vsftpd服务

    • 配置过程是:先安装vsftpd服务,再修改配置文件,设置防火墙,使用客户端进行测试等。配置过程如下:
    [root@localhost ~]# rpm -qa | grep vsftpd	#查询系统中是否已有vsftpd服务
    [root@localhost ~]# yum install vsftpd		#安装vsftpd服务
    [root@localhost ~]# cd /etc/vsftpd/			#切换到vsftpd服务配置目录
    [root@localhost vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
    [root@localhost vsftpd]# cp vsftpd.conf vsftpd.bak	#备份配置文件
    [root@localhost vsftpd]# grep -v "#" vsftpd.bak > vsftpd.conf	#过滤以井号开头的行
    [root@localhost vsftpd]# vim vsftpd.conf	#编辑配置文件,修改后的内容如下:
    anonymous_enable=YES
    anon_umask=022					#新增内容:匿名用户创建文件的掩码
    anon_upload_enable=YES			#新增内容:是否允许匿名用户上传文件
    anon_mkdir_write_enable=YES		#新增内容:是否允许匿名用户创建目录
    anon_other_write_enable=YES		#新增内容:是否允许匿名用户创建文件
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    
    [root@localhost vsftpd]# systemctl restart vsftpd	#重启vsftpd服务
    [root@localhost vsftpd]# getsebool -a | grep ftp	#查看关于vsftpd的SELinux域限制
    ......
    ftpd_full_access --> off		#要开启这个权限,允许用户访问
    [root@localhost vsftpd]# setsebool -P ftpd_full_access=on
    #用户登录ftp服务器,默认进入的是 /var/ftp,这个目录下面还有pub目录,用户可在pub目录内创建文件操作,因此要修改这个目录的权限
    [root@localhost vsftpd]# chmod -Rf o+w /var/ftp/pub
    [root@localhost vsftpd]# iptables -I INPUT -p tcp --dport 20 -j ACCEPT
    [root@localhost vsftpd]# iptables -I INPUT -p tcp --dport 21 -j ACCEPT
    
    #下面使用windows客户端进行测试
    C:\Users\xx>ftp 192.168.0.40
    连接到 192.168.0.40。
    220 (vsFTPd 3.0.2)
    200 Always in UTF8 mode.
    用户(192.168.0.40:(none)): anonymous		#输入用户名
    331 Please specify the password.
    密码:			#直接回车
    230 Login successful.
    ftp> ls		#查看目录
    200 PORT command successful. Consider using PASV.
    150 Here comes the directory listing.
    pub
    226 Directory send OK.
    ftp: 收到 8 字节,用时 0.00秒 8000.00千字节/秒。
    ftp> mkdir mm		#不能在/var/ftp目录下创建目录
    550 Create directory operation failed.
    ftp> cd pub			#切换目录
    250 Directory successfully changed.
    ftp> mkdir mm		#创建目录
    257 "/pub/mm" created
    ftp> rename mm xx	#重命名
    350 Ready for RNTO.
    250 Rename successful.
    ftp> rmdir xx		#删除目录
    250 Remove directory operation successful.
    
    • 上面配置文件中,默认开启了本地用户登录的设置,但是root用户除外。因为root用户在ftpusers 和 user_list 这两个黑名单文件中,从这两个黑名单文件中删除root,就可以使用root用户登录。
    • 匿名用户登录ftp后对应的目录是 /var/ftp,本地用户登录ftp后对应的是用户的家目录。虚拟用户登录ftp后映射用户的家目录。
    • 虚拟用户登录ftp服务器是最安全的模式,同时虚拟用户也不能使用ssh命令。配置虚拟用户登录需要使用到可挺拔式认证模块PAM。配置过程如下:
    [root@localhost vsftpd]# pwd
    /etc/vsftpd
    [root@localhost vsftpd]# vim my_user_list	#文件名称任意,奇数行用户名,偶数行是密码
    libai
    abcd1234
    dufu
    abcd1234
    [root@localhost vsftpd]# db_load -T -t hash -f my_user_list my_user_list.db	#加密
    [root@localhost vsftpd]# chmod 600 my_user_list.db		#将权限设置小一些
    [root@localhost vsftpd]# file my_user_list.db		#查看加密后的文件类型
    my_user_list.db: Berkeley DB (Hash, version 9, native byte-order)
    [root@localhost vsftpd]# file my_user_list
    my_user_list: ASCII text
    [root@localhost vsftpd]# rm -f my_user_list		#删除未加密的文件
    
    #为虚拟用户登录创建出一个映射用户
    [root@localhost vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
    [root@localhost vsftpd]# id virtual
    uid=1001(virtual) gid=1001(virtual) groups=1001(virtual)
    [root@localhost vsftpd]# chmod -Rf 755 /var/ftproot	#将虚拟用户目录权限设置大一些
    
    [root@localhost vsftpd]# vim /etc/pam.d/vsftp.vu	#在/etc/pam.d目录中建一个PAM模块
    auth required pam_userdb.so db=/etc/vsftpd/my_user_list		#文件名称后面不加后缀
    account required pam_userdb.so db=/etc/vsftpd/my_user_list
    
    [root@localhost vsftpd]# vim vsftpd.conf	#修改配置文件
    anonymous_enable=YES
    anon_umask=022
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    local_enable=YES
    guest_enable=YES				#允许虚拟用户登录
    guest_username=virtual			#虚拟用户名
    allow_writeable_chroot=YES		#chroot一种牢笼机制,限制登录用户不能使用超出范围的命令
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    
    user_config_dir=/etc/vsftpd/vusers_dir	#用户配置文件目录,在这里做对每个用户的权限设定
    pam_service_name=vsftp.vu		#修改为前面创建的文件
    userlist_enable=YES
    tcp_wrappers=YES
    
    [root@localhost vsftpd]# mkdir vuser_dir	#创建用户配置文件
    [root@localhost vsftpd]# cd vuser_dir/
    [root@localhost vuser_dir]# touch libai		#创建用户配置文件
    [root@localhost vuser_dir]# touch dufu
    [root@localhost vuser_dir]# vim libai	#编辑用户配置文件
    anon_upload_enable=YES			#是否可上传
    anon_mkdir_write_enable=YES		#是否可创建目录写入文件
    anon_other_write_enable=YES
    #这里暂时不编辑dufu用户的配置文件
    [root@localhost vuser_dir]# systemctl restart vsftpd	#重启服务
    
    #下面使用libai用户登录ftp服务器测试
    C:\Users\xx>ftp 192.168.0.40
    连接到 192.168.0.40。
    220 (vsFTPd 3.0.2)
    200 Always in UTF8 mode.
    用户(192.168.0.40:(none)): libai		#输入libai用户名
    331 Please specify the password.
    密码:		#输入libai用户对应的密码abcd1234
    230 Login successful.
    ftp> pwd
    257 "/"
    ftp> cd /etc	#下面的各种操作正常
    550 Failed to change directory.
    ftp> mkdir abc
    257 "/abc" created
    ftp> rename abc cba
    350 Ready for RNTO.
    250 Rename successful.
    ftp> rmdir cba
    250 Remove directory operation successful.
    ftp> quit
    221 Goodbye.
    
    #省略使用dufu用户进行登录测试
    
  • 相关阅读:
    Jzoj4822 完美标号
    Jzoj4822 完美标号
    Jzoj4792 整除
    Jzoj4792 整除
    Educational Codeforces Round 79 A. New Year Garland
    Good Bye 2019 C. Make Good
    ?Good Bye 2019 B. Interesting Subarray
    Good Bye 2019 A. Card Game
    力扣算法题—088扰乱字符串【二叉树】
    力扣算法题—086分隔链表
  • 原文地址:https://www.cnblogs.com/Micro0623/p/15648607.html
Copyright © 2011-2022 走看看