rpm -Vf не сообщает об измененном файле

Я пытаюсь написать марионеточный модуль, который записывает шаблонную конфигурацию, но только в том случае, если это стандартная конфигурация из RPM (чтобы не запутаться с каким-либо форматированием, которое они продолжаются). Остальное управление конфигурацией осуществляется через augeas. Раньше это работало, но по какой-то причине rpm -Vf не выводит, что smb.conf действительно отличается от того, когда он был впервые установлен. Например, я еще сильно изменил его и его временную метку:

[root@vlmat ~]# rpm -Vf /etc/samba/smb.conf
[root@vlmat ~]# echo $?
0

Не отражает того, что md5sum вообще изменилась, и не меняет код возврата.

И smb.conf находится в базе данных rpm, но проверка всего пакета ничего не дает:

[root@vlmat ~]# rpm -qf /etc/samba/smb.conf
samba-common-3.6.23-35.el6_8.x86_64
[root@vlmat ~]# rpm -V samba-common
[root@vlmat ~]#

После редактирования другого файла конфигурации в этом rpm:

[root@vlmat ~]# rpm -V samba-common
S.5....T.  c /etc/sysconfig/samba

Сумма SHA256 действительно отличается от той, которая есть в базе данных:

[root@vlmat ~]# rpm -ql --dump samba-common | grep smb
/etc/samba/smb.conf 9778 1461617087 2474992be3adf11ef60aa754151f19b5756aaf9919cd6eacbd3f6b75c303dbb1 0100644 root root 1 0 0 X
[...snip..]
[root@vlmat ~]# sha256sum /etc/samba/smb.conf
270cd0ca5bce64448c31dc6c8e01d12f3d1217b8c208008a1dd1ddc976714774  /etc/samba/smb.conf

​​Кажется, я помню, как этот метод работал раньше, но не уверен, что можно было изменить.

РЕДАКТИРОВАТЬ:

Я решил эту проблему, имея сценарий bash , скопировавший шаблон, если контрольная сумма sha256 в файле и в базе данных одинакова, но я бы хотел объяснение / обходной путь для вышеуказанного метода, так как я думаю, что он должен работать.Почему он видит изменение в одном файле конфигурации, а не в том, который я просматривал?

0
14.06.2016, 21:01
2 ответа

Создатель файла спецификации rpm может переопределить параметры по умолчанию, чтобы проверить проверку данного файла. Например,

%config(noreplace) %verify(not md5 size mtime) %{_sysconfdir}/samba/smb.conf

означает, что не проверять md5sum (размер или mtime) файла. Они по-прежнему записываются в базу данных, но во время операции -V отклонения будут подавлены. Вы по-прежнему можете перечислить все проверки, добавив -v к вашему -V (хотя мои rpm показывают разницу md5, если есть одна без этого).

 $ rpm -Vvf /etc/samba/smb.conf | grep /etc/samba/smb.conf
 .........  c /etc/samba/smb.conf
2
28.01.2020, 02:35

Файлы конфигурации, такие как smb.conf , часто возятся с системными администраторами, поэтому для rpm нет смысла проверять то, что будет изменено. "stock" также будет только тем, что было установлено при первой установке smb.conf ; содержимое этого файла может изменяться, если в первой установленной версии samba были внесены изменения в свой smb.conf , и если системный администратор изменил /etc/smb.conf , эти (новые!) Значения запасов могут вместо этого появиться в /etc/smb.conf.rpmnew .

Почему бы вместо этого не указать в управлении конфигурацией, что должен содержать smb.conf , и изменить конфигурацию только в том случае, если он выходит из этого состояния? Это позволит избежать сложностей, связанных с необходимостью поддерживать список стандартных конфигураций с течением времени, и будет лучше обрабатывать случаи, когда что-то создало smb.conf , который не является ни запасом, ни версией, заданной управлением конфигурацией.

0
28.01.2020, 02:35

Теги

Похожие вопросы