zoukankan      html  css  js  c++  java
  • Linux—— vsftp,ftp配置,ftp虚拟用户

    一.ftp:简单文件传输协议

    ftp文件传输协议是internet上仍常用的最老的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法。

    在red hat entreprise linux 6中ftp服务包的名称为vsftpd,它代表very secure file transferprotocol damon服务名称也叫做vsftp。默认配置文件让anonymous用户只能下载位于chroot目录中的内容。/var/ftp这意味着远程ftp 用户端能以用户anonymous或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp目录下载文件(其本地ftp用户可以读取 这些文件)

    ftp 是为系统提供了通过网络与远程服务器进行传输的简单方法,只要在服务端配置好,在客户端就可以下载相应的文件。

    服务端:安装 vsftpd
    客户端:安装 lftp
    在安装软件之前,首先要将selinux内核级防火墙关闭,否则会影响客户端的登陆。

    二.部署ftp服务

    服务端:

    1、重置虚拟机,配置ip,yum源 
    2、关闭 selinux :修改文件 /etc/sysconfig/selinux 中 的 SELINUX=disabled ,reboot 重启机器 
    3yum install vsftpd -y ###下载vsftpd 
    systemctl start vsftpd ###打开vsftpd 
    systemctl enable vsftpd ###vsftpd开机自启
    netstat -antlupe | grep vsftpd ###查看ftp端口是否成功开启 
    systemctl stop firewalld.service    ###关闭防火墙
    systemctl disable firewalld.service    ###防火墙开机不自启
    
    ###关闭selinux内核级防火墙
    vim /etc/selinux/config
    SELINUX=disabled    ###文件关闭,reboot
    ###命令行关闭selinux 临时
    setenforce 0
    
    ###或者
    firewall-cmd –list-all ###查看防火墙规则 
    firewall-cmd –permanent –add-service=ftp #添加ftp到防火墙允许的服务里面 
    firewall-cmd –reload ###更新防火墙规则 
    firewall-cmd –list-all ###查看防火墙规则 
    touch /var/ftp/hellohello ###建立文件,在客户端测试是否能看到该文件

    客户端

    测试:

    yum install lftp    -y    ###客户端安装lftp
    lftp    服务端ip ###匿名用户登录ftp服务器    --->进入的是/var/ftp/
    lftp    服务端ip -u student    ###以服务端的student用户登录    进入的是--->/home/student

    三.文件信息、报错id、vsftpd 服务的配置参数

    默认发布目录: /var/ftp
    协议接口: 21/tcp
    服务配置文件: /etc/vsftpd/vsftpd.conf
    报错id的解析:
    500 #文件系统权限过大
    530 #用户认证失败
    550 #服务本身功能未开放,服务本身的错误
    553 #本地文件系统权限过小
    默认登陆的用户是ftp
    默认登陆的目录是/var/ftp

    Chgrp ftp /var/ftp/pub
    Chmod 775 /var/ftp/pub
    匿名用户的默认发布目录为/var/ftp/pub 这里把ftp作为了/var/ftp/pub的附加组 并且给了/var/ftp/pub 775的权限 匿名用户是以ftp这个用户的身份登陆的 这样保证的其他的用户无法在该目录下进行写的操作 保证了安全性

    vsftpd 服务的配置参数:man 5 vsftpd.conf 可以查看具体参数

    匿名用户:
    匿名用户登录 anonymous_enable=YES|NO
    匿名用户家目录修改 anon_root=/direcotry
    匿名用户上传 anon_upload_enable=YES
    匿名用户建立目录 anon_mkdir_write_enable=YES|NO
    匿名用户下载 anon_world_readable_only=NO
    匿名用户删除 anon_other_write_enable=YES
    匿名用户最大传输速率,单位字节 anon_max_rate=需要设置的字节大小
    匿名用户上传文件权限 anon_umask
    
    本地用户:
    本地用户登陆 local_enable=YES|NO
    是否对登陆用户可写 write_enable=YES|NO
    本地用户上传文件权限 local_umask
    限制本地用户浏览目录:
    所有用户被锁定到自己的家目录 chroot_local_user=YES
    用户黑名单建立(修改黑白名单不需要重启)
    chroot_local_user=NO
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    用户白名单建立
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    限制本地用户登陆
    /etc/vsftpd/ftpusers #永久黑名单,优先级高于一切
    /etc/vsftpd/user_list #临时黑名单
    用户白名单设定
    userlist_deny=NO # /etc/vsftpd/user_list 文件改变成白名单,与黑名单 ftpusers 中相同的用户,按照黑名单对待

    四.匿名用户

    [root@client88 pub]# ll -d /var/ftp/pub
    drwxr-xr-x 2 root root 6 Mar 7 2014 /var/ftp/pub

    pub这个目录只对root可写

    在客户端测试,直接上传会报错550:服务本身错误

    lftp 172.25.254.88:/> put /etc/passwd ##上传
    put: Access failed: 550 Permission denied. (passwd)

    解决方案:

    服务端更改文件权限和所属组

    [root@client88 pub]# chmod 775 /var/ftp/pub ##更改目录权限
    [root@client88 pub]# chgrp ftp /var/ftp/pub ##更改所属组
    
    [root@client88 pub]# ll -d /var/ftp/pub
    drwxrwxr-x 2 root ftp 6 Mar 7 2014 /var/ftp/pub

    4.1 控制匿名用户登录

    12 anonymous_enable=YES|NO #匿名用户是否可以登陆

    当服务端设置为YES时,在客户端测试 
    [root@foundation69 ~]# lftp 172.25.254.196 lftp 172.25.254.196:~> ls 
    -rw-r--r-- 1 0 0 0 May 07 12:30 hellohello 
    drwxr-xr-x 2 0 0 6 Mar 07 2014 pub 
    lftp 172.25.254.196:/> quit 
    当服务端设置为NO时,在客户端测试 
    [root@foundation69 ~]# lftp 172.25.254.196 
    lftp 172.25.254.196:~> ls Interrupt 
    lftp 172.25.254.196:~> quit

    4.2 匿名用户家目录修

    改anon_root=/direcotry

    服务端:
    [root@localhost ~]# mkdir /rsyddhaha
    [root@localhost ~]# touch /rsyddhaha/hahafile
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
    anon_root=/rsyddhaha
    [root@localhost ~]# systemctl restart vsftpd
    客户端:
    [root@foundation69 ~]# lftp 172.25.254.196
    lftp 172.25.254.196:~> ls
    -rw-r--r-- 1 0 0 0 May 07 12:54 hahafile ###说明就在/rsyddhaha目录内
    lftp 172.25.254.196:/> quit

    4.3 匿名用户上传 #匿名用户的上传前提是本地用户可写

    匿名用户登陆是以ftp身份,所以要将所属组改成ftp,然后权限755,对所属组有写的权限
    29 anon_upload_enable=YES|NO

    服务端:
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
    [root@localhost ~]# systemctl restart vsftpd
    [root@localhost ~]# chgrp ftp /var/ftp/pub
    [root@localhost ~]# chmod 775 /var/ftp/pub
    drwxrwxr-x. 2 root ftp 66 Mar 7 2014 /var/ftp/pub/
    
    客户端:
    [root@foundation69 ~]# lftp 172.25.254.196
    lftp 172.25.254.196:~> cd pub/
    cd ok, cwd=/pub
    lftp 172.25.254.196:/pub> put /etc/passwd
    2367 bytes transferred
    lftp 172.25.254.196:/pub> ls
    -rw------- 1 14 50 2367 May 07 13:00 passwd
    lftp 172.25.254.196:/pub> quit

    4.4 匿名用户建立目录

    前提:
    [root@server2 ~]# chgrp ftp /var/ftp/pub
    [root@server2 ~]# chmod 775 /var/ftp/pub

    anon_mkdir_write_enable=YES|NO

    当服务端设置为YES时,在客户端测试
    [root@foundation69 ~]# lftp 172.25.254.196
    lftp 172.25.254.196:~> cd pub/
    cd ok, cwd=/pub
    lftp 172.25.254.196:/pub> mkdir haha
    mkdir ok, `haha' created
    lftp 172.25.254.196:/pub> ls
    drwx------ 2 14 50 6 May 07 13:02 haha
    -rw------- 1 14 50 2367 May 07 13:00 passwd
    lftp 172.25.254.196:/pub> quit
    当服务端设置为NO时,在客户端测试
    [root@foundation69 ~]# lftp 172.25.254.196
    lftp 172.25.254.196:~> cd pub/
    cd ok, cwd=/pub
    lftp 172.25.254.196:/pub> mkdir xixi
    mkdir: Access failed: 550 Permission denied. (xixi)
    lftp 172.25.254.196:/pub> quit

    4.5 匿名用户下载

    anon_world_readable_only=YES|NO
    
    [root@foundation69 ~]# lftp 172.25.254.196
    lftp 172.25.254.196:~> cd pub/
    cd ok, cwd=/pub
    lftp 172.25.254.196:/pub> get passwd
    2367 bytes transferred
    lftp 172.25.254.196:/pub> quit

    4.6 匿名用户删除

    anon_other_write_enable=YES|NO

    当服务端设置为YES时,在客户端测试
    [root@foundation69 ~]# lftp 172.25.254.196
    lftp 172.25.254.196:~> cd pub/
    cd ok, cwd=/pub
    lftp 172.25.254.196:/pub> ls
    -rw------- 1 14 50 993 May 07 13:42 group
    -rw------- 1 14 50 2367 May 07 13:35 passwd
    lftp 172.25.254.196:/pub> rm group
    rm ok, `group' removed
    lftp 172.25.254.196:/pub> rm passwd
    rm ok, `passwd' removed
    lftp 172.25.254.196:/pub> ls
    lftp 172.25.254.196:/pub> quit
    当服务端设置为NO时,在客户端测试
    [root@foundation69 ~]# lftp 172.25.254.196
    lftp 172.25.254.196:~> cd pub/
    cd ok, cwd=/pub
    lftp 172.25.254.196:/pub> ls
    -rw------- 1 14 50 2367 May 07 13:52 passwd
    lftp 172.25.254.196:/pub> rm passwd
    rm: Access failed: 550 Permission denied. (passwd)
    lftp 172.25.254.196:/pub> quit

    4.7 匿名用户最大传输速率,单位字节

    anon_max_rate=102400

     

    4.8 匿名用户上传文件权限

    anon_umask=022

    修改权限之前,预留权限为077
    [root@foundation69 Desktop]# lftp 172.25.254.196
    lftp 172.25.254.196:~> cd pub/
    cd ok, cwd=/pub
    lftp 172.25.254.196:/pub> ls
    -rw------- 1 14 50 5234720 May 07 13:58 bigfile
    -rw------- 1 14 50 2367 May 07 13:52 passwd
    lftp 172.25.254.196:/pub> quit
    修改预留权限为022之后
    [root@foundation69 Desktop]# lftp 172.25.254.196
    lftp 172.25.254.196:~> cd pub/
    cd ok, cwd=/pub
    lftp 172.25.254.196:/pub> ls
    -rw------- 1 14 50 5234720 May 07 13:58 bigfile
    -rw------- 1 14 50 2367 May 08 05:26 passwd
    lftp 172.25.254.196:/pub> rm -f passwd
    rm ok, `passwd' removed
    lftp 172.25.254.196:/pub> put /etc/passwd
    2367 bytes transferred
    lftp 172.25.254.196:/pub> ls
    -rw------- 1 14 50 5234720 May 07 13:58 bigfile
    -rw-r--r-- 1 14 50 2367 May 08 05:27 passwd
    lftp 172.25.254.196:/pub> quit

    4.9 服务最大连接数

    max_clients=2 ##服务的最大连接数

    五.普通用户

    vim /etc/vsftpd/vsftpd.conf

    5.1 本地用户登陆

    local_enable=YES|NO #本地用户是否可以登陆

    当服务端设置为YES时,在客户端测试
    [root@foundation69 ~]# lftp 172.25.254.196 -u haha 
    Password: 
    lftp haha@172.25.254.196:~> ls
    lftp haha@172.25.254.196:~> quit 
    当服务端设置为NO时,在客户端测试 
    [root@foundation69 ~]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> ls
    ls: Login failed: 530 This FTP server is anonymous only. 
    lftp haha@172.25.254.196:~> quit

    5.2 本地用户可写


    write_enable=YES|NO #ftp是否对登陆用户可写

    当服务端设置为YES时,在客户端测试
    [root@foundation69 ~]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> put /etc/passwd
    2367 bytes transferred
    lftp haha@172.25.254.196:~> rm passwd
    rm ok, `passwd' removed
    lftp haha@172.25.254.196:~> quit
    当服务端设置为NO时,在客户端测试
    [root@foundation69 ~]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> put /etc/passwd
    put: Access failed: 550 Permission denied. (passwd)
    lftp haha@172.25.254.196:~> quit

    5.3 本地用户上传文件权限

    服务端:local_umask=022
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> put /etc/inittab
    511 bytes transferred 
    lftp haha@172.25.254.196:~> ls
    -rw-r--r-- 1 1001 1001 511 May 08 05:10 inittab
    lftp haha@172.25.254.196:~> quit
    服务端:local_umask=077
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> rm -f inittab
    rm ok, `inittab' removed
    lftp haha@172.25.254.196:~> put /etc/inittab
    511 bytes transferred
    lftp haha@172.25.254.196:~> ls
    -rw------- 1 1001 1001 511 May 08 05:12 inittab
    lftp haha@172.25.254.196:~> quit

    5.4 限制本地用户浏览目录

    1).所有用户被锁定到自己的家目录
    chroot_local_user=YES
    chmod u-w /home/*

    修改之前
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u student
    Password: 
    lftp student@172.25.254.196:~> cd / 
    cd ok, cwd=/ 
    lftp student@172.25.254.196:/> ls
    lrwxrwxrwx 1 0 0 7 May 07 2014 bin -> usr/bin
    dr-xr-xr-x 4 0 0 4096 Jul 10 2014 boot
    drwxr-xr-x 18 0 0 2840 May 08 05:05 dev
    drwxr-xr-x 134 0 0 8192 May 08 05:05 etc
    drwxr-xr-x 2 0 0 21 May 07 12:54 fthaha
    drwxr-xr-x 4 0 0 31 May 07 12:38 home
    lrwxrwxrwx 1 0 0 7 May 07 2014 lib -> usr/lib
    lrwxrwxrwx 1 0 0 9 May 07 2014 lib64 -> usr/lib64
    drwxr-xr-x 2 0 0 6 Mar 13 2014 media
    drwxr-xr-x 2 0 0 6 Mar 13 2014 mnt
    drwxr-xr-x 3 0 0 15 Jul 10 2014 opt
    dr-xr-xr-x 132 0 0 0 May 08 05:05 proc
    dr-xr-x--- 15 0 0 4096 May 08 05:27 root
    drwxr-xr-x 34 0 0 1100 May 08 05:05 run
    lrwxrwxrwx 1 0 0 8 May 07 2014 sbin -> usr/sbin
    drwxr-xr-x 2 0 0 6 Mar 13 2014 srv
    dr-xr-xr-x 13 0 0 0 May 08 05:05 sys
    drwxrwxrwt 16 0 0 4096 May 08 05:06 tmp
    drwxr-xr-x 13 0 0 4096 May 07 2014 usr
    drwxr-xr-x 23 0 0 4096 May 08 05:05 var
    lftp student@172.25.254.196:/> quit
    修改后
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u student
    Password: 
    lftp student@172.25.254.196:~> cd / 
    cd ok, cwd=/
    lftp student@172.25.254.196:/> ls
    lftp student@172.25.254.196:/> cd
    cd ok, cwd=/
    lftp student@172.25.254.196:/> quit

    2).用户黑名单建立(修改黑白名单不需要重启,修改配置文件必须重启)
    chroot_local_user=NO
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list #chroot_list相当于黑名单

    用户student在黑名单里面
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> cd / 
    cd ok, cwd=/
    lftp haha@172.25.254.196:/> ls
    lrwxrwxrwx 1 0 0 7 May 07 2014 bin -> usr/bin
    dr-xr-xr-x 4 0 0 4096 Jul 10 2014 boot
    drwxr-xr-x 18 0 0 2840 May 08 05:05 dev
    drwxr-xr-x 134 0 0 8192 May 08 05:05 etc
    drwxr-xr-x 2 0 0 21 May 07 12:54 fthaha
    drwxr-xr-x 4 0 0 31 May 07 12:38 home
    lrwxrwxrwx 1 0 0 7 May 07 2014 lib -> usr/lib
    lrwxrwxrwx 1 0 0 9 May 07 2014 lib64 -> usr/lib64
    drwxr-xr-x 2 0 0 6 Mar 13 2014 media
    drwxr-xr-x 2 0 0 6 Mar 13 2014 mnt
    drwxr-xr-x 3 0 0 15 Jul 10 2014 opt
    dr-xr-xr-x 132 0 0 0 May 08 05:05 proc
    dr-xr-x--- 15 0 0 4096 May 08 05:42 root
    drwxr-xr-x 34 0 0 1100 May 08 05:05 run
    lrwxrwxrwx 1 0 0 8 May 07 2014 sbin -> usr/sbin
    drwxr-xr-x 2 0 0 6 Mar 13 2014 srv
    dr-xr-xr-x 13 0 0 0 May 08 05:05 sys
    drwxrwxrwt 16 0 0 4096 May 08 05:06 tmp
    drwxr-xr-x 13 0 0 4096 May 07 2014 usr
    drwxr-xr-x 23 0 0 4096 May 08 05:05 var
    lftp haha@172.25.254.196:/> cd
    cd ok, cwd=/home/haha
    lftp haha@172.25.254.196:~> quit
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u student
    Password: 
    lftp student@172.25.254.196:~> cd / 
    cd ok, cwd=/
    lftp student@172.25.254.196:/> ls
    lftp student@172.25.254.196:/> cd
    cd ok, cwd=/
    lftp student@172.25.254.196:/> quit

    3).用户白名单建立
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list #chroot_list相当于白名单

    用户student在白名单里面
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> cd / 
    cd ok, cwd=/
    lftp haha@172.25.254.196:/> ls
    -rw------- 1 1001 1001 511 May 08 05:12 inittab
    lftp haha@172.25.254.196:/> cd
    cd ok, cwd=/
    lftp haha@172.25.254.196:/> quit
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u student
    Password: 
    lftp student@172.25.254.196:~> cd / 
    cd ok, cwd=/
    lftp student@172.25.254.196:/> ls
    lrwxrwxrwx 1 0 0 7 May 07 2014 bin -> usr/bin
    dr-xr-xr-x 4 0 0 4096 Jul 10 2014 boot
    drwxr-xr-x 18 0 0 2840 May 08 05:05 dev
    drwxr-xr-x 134 0 0 8192 May 08 05:05 etc
    drwxr-xr-x 2 0 0 21 May 07 12:54 fthaha
    drwxr-xr-x 4 0 0 31 May 07 12:38 home
    lrwxrwxrwx 1 0 0 7 May 07 2014 lib -> usr/lib
    lrwxrwxrwx 1 0 0 9 May 07 2014 lib64 -> usr/lib64
    drwxr-xr-x 2 0 0 6 Mar 13 2014 media
    drwxr-xr-x 2 0 0 6 Mar 13 2014 mnt
    drwxr-xr-x 3 0 0 15 Jul 10 2014 opt
    dr-xr-xr-x 132 0 0 0 May 08 05:05 proc
    dr-xr-x--- 15 0 0 4096 May 08 05:45 root
    drwxr-xr-x 34 0 0 1100 May 08 05:05 run
    lrwxrwxrwx 1 0 0 8 May 07 2014 sbin -> usr/sbin
    drwxr-xr-x 2 0 0 6 Mar 13 2014 srv
    dr-xr-xr-x 13 0 0 0 May 08 05:05 sys
    drwxrwxrwt 16 0 0 4096 May 08 05:06 tmp
    drwxr-xr-x 13 0 0 4096 May 07 2014 usr
    drwxr-xr-x 23 0 0 4096 May 08 05:05 var
    lftp student@172.25.254.196:/> cd
    cd ok, cwd=/home/student
    lftp student@172.25.254.196:~> quit

    5.5 限制本地用户登陆

    vim /etc/vsftpd/ftpusers #ftpusers永久黑名单,优先级高于一切
    vim /etc/vsftpd/user_list #user_list临时黑名单

    将用户haha加入黑名单之前
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> 
    lftp haha@172.25.254.196:~> ls
    -rw------- 1 1001 1001 511 May 08 05:12 inittab
    lftp haha@172.25.254.196:~> quit
    将用户haha加入黑名单之后
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> ls 
    `ls' at 0 [Sending commands...]
    ls: Login failed: 530 Login incorrect. 
    lftp haha@172.25.254.196:~> quit

    5.6 用户白名单设定


    userlist_deny=NO
    vim /etc/vsftpd/user_list #配置文件的参数设定之后,此文件变成用户白名单,只有白名单里面的用户可以登陆ftp,当文件中的用户与ftpusers重复时,ftpusers优先级高于一切,故用户是按照黑名单对待的

    将用户haha加入白名单之前
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> ls 
    ls: Login failed: 530 Permission denied. 
    lftp haha@172.25.254.196:~> quit
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u student
    Password: 
    lftp student@172.25.254.196:~> ls 
    ls: Login failed: 530 Permission denied. 
    lftp student@172.25.254.196:~> quit
    将用户haha加入白名单之前后
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u haha
    Password: 
    lftp haha@172.25.254.196:~> ls 
    -rw------- 1 1001 1001 511 May 08 05:12 inittab
    lftp haha@172.25.254.196:~> quit

    六.ftp虚拟用户

    6.1 服务端配置:

    1).首先创建虚拟账户身份

    [root@client88 vsftpd]# cd /etc/vsftpd/
    [root@client88 vsftpd]# ls
    chroot_list ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
    
    [root@client88 vsftpd]# vim vmusers ##建立新的文件(名字任意)写入虚拟用户
    test1 ##注意不能有空格出现
    123
    test2
    123
    test3
    123

    2).接着对用户名和密码进行哈希加密操作

    -T:转化 -t:转换方式为hash

    [root@client88 vsftpd]# db_load -T -t hash -f /etc/vsftpd/vmusers /etc/vsftpd/vmusers.db
    [root@client88 vsftpd]# cat /etc/vsftpd/vmusers.db
    ���a$�*����эh^123456dabing ##已加密

    3).设定策略文件
    进入/etc/pam.d/新建文件vmusersfile(名字任意)写入pam服务的配置,pam就是一种认证服务

    [root@client88 vsftpd]# cd /etc/pam.d/
    [root@client88 pam.d]# vim vmusersfile ##新建文件
    内容: ##account表示帐号名称 auth表示密码 
    required表示通过用户认证才能下一步,去pam_userdb.so插件验证账户信息
    account required pam_userdb.so db=/etc/vsftpd/vmusers
    auth required pam_userdb.so db=/etc/vsftpd/vmusers

    4).修改配置
    在vsftpd.conf中修改vstpd服务的配置

    [root@client88 pam.d]# vim /etc/vsftpd/vsftpd.conf
    userlist_enable=YES
    tcp_wrappers=YES
    pam_service_name=vmusersfile ##存放pam服务的策略文件
    guest_enable=YES
    guest_username=ftp
    local_root=/ftphome/$USER ##指定虚拟用户的家目录
    user_sub_token=$USER 

    $USER 表示正在使用的用户
    例如:id $USER此时表示root用户的id信息
    [root@client88 ~]# id $USER
    uid=0(root) gid=0(root) groups=0(root)

    5).新建/ftphome目录作为虚拟用户的家目录,新建test1和test2两个用户目录,并建立两个文件以便测试

    [root@client88 vsftpd]# mkdir /ftphome
    [root@client88 vsftpd]# cd /ftphome
    [root@client88 ftphome]# mkdir test1
    [root@client88 ftphome]# mkdir test2
    [root@client88 ftphome]# touch test1/test1file
    [root@client88 ftphome]# touch test2/test2file

    6.2 客户端测试

    [root@server138 ~]# lftp 172.25.254.88 -u test1
    Password:
    lftp rsy@172.25.254.88:~> ls
    -rw-r--r-- 1 0 0 0 Jan 24 07:04 test1file ##成功登陆指定家目录
    [root@server138 ~]# lftp 172.25.254.88 -u test2
    Password:
    lftp dabing@172.25.254.88:~> ls
    -rw-r--r-- 1 0 0 0 Jan 24 07:04 test2file ##成功登陆
    
    ###而未在/ftphome中加入的test3虚拟用户无法登录
    [root@server138 ~]# lftp 172.25.254.88 -u test3
    Password:
    lftp who@172.25.254.88:~> ls
    ls: Login failed: 500 OOPS: cannot change directory:/ftphome/test3

    七.虚拟帐号配置的独立设置


    就是给某个特定用户某个权限

    1.首先测试客户端的虚拟用户可以上传

    [root@client88 rsy]# chgrp ftp test1file 
    [root@client88 rsy]# chmod g+w test2file
    [root@client88 rsy]# ll -d test1file
    drwxrwxr-x 2 root ftp 6 Jan 24 03:31 test1file ##给家目录下目录配置权限
    
    [root@server138 ~]# lftp 172.25.254.88 -u test1
    Password:
    lftp rsy@172.25.254.88:~> cd test1/
    cd ok, cwd=/test1
    lftp rsy@172.25.254.88:/test1> put /etc/passwd
    2005 bytes transferred ##成功上传

    由于虚拟用户可以上传,所以需要在主配置文件中将所有用户可以上传注释掉
    [root@client88 ~]# vim /etc/vsftpd/vsftpd.conf
    #anon_mkdir_write_enable=YES ##注释掉
    user_config_dir=/etc/vsftpd/userconfi

    [root@client88 rsy]# cd /etc/vsftpd/usrconf
    [root@client88 usrconf]# mkdir userconf
    [root@client88 usrconf]# vim test1
    anon_mkdir_write_enable=YES

    测试:

    [root@server138 ~]# lftp 172.25.254.88 -u test1
    Password:
    lftp test1@172.25.254.88:~> cd test1file/
    lftp test1@172.25.254.88:/rsyfile> mkdir new
    mkdir ok, `new’ created ##成功建立目录
    
    [root@server138 ~]# lftp 172.25.254.88 -u test2
    Password:
    lftp test2@172.25.254.88:~> cd test2file/
    lftp test2@172.25.254.88:/test2file> mkdir new
    mkdir: Access failed: 550 Permission denied. (new)
    
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ##ftp虚拟用户家目录的独立设定
    vim /etc/vsftpd/vsftpd.conf
    user_config_dir=/etc/vsftpd/userconf
    cd /etc/vsftpd
    mkdir userconf
    cd userconf
    #虚拟用户的主配置文件(里面写你要给这个用户的权限 注意:在所有用户的这个主配置文件中,你所要给虚拟用户的权限一定要关闭)
    vim ftpuser1
    anon_mkdir_write_enable=YES

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    服务端
    [root@localhost ~]# mkdir /ftphome/test{1..3}/pub
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
    user_config_dir=/etc/vsftpd/userconf 添加内容
    [root@localhost ~]# chgrp student /ftphome/test{1..3}/pub 改变组为配置文件里面的已经存在的组
    [root@localhost ~]# chmod 775 /ftpuserhome/user{1..3}/pub 改权限
    [root@localhost ~]# mkdir -p /etc/vsftpd/userconf ###要和vim /etc/vsftpd/vsftpd.conf添加内容的userconf一致
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
    ###编辑主配置文件,注释掉上传文件的功能,因为虚拟用户使用的还是匿名用户的参数设置,注释可以查看效果
    [root@localhost ~]# systemctl restart vsftpd 重启服务
    [root@localhost ~]# vim /etc/vsftpd/userconf/user1 编辑user1的配置文件,只对use1可用,在此文件中设定配置文件中的所有参数,此文件的优先级搞
    anon_upload_enable=YES 上传命令
    ###虚拟用户的主配置文件(里面写你要给这个用户的权限 注意:在所有用户的这个主配置文件中,你所要给虚拟用户的权限一定要关闭)
    
     
    
    客户端测试
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u user2
    Password: 
    lftp user2@172.25.254.196:~> ls 
    drwxrwxr-x 2 0 1000 6 May 08 06:28 pub
    -rw-r--r-- 1 0 0 0 May 08 06:23 user2file
    lftp user2@172.25.254.196:/> cd pub/
    lftp user2@172.25.254.196:/pub> put /etc/passwd
    put: Access failed: 550 Permission denied. (passwd) user2不能上传文件
    lftp user2@172.25.254.196:/pub> quit
    [root@foundation69 Desktop]# lftp 172.25.254.196 -u user1
    Password: 
    lftp user1@172.25.254.196:~> cd pub/ 
    cd ok, cwd=/pub
    lftp user1@172.25.254.196:/pub> put /etc/passwd user1可以上传文件
    2367 bytes transferred
    lftp user1@172.25.254.196:/pub> ls
    -rw-r--r-- 1 1000 1000 2367 May 08 06:53 passwd
    lftp user1@172.25.254.196:/pub> quit


    参考:
    原文链接:https://blog.csdn.net/weixin_44233369/article/details/86610234

  • 相关阅读:
    [LeetCode 1029] Two City Scheduling
    POJ 2342 Anniversary party (树形DP入门)
    Nowcoder 106 C.Professional Manager(统计并查集的个数)
    2018 GDCPC 省赛总结
    CF 977 F. Consecutive Subsequence
    Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)
    Poj 2337 Catenyms(有向图DFS求欧拉通路)
    POJ 1236 Network of Schools (强连通分量缩点求度数)
    POJ 1144 Network (求割点)
    POJ 3310 Caterpillar(图的度的判定)
  • 原文地址:https://www.cnblogs.com/sandshell/p/11727295.html
Copyright © 2011-2022 走看看