如何使用受限权限 rsync 远程文件?

如何使用受限权限 rsync 远程文件?

我尝试与没有权限读取文件的远程“用户”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 -atar -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。

相关内容