scp 到需要 sudo 的远程位置会出现权限被拒绝错误

scp 到需要 sudo 的远程位置会出现权限被拒绝错误

我有一台 ubuntu 服务器,我以管理员身份登录,可以执行 sudo 。在此服务器上,我创建了 dir /opt/myapp。我必须执行 sudo mkdir ,否则它将不起作用。现在我想从我的桌面执行:

scp 我的文件[电子邮件保护]:/opt/myapp

但我得到了 Permission denied。但如果我

scp 我的文件[电子邮件保护]

运行正常并且 myfile 位于 /home/admin 目录中。

如何解决这个问题呢?

答案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

只需两个步骤即可完成:

  1. 将文件复制到服务器上您自己的主目录中
  2. 登录服务器并使用移动文件sudo

或者,如果您sudo无需输入密码就可以做任何事情,那么您可以发挥创意cat,使用tee和重定向:

cat myfile | ssh [email protected] 'sudo tee /opt/myapp/myfile > /dev/null'

请注意,您必须指定两次文件名。但是我们不建议这样做,因为很多事情都可能失败并导致不良后果。

相关内容