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

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

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

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

我已经重新ssh开始处理此事。

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

我错过了什么?

答案1

具体过程如下:

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

    或者直接使用sudo adduser <username> www-data

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

    chroot_local_user=YES
    

    并确保这部分内容被注释掉:

    #chroot_list_enable=YES
    

    按照文档

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

    sudo usermod -d /var/www/mysite/ftpaccessdir <username>
    
  6. 配置 ssh chroot

    sudo nano /etc/ssh/sshd_config
    

    将以下内容添加到末尾:

    Subsystem  sftp  internal-sftp
    Match user <username>
        ChrootDirectory /var/www/site
        ForceCommand internal-sftp
    AllowTcpForwarding no
    

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

    #Subsystem sftp /usr/lib/openssh/sftp-server
    
  7. 重启 ssh

    sudo service ssh restart
    
  8. 更改apache的权限:

    chown root:root /var/www
    chown root:root /var/www/site
    chmod 755 /var/www
    

    就像文档在这里

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

    sudo chown -R www-data:www-data /var/www/site
    chmod 755 /var/www/site
    

答案2

我有一个简单的方法,并且对于 Apache 来说很有用。

sudo useradd -d /var/www demo_user -g www-data
sudo passwd demo_user
sudo service ssh restart

如果您仍然遇到权限使用问题chmodchown请根据您的需要解决这些问题。

答案3

如果最后出现连接被拒绝错误,请确保“子系统 sftp 内部 sftp”位于之后“UsePAM 是”。如果没有则更新并重新启动 ssh 即可。

相关内容