![scp 到需要 sudo 的远程位置会出现权限被拒绝错误](https://linux22.com/image/1569920/scp%20%E5%88%B0%E9%9C%80%E8%A6%81%20sudo%20%E7%9A%84%E8%BF%9C%E7%A8%8B%E4%BD%8D%E7%BD%AE%E4%BC%9A%E5%87%BA%E7%8E%B0%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D%E9%94%99%E8%AF%AF.png)
答案1
首先……这可能不是一个好主意。权限设置成这样可能是为了阻止人们出于某种原因做你想做的事情。话虽如此,你还是自己命运的主宰者。
找出谁可以写入该目录。执行:
ls -ld /opt/myapp
你会得到类似这样的结果:
drwxr-xr-x 6 myapp_user myapp_group 55 Sep 10 2016 /opt/myapp
潜在选项 1:切换到为该应用程序构建的用户帐户。例如:
scp myfile [email protected]:/opt/myapp
但您可能没有该用户的密码。您可能可以通过使用密钥进行身份验证来解决这个问题。 https://www.techrepublic.com/article/how-to-use-secure-copy-with-ssh-key-authentication/
潜在选项 2:将目录 '/opt/myapp' 的权限更改为 774(或 770)
chmod 774 /opt/myapp
然后使管理员用户成为现在具有写权限的组的成员。 https://www.howtogeek.com/50787/add-a-user-to-a-group-or-second-group-on-linux/ 这个不太好,因为您可能会遇到被阻止覆盖文件的麻烦(取决于发生的情况)。
答案2
只需两个步骤即可完成:
- 将文件复制到服务器上您自己的主目录中
- 登录服务器并使用移动文件
sudo
或者,如果您sudo
无需输入密码就可以做任何事情,那么您可以发挥创意cat
,使用tee
和重定向:
cat myfile | ssh [email protected] 'sudo tee /opt/myapp/myfile > /dev/null'
请注意,您必须指定两次文件名。但是我们不建议这样做,因为很多事情都可能失败并导致不良后果。