zoukankan      html  css  js  c++  java
  • FTP,SFTP服务器登录权限和根目录的设置

    参考:https://blog.csdn.net/tancy_weipj/article/details/82911171

    一. 设置用户访问FTP的权限

    为了安全起见,在搭建FTP服务器的时候会限制用户的登录,那些用户我让他访问,那些不让访问,FTP服务器提供了两个配置文件:

    /etc/vsftpd/user_list  // 许可哪些用户可以访问

    /etc/vsftpd/ftpusers   // 不允许哪些用户访问

    我这里创建了三个用户用于测试

    1.  
      [root@localhost vsftpd]# useradd ftptest
    2.  
      [root@localhost vsftpd]# useradd ftpuser
    3.  
      [root@localhost vsftpd]# useradd ftpname

    首先我们测试许可ftptest用户

    登录的时候出现一个问题:

    1.  
      [root@localhost ~]# ftp 192.168.219.129
    2.  
      ftp connect 没有主机的路由
    3.  
      >ftp

    访问被拒绝了,首先想到是防火墙(iptables)的原因,在FTP服务器上查看防火墙状态发现防火墙是开的,停了再次连FTP就没问题了

    1.  
      [root@localhost vsftpd]# firewall-cmd --state
    2.  
      running
    3.  
      [root@localhost vsftpd]# systemctl stop firewalld.service
    4.  
      [root@localhost vsftpd]# firewall-cmd --state
    5.  
      not running

    在没有许可ftptest用户前连接被拒绝了

    1.  
      [root@localhost ~]# ftp 192.168.219.129
    2.  
      Connected to 192.168.219.129 (192.168.219.129).
    3.  
      220 (vsFTPd 3.0.2)
    4.  
      Name (192.168.219.129:root): ftptest
    5.  
      530 Permission denied.
    6.  
      Login failed.

    现在许可一下看看,在/etc/vsftpd/user_list 里面加入ftptest(注意:一个用户单独占一行)

    这是报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

    解决办法:用命令chmod a-w /home/ftptest去除用户主目录的写权限,注意把目录替换成自己的。或者你可以在vsftpd的配置文件中增加下面的内容:allow_writeable_chroot=YES

    再次登录测试,这时登录OK(其他用户按照这一步骤操作即可)

    1.  
      [root@localhost ~]# ftp 192.168.219.129
    2.  
      Connected to 192.168.219.129 (192.168.219.129).
    3.  
      220 (vsFTPd 3.0.2)
    4.  
      Name (192.168.219.129:root): ftptest
    5.  
      331 Please specify the password.
    6.  
      Password:
    7.  
      230 Login successful.
    8.  
      Remote system type is UNIX.
    9.  
      Using binary mode to transfer files.
    10.  
      ftp>

    二. 设置FTP,SFTP的根目录

    设置FTP的根目录
    正常情况下FTP和SFTP默认的根目录是在登录用的家目录(/home/ftpuser)下,这样的话会有一个问题,当我们用不同的用户登录的时候,他进的FTP目录不一样,例:

    为了方便测试我们在不用的用户根目录下新建标识文件:

    1.  
      [root@localhost home]# touch /home/ftpuser/ftpuser.txt
    2.  
      [root@localhost home]# touch /home/ftpname/ftpname.txt
    1. 首先用ftpuser用户登录ftp
      1.  
        [root@localhost ~]# ftp 192.168.219.129
      2.  
        Connected to 192.168.219.129 (192.168.219.129).
      3.  
        220 (vsFTPd 3.0.2)
      4.  
        Name (192.168.219.129:root): ftpuser
      5.  
        331 Please specify the password.
      6.  
        Password:
      7.  
        230 Login successful.
      8.  
        Remote system type is UNIX.
      9.  
        Using binary mode to transfer files.
      10.  
        ftp> pwd
      11.  
        257 "/"
      12.  
        ftp> ls
      13.  
        227 Entering Passive Mode (192,168,219,129,194,109).
      14.  
        150 Here comes the directory listing.
      15.  
        -rw-r--r-- 1 0 0 0 Oct 08 16:12 ftpuser.txt
      16.  
        226 Directory send OK.
    2. 用ftpname 用户登录ftp
      1.  
        [root@localhost ~]# ftp 192.168.219.129
      2.  
        Connected to 192.168.219.129 (192.168.219.129).
      3.  
        220 (vsFTPd 3.0.2)
      4.  
        Name (192.168.219.129:root): ftpname
      5.  
        331 Please specify the password.
      6.  
        Password:
      7.  
        230 Login successful.
      8.  
        Remote system type is UNIX.
      9.  
        Using binary mode to transfer files.
      10.  
        ftp> pwd
      11.  
        257 "/"
      12.  
        ftp> ls
      13.  
        227 Entering Passive Mode (192,168,219,129,118,21).
      14.  
        150 Here comes the directory listing.
      15.  
        -rw-r--r-- 1 0 0 0 Oct 08 16:11 ftpname.txt
      16.  
        226 Directory send OK.

      像上面的情况,不用的用户登录不通的ftp,他会进入各自的家目录,如果想要不同的用户进入同一目录可以参照下面的设置:
      local_root=/var/www/ftp/ (自己指定的ftp根目录)
      这时候需要注意一点根目录的权限是drwxr-xr-x.,这时候ftp是没有写入权限的,需要写入权限可以给他分配成777(注意:要是ftp和sftp的根目录保持一致的话就不能给跟目录分配成777,可以在根目录下新建一个文件夹再分配777的权限)

      1.  
        ftp> mkdir test
      2.  
        550 Create directory operation failed.

      设置SFTP的根目录
      打开/etc/ssh/sshd_config文件修改配置

      1.  
        #Subsystem sftp /usr/libexec/openssh/sftp-server
      2.  
        Subsystem sftp internal-sftp

      在文件结尾加上下面配置即可

      1.  
        Match User ftpuser
      2.  
        ChrootDirectory /var/www/ftp/
      3.  
        ForceCommand internal-sftp


      重启sshd验证
       service sshd restart
      为了方便区分,我在设置的ftp根目录下新建test文件

      touch /var/www/ftp/test

      登录SFTP验证

      1.  
        [root@localhost ~]# sftp ftpuser@192.168.219.129
      2.  
        ftpuser@192.168.219.129's password:
      3.  
        Connected to 192.168.219.129.
      4.  
        sftp> ls -l
      5.  
        -rw-r--r-- 1 0 0 0 Oct 9 05:38 test

      登录FTP验证

      1.  
        [root@localhost ~]# ftp 192.168.219.129
      2.  
        Connected to 192.168.219.129 (192.168.219.129).
      3.  
        220 (vsFTPd 3.0.2)
      4.  
        Name (192.168.219.129:root): ftpuser
      5.  
        331 Please specify the password.
      6.  
        Password:
      7.  
        230 Login successful.
      8.  
        Remote system type is UNIX.
      9.  
        Using binary mode to transfer files.
      10.  
        ftp> ls
      11.  
        227 Entering Passive Mode (192,168,219,129,162,143).
      12.  
        150 Here comes the directory listing.
      13.  
        -rw-r--r-- 1 0 0 0 Oct 09 13:38 test
      14.  
        226 Directory send OK.

      以上步骤都是自己手动实验做的,文采不好,写的不好,还望各位客官多提意见

  • 相关阅读:
    idea安装好python后显示无SDK问题
    使用idea在windows上连接远程hadoop开发_配置环境
    最小二乘法估计----MATLAB最小二乘法求一元线性回归
    MATLAB最小二乘法求线性回归
    MATLAB求解线性规划(含整数规划和0-1规划)问题
    蒙特卡洛方法蒙特卡洛方法 matlab 实现 matlab 实现
    MATLAB神经网络实例及训练结果各参数解释
    单元格添加斜线
    ppt的高级设计法——虚实结合
    word中插入六角括号的方法﹝﹞
  • 原文地址:https://www.cnblogs.com/zhangzeyuan/p/13927466.html
Copyright © 2011-2022 走看看