通过 sftp 上传文件失败。权限被拒绝

通过 sftp 上传文件失败。权限被拒绝

我正在尝试使用 将文件上传到 Ubuntu 服务器sftp。我用来put -r dir上传包含所有内容的文件夹。当我运行命令时,它给出如下结果:

 Uploading AuthApp/ to /var/www/html/AuthApp remote open("/var/www/html/AuthApp/.DS_Store"): Permission denied
 Uploading of file AuthApp/.DS_Store to /var/www/html/AuthApp/.DS_Store failed!
 remote open("/var/www/html/AuthApp/.gitattributes"): Permission denied     
 Uploading of file AuthApp/.gitattributes to /var/www/html/AuthApp/.gitattributes failed! 
 remote open("/var/www/html/AuthApp/.gitignore"): Permission denied 
 Uploading of file AuthApp/.gitignore to /var/www/html/AuthApp/.gitignore failed!
 remote open("/var/www/html/AuthApp/artisan"): Permission denied
 Uploading of file AuthApp/artisan to /var/www/html/AuthApp/artisan failed! 
 remote open("/var/www/html/AuthApp/composer.json"): Permission denied 
 Uploading of file AuthApp/composer.json to /var/www/html/AuthApp/composer.json failed! 
 remote open("/var/www/html/AuthApp/composer.lock"): Permission denied
 Uploading of file AuthApp/composer.lock to /var/www/html/AuthApp/composer.lock failed! 
 remote open("/var/www/html/AuthApp/CONTRIBUTING.md"): Permission denied
 Uploading of file AuthApp/CONTRIBUTING.md to /var/www/html/AuthApp/CONTRIBUTING.md failed! 
 remote open("/var/www/html/AuthApp/phpunit.xml"): Permission denied 
 Uploading of file AuthApp/phpunit.xml to /var/www/html/AuthApp/phpunit.xml failed! 
 remote open("/var/www/html/AuthApp/readme.md"): Permission denied 
 Uploading of file AuthApp/readme.md to /var/www/html/AuthApp/readme.md failed! 
 remote open("/var/www/html/AuthApp/server.php"): Permission denied
 Uploading of file AuthApp/server.php to /var/www/html/AuthApp/server.php failed!
 Couldn't setstat on "/var/www/html/AuthApp": Permission denied

我尝试更改权限,将用户和 apache 添加到组,但没有任何效果。我还遗漏了什么?

答案1

更好的方法是让您的程序上传到服务器上用户拥有的目录(又名 /home/$USER/upload/ 并在服务器上的 /etc/crontab 中安装一个 cron 作业,按照用户 apache 的设置将文件复制到 /var/www/html/ -after- 对要覆盖的文件进行带时间戳的备份。

  • 它可以解决你的问题
  • 如果您的副本出现了什么恶意的情况,它可以防止数据丢失。
  • 无需弄乱网站设置和 /var/www/html/

目录监视程序(参见如何在目录上放置触发器) 可以实时完成此操作。

答案2

该标签sudo以 root 身份运行所有内容,您需要这样做才能运行它,因此sftp -r dirsudo sftp -r dir输入您的密码。请注意,您需要 root 权限才能执行此操作如果有效,请检查并投票,以便其他人在需要时可以找到它。

答案3

我在通过 SFTP 从 Ubuntu 服务器上的 JetBrains Rider 发布应用程序时遇到了这个问题。由于在这种情况下没有办法使用sudo,简单的解决方案是为 SFTP 的 ssh 连接中指定的用户设置发布文件夹所有权。

sudo chown -R username:username /your-destination-path

或者,如果您已经以此用户身份登录服务器:

sudo chown -R $USER:$USER /your-destination-path

相关内容