Я пытаюсь написать марионеточный модуль, который записывает шаблонную конфигурацию, но только в том случае, если
это стандартная конфигурация из 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 в файле и в базе данных одинакова, но я бы хотел объяснение / обходной путь для вышеуказанного метода, так как я думаю, что он должен работать.Почему он видит изменение в одном файле конфигурации, а не в том, который я просматривал?
Создатель файла спецификации 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
Файлы конфигурации, такие как smb.conf
, часто возятся с системными администраторами, поэтому для rpm
нет смысла проверять то, что будет изменено. "stock" также будет только тем, что было установлено при первой установке smb.conf
; содержимое этого файла может изменяться, если в первой установленной версии samba
были внесены изменения в свой smb.conf
, и если системный администратор изменил /etc/smb.conf
, эти (новые!) Значения запасов могут вместо этого появиться в /etc/smb.conf.rpmnew
.
Почему бы вместо этого не указать в управлении конфигурацией, что должен содержать smb.conf
, и изменить конфигурацию только в том случае, если он выходит из этого состояния? Это позволит избежать сложностей, связанных с необходимостью поддерживать список стандартных конфигураций с течением времени, и будет лучше обрабатывать случаи, когда что-то создало smb.conf
, который не является ни запасом, ни версией, заданной управлением конфигурацией.