以非 root 用户身份下载日志和数据库

以非 root 用户身份下载日志和数据库

我永远是 Linux 虚拟主机的菜鸟.. 我不是在寻找错误时处理终端宽度/高度/长度问题,而是在我的 ubuntu 20.04 本地计算机上设置了一堆 bash 别名命令,以便简单地执行 commandmscp来下载任何内容在我的 gedit gui 中本地登录并打开它。

问题
现在我已经了解了使用非 root 用户并禁用 root ssh 功能的最佳实践,我有一堆 bash 别名命令不起作用,因为我现在以非 root 用户身份 ssh 到服务器用于sudo su成为root并做任何事情(为了安全安心而值得权衡)。

问题:
有谁知道如何更改以下命令以便非 root 用户可以执行它们:

alias pae="scp root@prodserver:/var/log/apache2/error.log ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log && gedit ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log"


alias dbdl="rsnyc -aHAXSv root@prodserver:/dbbackdir ~/Downloads/dbbackups"

对于上述每个命令...

我需要替换root@prodserveradminuser@prodserver,传递sudo su命令并以某种方式自动传递管理员用户的密码以成为 root,以便我的 bash 别名保持其先前的最终用户便利性。

我在这方面的出拳次数远远超出了我的体重级别。

有小费吗?

更新:

我找到了一个有用的教程,展示了如何添加对文件的非 root 访问权限。不幸的是,完全按照书面说明进行操作并不起作用:

授予非 root 用户 apache2 日志访问权限
https://gist.github.com/angela-d/8a2416034ea7ed89ecde37147e8711ba

注意:本教程没有说明它是否适用于 Debian 10.5,这可以解释为什么事情不起作用。

按照指示我跑了setfacl -m g:adminuser:rx /var/log/apache2/*

但是,当我运行getfacl /var/log/apache2/输出时才不是显示 adminuser 具有 rx 访问权限,/var/log/apache2/*只有 root 用户继续具有访问权限。

我还尝试从组更改为用户(使用“u”而不是“g”),setfacl -m g:adminuser:rx /var/log/apache2/* 但仍然没有运气。

嗯嗯..

答案1

看起来您需要成为服务器上的 root 才能读取日志文件。也许是这样的:

alias pae="ssh prodserver sudo cat /var/log/apache2/error.log" > ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log && gedit ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log"

如果您需要更多文件,我会使用tar将它们分成一个可以传输的文件,但是对于一种仅传输更改的方法(就像这样rsync做),我建议您查看是否有一个可以将普通用户放入的组,以便他可以阅读这些文件。

答案2

听听你脑海中烦人的声音。我仔细检查了之前的解决方案,意识到我通过向 /var 下的所有目录授予管理员用户权限而创建了一个安全漏洞,所以我删除了它,并将继续使用“菜鸟味“鸡蛋在我脸上。:-)

仅供参考,我曾经setfacl -b g:adminuser:rx /var/*纠正过我的愚蠢行为。

无论如何,为了更正我的非 root 用户访问 apache 日志的权限,而不创建安全漏洞,我使用了:

setfacl -m u:adminuser:rx /var/log/apache2/*.log

最后getfacl /var/log/apache2/表明adminuser有权访问 apache2 error.log(并且没有其他敏感目录)。

从那里,我用新的管理员用户测试了我原来的 bash 别名,一切都运行良好:

alias pae="scp adminuser@prodserver:/var/log/apache2/error.log ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log && gedit ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log"

关于上面的 rsync 命令,最安全的做法似乎是直接保存我的数据库备份到adminuser用户的主目录,然后将它们从那里 rsync 到我的本地计算机,而不是尝试setfacl在太多地方应用并导致安全漏洞。

相关内容