授予 sftp 用户访问 /var/www 目录的权限

haw*_*eye 14 users sftp www sshd

我创建了一个用户并创建了他的主目录 /var/www/mysite/ftpdir

我还为该用户添加了一个 Match user 条目,sshd_config其中包含指向的 ChrootDirectory/var/www/mysite

我已经重新开始ssh拿起这个。

当我使用 sftp 登录时 - 用户仍然会转到用户的旧目录,即 /home/user

我错过了什么?

haw*_*eye 18

这是过程:

  1. 将用户添加到组:sudo usermod -aG www blub如在“/var/www”中编辑和添加文件的最简单方法什么?

    或者只是使用 sudo adduser <username> www-data

  2. 安装 vsftpd sudo apt-get install vsftpd
  3. 为远程访问配置 vsftpd:sudo nano /etc/vsftpd.conf并在文件集内

    chroot_local_user=YES
    
    Run Code Online (Sandbox Code Playgroud)

    并确保将其注释掉:

    #chroot_list_enable=YES
    
    Run Code Online (Sandbox Code Playgroud)

    根据文档

  4. 重启 nsftp: sudo service vsftpd restart
  5. 将用户的家目录配置为 web 目录(不在 中/home):

    sudo usermod -d /var/www/mysite/ftpaccessdir <username>
    
    Run Code Online (Sandbox Code Playgroud)
  6. 配置 ssh chroot

    sudo nano /etc/ssh/sshd_config
    
    Run Code Online (Sandbox Code Playgroud)

    在末尾添加以下内容:

    Subsystem  sftp  internal-sftp
    Match user <username>
        ChrootDirectory /var/www/site
        ForceCommand internal-sftp
    AllowTcpForwarding no
    
    Run Code Online (Sandbox Code Playgroud)

    并确保在文件中将其注释掉(即在您刚刚添加的之前)

    #Subsystem sftp /usr/lib/openssh/sftp-server
    
    Run Code Online (Sandbox Code Playgroud)
  7. 重启ssh

    sudo service ssh restart
    
    Run Code Online (Sandbox Code Playgroud)
  8. 更改 apache 的权限:

    chown root:root /var/www
    chown root:root /var/www/site
    chmod 755 /var/www
    
    Run Code Online (Sandbox Code Playgroud)

    就像这里文档一样

  9. 确保您的目录具有 www-data 访问权限

    sudo chown -R www-data:www-data /var/www/site
    chmod 755 /var/www/site
    
    Run Code Online (Sandbox Code Playgroud)

  • 为什么在第 9 步你有 `chown root:root /var/www/site` 只是为了在第 10 步将它恢复为 `sudo chown -R www-data:www-data /var/www/site` 这是故意的? (4认同)
  • 我遵循了这些说明,但是当我添加这些行时,连接被拒绝了 Subsystem sftp internal-sftp Match user &lt;username&gt; ChrootDirectory /var/www/site ForceCommand internal-sftp AllowTcpForwarding no (2认同)