我尝试与没有权限读取文件的远程“用户”rsync
传输文件。ssh
例如 file.conf 是:
root:root rwxr-----
针对这些情况的最佳做法是什么?
- 将“用户”组分配给 file.conf (root:user)?
- 将我的用户放入‘root’组?
- 把‘r’ 交给其他人?
- 使用‘root’进行ssh?
答案1
如果你不想以 root 身份使用 ssh,我建议tar
使用rsync
:
推
[source-host ~]$ sudo tar -pzc /etc/exim4 |ssh target-host "cat > exim4.tar.gz"
[target-host ~]$ cd /etc; sudo tar -pzxf ~/exim4.tar.gz
这将创建 /etc/exim4 目录的压缩 tar 存档,但不会将其写入本地磁盘,而是通过 ssh 连接将其发送到远程主机,并保存为 在您的(非 root)主目录中exim4.tar.gz
。第二个命令应在该目标系统上运行。转到/etc
并以 root 身份解压该存档。
类似rsync -a
,tar -p
将确保您的权限(以及所有者和时间戳)相同,尽管某些帐户的 UID 和 GUID 可能不匹配(例如,某些文件可能归“exim”帐户所有,而该帐户在新系统上的标识符可能略有不同)。如果存在,您必须进入并手动更正它们。
拉
这需要额外的步骤,因为您必须在sudo
没有密码的情况下远程运行。
[source-host ~]$ echo "ftg ALL=(ALL) NOPASSWD: /bin/tar -pzc /etc/exim4" |sudo tee -a /etc/sudoers.d/tar-exim
[target-host ~]$ cd /etc; ssh ftg@source-host "sudo tar -pzc /etc/exim4" |sudo tar -pzx
在源主机上,这允许您sudo
无需密码即可运行该特定命令(出于安全目的,不允许对命令进行任何更改)。这是永久性的,因此您只需执行一次(如果您不想让它永远存在,请删除该行)。
然后,目标主机可以从源主机提取配置,在本地创建压缩档案,通过 ssh 进行流式传输,并以 root 身份在本地解压档案。
第一步可能没有必要,您只需运行ssh
以下命令即可ssh -t …
。ssh
手册页描述-t
如下
-t
强制分配伪终端。这可用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个-t
选项强制分配 tty,即使ssh
没有本地 tty。