logging - 与其他用户连接时,是否可以在远程服务器上以 root 身份运行 RSYNC?
问题描述
我想将我的服务器日志(/var/log/httpd/)备份到我家的本地磁盘。问题是日志目录由专门无法通过 SSH 连接到机器的帐户拥有。
我可以使用我的常规帐户通过 SSH 连接到远程机器,然后我可以 sudo 访问这些日志文件。有没有一种方法可以从我的家用计算机运行 RSYNC,但让它以 root 身份运行,以便它具有访问这些日志文件并将它们发回给我所需的权限?
一个典型的例子(从我家的本地机器上运行):
rsync -avz [user]@[server]:/var/log/httpd/* ./logs
显然,如果 [user] 的帐户有权访问 /var/log/httpd/,这将起作用,但它没有(而且我宁愿不授予该帐户权限)。
所以我想知道是否有其他命令可以注入到该 RSYNC 请求的中间,即使登录是通过 [user] 最终强制远程用户以 root 身份操作?
我还应该注意,我不想倒退。换句话说,我意识到我可以登录远程机器,切换到 root,然后以另一种方式运行 RSYNC。问题是出于各种原因,我不想将家用机器配置为接受远程登录。所以我只想把文件拉下来,而不是把它们发上来,可以这么说。
提前致谢!
解决方案
你有两种方法来实现你想要的。
第一:在远程主机上使用 rsyncd 并添加配置文件(/etc/rsyncd.conf):
[httpd_logs]
uid=0
gid=0
read only = yes
path = /var/log/httpd/
保存更改并启动 rsyncd。然后,在本地机器上运行:
rsync -avz remote_server::httpd_logs/* ./logs
第二:基于我在 stackoverflow 和此类门户网站上找到的答案
创建帮助文件:
cat > ssh_sudo << 'EOF'
{
echo $sudoPWD;
cat - ;
} | ssh -A $* &
EOF
chmod u+x ssh_sudo
然后与 rsync 一起使用:
read -s -p "Sudo password: " sudoPWD; rsync -aAHe ./ssh_sudo --rsync-path "sudo -S 2> /dev/null rsync" remote_norootuser@remote_host:/var/log/httpd/* ./logs/
当然,“remote_norootuser”必须对“remote_host”有 sudo 权限。
推荐阅读
- pandas - 当我知道值退出时,过滤熊猫中的浮点数不会产生任何结果
- javascript - Delphi UniGUI Enviroment 的 Highcharts 中没有“添加”新数据
- reactjs - 尽管给出了 accept 道具,但 Antd 上传者仍接受所有文件
- wordpress-plugin-creation - WordPress 插件创建
- linux - Linux - 文件位置
- c++ - C++ Primer 第 5 版中发现的错误(复制初始化与直接初始化)
- machine-learning - 给定问题使用哪种机器学习算法
- typescript - nuxt typescript 应用程序中的动态类数据
- json - 实施结构化数据记录的正确方法是什么?
- count - 嵌套在 XPATH 中