En Linux/Unix, el /etc
el directorio es donde se encuentran los directorios y los archivos de configuración de todo el sistema específicos del host; es una ubicación central para todos los archivos de configuración de todo el sistema. Un archivo de configuración es un archivo local que se usa para controlar cómo funciona un programa; debe ser estático y no puede ser un binario ejecutable.
Para realizar un seguimiento de los cambios en los archivos de configuración del sistema, los administradores del sistema normalmente hacen copias (o copias de seguridad) de los archivos de configuración antes de modificarlos. De esa forma, si modificaron directamente el archivo original y cometieron un error, pueden volver a la copia guardada.
En esta guía, aprenderemos cómo instalar y configurar etckeeper en Opensuse Leap 15.
Instalando etckeeper
Asegúrese de que su sistema esté actualizado
sudo zypper refresh
sudo zypper update -y
Etckeeper está disponible en los repositorios predeterminados de OpenSUSE. Para instalar, use el siguiente comando. Esto también instalará dependencias:
sudo zypper install etckeeper
Escriba y cuando se le solicite que acepte la instalación y espere a que finalice.
Confirme el paquete instalado con este comando
~> rpm -qi etckeeper
Name : etckeeper
Version : 1.18.7
Release : bp153.1.17
Architecture: x86_64
Install Date: Thu Mar 3 17:44:56 2022
Group : System/Management
Size : 113726
License : GPL-2.0+
Signature : RSA/SHA256, Sat Mar 13 02:04:56 2021, Key ID 9c214d4065176565
Source RPM : etckeeper-1.18.7-bp153.1.17.src.rpm
Build Date : Sat Mar 13 02:04:32 2021
Build Host : lamb54
Relocations : (not relocatable)
Packager : https://bugs.opensuse.org
Vendor : openSUSE
URL : http://etckeeper.branchable.com/
Summary : Store /etc under Version Control
Description :
The etckeeper program is a tool to let /etc be stored in a git,
mercurial, bzr or darcs repository. It hooks into yum to automatically
commit changes made to /etc during package upgrades. It tracks file
metadata that version control systems do not normally support, but that
is important for /etc, such as the permissions of /etc/shadow. It is
quite modular and configurable, while also being simple to use if you
understand the basics of working with version control.
Distribution: SUSE Linux Enterprise 15 SP3
Configuración de etckeeper
Una vez instalado etckeeper, necesitamos configurarlo. El archivo de configuración de etckeeper se encuentra en esta ruta /etc/etckeeper/etckeeper.conf.
Ábrelo usando tu editor de texto favorito, yo estoy usando vim.
sudo vim /etc/etckeeper/etckeeper.conf
Las configuraciones en el archivo tienen descripciones pequeñas y claras. Las opciones le permiten configurar el sistema de control de versiones para usar, pasar opciones a VSC; para habilitar o deshabilitar el temporizador, habilitar o deshabilitar la advertencia de archivo especial, habilitar o deshabilitar etckeeper para que no confirme los cambios existentes en /etc
antes de la instalación.
Además, puede configurar el administrador de paquetes frontal o de nivel superior (como apt, yum, dnf etc.) y el administrador de paquetes subyacente o de bajo nivel (dpkg, rpm etc.) para trabajar con etckeeper .
Si ha realizado algún cambio en el archivo, guárdelo y ciérrelo.
Inicializando repositorio git
A continuación, inicializaremos un repositorio de git para realizar un seguimiento de los cambios en nuestro archivo /etc. Etckeeper deberá ejecutarse con root o como usuario con el comando sudo. Cambiemos al directorio /etc e inicialicemos .
cd /etc
sudo etckeeper init
Esta es la salida en mi servidor
~> cd /etc
/etc> sudo etckeeper init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /etc/.git/
A continuación, paso a etckeeper para poder trabajar automáticamente, debe ejecutar la primera confirmación para comenzar a realizar un seguimiento de los cambios en /etc
, de la siguiente manera.
sudo etckeeper commit "initial commit with original etc configs"
Hacer cambios y comprometerse
Después de ejecutar tu primera confirmación, etckeeper a través de git ahora está rastreando cualquier cambio en /etc
directorio. Ahora intente realizar cualquier cambio en cualquiera de los archivos de configuración.
Luego ejecute el siguiente comando para mostrar los archivos que han cambiado desde la última confirmación; este comando esencialmente muestra los cambios en /etc
no preparado para compromiso, donde VCS significa git y “estado ” es un subcomando de git.
sudo etckeeper vcs status
Debería ver un resultado similar a este con los archivos que cambiaron:
/etc> sudo etckeeper vcs status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: hosts
modified: ssh/sshd_config
no changes added to commit (use "git add" and/or "git commit -a")
Luego confirme los cambios recientes de la siguiente manera.
sudo etckeeper commit "updated hosts file and disallowed root ssh login"
Deberías ver un resultado similar a este
/etc> sudo etckeeper commit "updated hosts file and disallowed root ssh login"
[master 9984ce4] updated hosts file and disallowed root ssh login
Author: ec2-user <[email protected]>
2 files changed, 3 insertions(+), 3 deletions(-)
Ver registros de confirmación
Para ver un registro de todas las confirmaciones (la identificación y el comentario de cada confirmación), puede ejecutar el siguiente comando.
sudo etckeeper vcs log
Salida
/etc> sudo etckeeper vcs log
commit 9984ce498ba68d15c8e1ac84dbec7b3cb6e3202f (HEAD -> master)
Author: ec2-user <[email protected]>
Date: Thu Mar 3 18:02:25 2022 +0000
updated hosts file and disallowed root ssh login
commit 179ae7654496e9190c700c1ea4584d0ff05d3418
Author: ec2-user <[email protected]>
Date: Thu Mar 3 17:59:00 2022 +0000
initial commit with original etc configs
También puede mostrar los detalles de una confirmación, simplemente especifique el ID de la confirmación (los primeros caracteres pueden funcionar) como se muestra:
sudo etckeeper vcs show 9984ce498ba68d15c8e1ac84dbec7b3cb6e3202f
Además, puede ver la diferencia entre dos confirmaciones como se muestra. Esto es especialmente útil si desea revocar cambios como se muestra en la siguiente sección. Puede usar las teclas de flecha para desplazarse hacia arriba y hacia abajo o hacia la izquierda y hacia la derecha, y salir presionando q
.
sudo etckeeper vcs show 9984ce 179ae
Cómo revocar cambios
La esencia de etckeeper es para ayudarlo a realizar un seguimiento de los cambios en su /etc
directorio y revertir los cambios cuando sea necesario. Suponiendo que te das cuenta de que cometiste algunos errores en /etc/ssh/sshd_config cuando lo editó por última vez y el servicio sshd no se puede reiniciar debido a errores en la estructura de configuración, puede volver a la copia guardada en una confirmación específica (por ejemplo, 9984ce ) donde creas que la configuración fue correcta de la siguiente manera.
sudo etckeeper vcs checkout 9984ce /etc/ssh/sshd_config
Como alternativa, puede cancelar todos los cambios y volver a las versiones de todos los archivos en /etc
(y sus subdirectorios) almacenados en una confirmación específica.
sudo etckeeper vcs checkout 9984ce
Habilitar que los cambios se confirmen automáticamente
Etckeeper también se envía con un servicio y unidades de temporizador para Systemd , incluido en el paquete. Para iniciar “Autocommit ” de cambios en el /etc
directorio, simplemente inicie etckeeper.timer
unidad por ahora y verifique si está en funcionamiento, de la siguiente manera.
sudo systemctl start etckeeper.timer
Confirmar el estado
/etc> sudo systemctl status etckeeper.timer
● etckeeper.timer - Daily autocommit of changes in /etc directory
Loaded: loaded (/usr/lib/systemd/system/etckeeper.timer; disabled; vendor preset: disabled)
Active: active (waiting) since Thu 2022-03-03 18:08:39 UTC; 4s ago
Trigger: Fri 2022-03-04 18:08:39 UTC; 23h left
Triggers: ● etckeeper.service
Docs: man:etckeeper(8)
Mar 03 18:08:39 opensusesrv systemd[1]: Started Daily autocommit of changes in /etc directory.
Y habilítelo para que se inicie automáticamente en el arranque del sistema como se muestra.
sudo systemctl enable etckeeper.timer
Conclusión
En esta guía, aprendimos cómo instalar y usar etckeeper para administrar cambios en el directorio /etc usando un sistema de administración de versiones como git.