我正在连接到一个服务器(ssh user@server
),我需要以用户身份执行以下操作root
:
dzdo su -
没有su -
它我就无法复制该服务器上的任何文件并且只能进行只读访问。
现在,我想将本地文件夹复制到此远程服务器。这是我在本地bash
终端中尝试的操作,正如预期的那样,它给了我一个没有权限错误(如下):
知道我应该在这里做什么吗?
从本地目录复制到远程服务器:
(base) Username@Local_Computer lsp % scp -r /Users/Username/Downloads/lsp username@server:/srv/path/directory
我收到错误:
scp: /srv/path/directory: Permission denied`
答案1
我将在本地机器上执行以下操作:
% cd /Users/Username/Downloads/
% tar -cvf - lsp | ssh username@server 'dzdo tar -C /srv/path/directory -xvf -'
或者
% cd /Users/Username/Downloads/
% tar -cvf - lsp | ssh username@server 'dzdo sudo su - -c "tar -C /srv/path/directory -xvf -"'
此命令序列将tar
本地文件并将输出发送tar
到标准输出。的第二个参数中给出的命令序列将在远程服务器上以权限ssh
运行第二个命令,该命令将提取来自的文件tar
dzdo
标准输入-C
到命令参数中指定的目录tar
。
请注意,tar
命令还会将所有权和文件权限信息从本地系统复制到远程服务器。例如,如果本地系统上文件所有者的用户 ID 和组 ID 分别为 1000 和 1000,文件权限为 ,则远程服务器上将-rw-r--r--
使用相同的用户、组 ID 和文件权限。但是,该用户和组 ID 可能属于其他远程服务器上的用户或组。 中有选项tar
可以更改此设置。请参阅选项:、、、、--group=
等。--owner=
--no-same-owner
--no-same-permissions