我使用 EPEL 安装了fail2ban yum install
,然后在忘记备份后搞砸了配置/etc/fail2ban
。
现在我想要恢复原来的配置。
首先我尝试了yum reinstall fail2ban
,但这很愚蠢,因为yum install
不会覆盖现有的配置文件。然后我在其他地方再次尝试mv
,根据一些旧的博客文章,这会给我原始的配置。没有这样的运气。我尝试卸载并重新安装。没有这样的运气。我感到沮丧并编辑了我的目录,认为可能正在发生某种奇怪的系统发现。重装后还是没有。/etc/fail2ban
yum reinstall fail2ban
rpm -e
rm -rf
/etc/fail2ban.backup
最后,我下载并解压了 RPM 源代码,并将目录rsync
编辑config
到/etc/fail2ban
,这样我就完成了大部分工作。但日志文件的设置方式以及与 systemd 的集成方式仍然存在一些差异。我不想把一些东西放在一起,我真的只想恢复原来的配置。
有没有办法使用 YUM 或其他工具强制全新安装 RPM 软件包(包括配置和日志文件)?我正在使用标准的 Linode CentOS 7 镜像(如果这很重要的话)。
答案1
我认为 yum 太保守了,无法做你想做的事。为了获得最佳结果,您还应该准备使用一些 rpm 命令。
这将清除所有 rpm (ergo yum) 知道/信任的属于fail2ban 包的文件。
rpm -e --justdb --nodeps fail2ban
之后,您可以删除/移动 /etc 文件,然后 yum 将重新安装。
yum/rpm 对配置文件所做的所有神奇操作都在 RPM 规范文件中,其中包含前缀“%config(noreplace)”和宏“%{_sysconfdir}”,在您的情况下这意味着“/etc”。只需将这些全部排除掉,rpm 就会安装所有默认配置文件。
%config(noreplace) %{_sysconfdir}/fail2ban
%config(noreplace) %{_sysconfdir}/logrotate.d/fail2ban
%config(noreplace) %{_sysconfdir}/fail2ban/jail.d/00-firewalld.conf
%config(noreplace) %{_sysconfdir}/fail2ban/action.d/hostsdeny.conf
%config(noreplace) %{_sysconfdir}/fail2ban/action.d/complain.conf
%config(noreplace) %{_sysconfdir}/fail2ban/action.d/mail-*.conf
%config(noreplace) %{_sysconfdir}/fail2ban/action.d/sendmail-*.conf
%config(noreplace) %{_sysconfdir}/fail2ban/action.d/shorewall.conf
%config(noreplace) %{_sysconfdir}/fail2ban/jail.d/00-systemd.conf
你自己看看:
curl 'http://pkgs.fedoraproject.org/cgit/rpms/fail2ban.git/plain/fail2ban.spec?h=epel7' |
grep '^%config(noreplace)'
答案2
在我的系统上,fail2ban 实际上分布在多个包中:
- 失败2禁止
- fail2ban-firewalld
- failure2ban-systemd
- 失败2禁止发送邮件
- fail2ban-服务器
- 系统Python
显然,除非安装了上述部分或全部内容,否则不会生成配置文件。yum autoremove
摆脱它们,然后yum install fail2ban
恢复原始配置文件。
答案3
我需要执行以下步骤来解决同样的问题:
sudo yum autoremove fail2ban -y
sudo yum autoremove fail2ban-server -y
sudo yum install fail2ban -y