我正在尝试使用 将文件上传到 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 dir
请sudo 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